mirror of
https://github.com/h3pdesign/Neon-Vision-Editor
synced 2026-04-21 13:27:16 +00:00
docs(release-flow): make timeline image and cards clickable
This commit is contained in:
parent
3ddf50e485
commit
91eef18c18
5 changed files with 321 additions and 82 deletions
|
|
@ -361,7 +361,7 @@
|
|||
CODE_SIGNING_ALLOWED = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 475;
|
||||
CURRENT_PROJECT_VERSION = 476;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = CS727NF72U;
|
||||
ENABLE_APP_SANDBOX = YES;
|
||||
|
|
@ -444,7 +444,7 @@
|
|||
CODE_SIGNING_ALLOWED = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 475;
|
||||
CURRENT_PROJECT_VERSION = 476;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = CS727NF72U;
|
||||
ENABLE_APP_SANDBOX = YES;
|
||||
|
|
|
|||
39
README.md
39
README.md
|
|
@ -62,18 +62,20 @@
|
|||
|
||||
## Table of Contents
|
||||
|
||||
- [Start Here](#start-here)
|
||||
- [Release Channels](#release-channels)
|
||||
- [Download Metrics](#download-metrics)
|
||||
- [Project Docs](#project-docs)
|
||||
- [Features](#features)
|
||||
- [Platform Matrix](#platform-matrix)
|
||||
- [Roadmap (Near Term)](#roadmap-near-term)
|
||||
- [Troubleshooting](#troubleshooting)
|
||||
- [FAQ](#faq)
|
||||
- [Changelog](#changelog)
|
||||
- [Contributing Quickstart](#contributing-quickstart)
|
||||
- [Support & Feedback](#support--feedback)
|
||||
<p align="center">
|
||||
<a href="#start-here">Start Here</a> ·
|
||||
<a href="#release-channels">Release Channels</a> ·
|
||||
<a href="#download-metrics">Download Metrics</a> ·
|
||||
<a href="#project-docs">Project Docs</a> ·
|
||||
<a href="#features">Features</a> ·
|
||||
<a href="#platform-matrix">Platform Matrix</a><br>
|
||||
<a href="#roadmap-near-term">Roadmap (Near Term)</a> ·
|
||||
<a href="#troubleshooting">Troubleshooting</a> ·
|
||||
<a href="#faq">FAQ</a> ·
|
||||
<a href="#changelog">Changelog</a> ·
|
||||
<a href="#contributing-quickstart">Contributing Quickstart</a> ·
|
||||
<a href="#support--feedback">Support & Feedback</a>
|
||||
</p>
|
||||
|
||||
## Release Channels
|
||||
|
||||
|
|
@ -424,12 +426,15 @@ Most editor features are shared across macOS, iOS, and iPadOS.
|
|||
## Release Flow (Completed + Upcoming)
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="docs/images/neon-vision-release-history-0.1-to-0.5.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="docs/images/neon-vision-release-history-0.1-to-0.5-light.svg">
|
||||
<img src="docs/images/neon-vision-release-history-0.1-to-0.5-light.svg" alt="Neon Vision Editor release flow timeline with upcoming milestones" width="100%">
|
||||
</picture>
|
||||
<a href="docs/images/neon-vision-release-history-0.1-to-0.5-light.svg">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="docs/images/neon-vision-release-history-0.1-to-0.5.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="docs/images/neon-vision-release-history-0.1-to-0.5-light.svg">
|
||||
<img src="docs/images/neon-vision-release-history-0.1-to-0.5-light.svg" alt="Neon Vision Editor release flow timeline with upcoming milestones" width="100%">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
<p align="center"><sub>Click to open full-size SVG and zoom. In full view, each card links to release notes or the roadmap hub.</sub></p>
|
||||
|
||||
## Roadmap (Near Term)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,109 +13,194 @@
|
|||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="160%">
|
||||
<feDropShadow dx="0" dy="12" stdDeviation="18" flood-color="#000000" flood-opacity="0.12"/>
|
||||
</filter>
|
||||
<clipPath id="cardClip0">
|
||||
<rect x="120.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip1">
|
||||
<rect x="472.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip2">
|
||||
<rect x="824.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip3">
|
||||
<rect x="1176.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip4">
|
||||
<rect x="1528.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip5">
|
||||
<rect x="1880.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip6">
|
||||
<rect x="2232.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip7">
|
||||
<rect x="2584.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="url(#bg)"/>
|
||||
<text x="110" y="110" fill="#0F172A" font-size="62" font-weight="700" font-family="Arial, Helvetica, sans-serif">Neon Vision Editor</text>
|
||||
<text x="110" y="165" fill="#334155" font-size="30" font-family="Arial, Helvetica, sans-serif">Release History · Versions 0.1 – 0.5 + upcoming</text>
|
||||
<line x1="180" y1="800" x2="2884" y2="800" stroke="url(#lineGrad)" stroke-width="8" stroke-linecap="round"/>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.1.0">
|
||||
<title>0.1 - Early Editor Foundation</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="110.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#49C6FF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="260.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.1</text>
|
||||
<g clip-path="url(#cardClip0)">
|
||||
<text x="134.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Early Editor</text>
|
||||
<text x="134.0" y="426" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Foundation</text>
|
||||
<line x1="134.0" y1="436" x2="386.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="134.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Initial lightweight editor core</text>
|
||||
<text x="134.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Basic syntax highlighting</text>
|
||||
<text x="134.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• First SwiftUI editor interface</text>
|
||||
<text x="134.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Initial lightweight</text>
|
||||
<text x="150.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">editor core</text>
|
||||
<text x="134.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Basic syntax</text>
|
||||
<text x="150.0" y="584" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">highlighting</text>
|
||||
<text x="134.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• First SwiftUI editor</text>
|
||||
<text x="150.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">interface</text>
|
||||
<text x="134.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Early file handling</text>
|
||||
</g>
|
||||
<circle cx="260.0" cy="800" r="26" fill="#49C6FF" fill-opacity="0.85"/>
|
||||
<text x="260.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.1</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.2.0">
|
||||
<title>0.2 - Core Editing</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="462.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#66E3FF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="612.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.2</text>
|
||||
<g clip-path="url(#cardClip1)">
|
||||
<text x="486.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Core Editing</text>
|
||||
<line x1="486.0" y1="436" x2="738.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="486.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Regex Find & Replace</text>
|
||||
<text x="486.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Bracket helper</text>
|
||||
<text x="486.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Improved syntax highlighting</text>
|
||||
<text x="486.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Improved syntax</text>
|
||||
<text x="502.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">highlighting</text>
|
||||
<text x="486.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Faster editor rendering</text>
|
||||
</g>
|
||||
<circle cx="612.0" cy="800" r="26" fill="#66E3FF" fill-opacity="0.85"/>
|
||||
<text x="612.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.2</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.3.0">
|
||||
<title>0.3 - Projects</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="814.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#9F6BFF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="964.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.3</text>
|
||||
<g clip-path="url(#cardClip2)">
|
||||
<text x="838.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Projects</text>
|
||||
<line x1="838.0" y1="436" x2="1090.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="838.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Project sidebar navigation</text>
|
||||
<text x="838.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Project sidebar</text>
|
||||
<text x="854.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">navigation</text>
|
||||
<text x="838.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Recursive folder support</text>
|
||||
<text x="838.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Quick Open workflow</text>
|
||||
<text x="838.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Better file loading performance</text>
|
||||
<text x="838.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Better file loading</text>
|
||||
<text x="854.0" y="724" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">performance</text>
|
||||
</g>
|
||||
<circle cx="964.0" cy="800" r="26" fill="#9F6BFF" fill-opacity="0.85"/>
|
||||
<text x="964.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.3</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.4.0">
|
||||
<title>0.4 - Cross-Platform</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1166.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#FF6FD8" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="1316.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.4</text>
|
||||
<g clip-path="url(#cardClip3)">
|
||||
<text x="1190.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Cross-Platform</text>
|
||||
<line x1="1190.0" y1="436" x2="1442.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="1190.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• iPadOS + iOS workflow parity</text>
|
||||
<text x="1190.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Toolbar and keyboard polish</text>
|
||||
<text x="1190.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Reliability and performance</text>
|
||||
<text x="1206.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">hardening</text>
|
||||
<text x="1190.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Cross-platform Save As support</text>
|
||||
<text x="1190.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• iPadOS + iOS workflow</text>
|
||||
<text x="1206.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">parity</text>
|
||||
<text x="1190.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Toolbar and keyboard</text>
|
||||
<text x="1206.0" y="584" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">polish</text>
|
||||
<text x="1190.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Reliability and</text>
|
||||
<text x="1206.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">performance hardening</text>
|
||||
<text x="1190.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Cross-platform Save As</text>
|
||||
<text x="1206.0" y="724" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">support</text>
|
||||
</g>
|
||||
<circle cx="1316.0" cy="800" r="26" fill="#FF6FD8" fill-opacity="0.85"/>
|
||||
<text x="1316.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.4</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.5.0">
|
||||
<title>0.5 - Editor Intelligence</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1518.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#FF5CA8" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="1668.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.5</text>
|
||||
<text x="1542.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Editor Intelligence</text>
|
||||
<g clip-path="url(#cardClip4)">
|
||||
<text x="1542.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Editor</text>
|
||||
<text x="1542.0" y="426" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Intelligence</text>
|
||||
<line x1="1542.0" y1="436" x2="1794.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="1542.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Inline code completion</text>
|
||||
<text x="1542.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Optional AI assistance</text>
|
||||
<text x="1542.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Markdown preview templates</text>
|
||||
<text x="1542.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Diagnostics and runtime controls</text>
|
||||
<text x="1542.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Markdown preview</text>
|
||||
<text x="1558.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">templates</text>
|
||||
<text x="1542.0" y="696" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Diagnostics and runtime</text>
|
||||
<text x="1558.0" y="724" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">controls</text>
|
||||
</g>
|
||||
<circle cx="1668.0" cy="800" r="26" fill="#FF5CA8" fill-opacity="0.85"/>
|
||||
<text x="1668.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.5</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>0.6 - Upcoming Milestone</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1870.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#22C55E" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2020.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.6</text>
|
||||
<text x="1894.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming Milestone</text>
|
||||
<g clip-path="url(#cardClip5)">
|
||||
<text x="1894.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming</text>
|
||||
<text x="1894.0" y="426" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Milestone</text>
|
||||
<line x1="1894.0" y1="436" x2="2146.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="1894.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap milestone</text>
|
||||
<text x="1894.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability polishing</text>
|
||||
<text x="1894.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue feedback</text>
|
||||
<text x="1894.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap</text>
|
||||
<text x="1910.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">milestone</text>
|
||||
<text x="1894.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability</text>
|
||||
<text x="1910.0" y="584" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">polishing</text>
|
||||
<text x="1894.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue</text>
|
||||
<text x="1910.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">feedback</text>
|
||||
</g>
|
||||
<circle cx="2020.0" cy="800" r="26" fill="#22C55E" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2020.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.6</text>
|
||||
<text x="2020.0" y="902" text-anchor="middle" fill="#334155" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>0.7 - Upcoming Milestone</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="2222.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#F59E0B" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2372.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.7</text>
|
||||
<text x="2246.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming Milestone</text>
|
||||
<g clip-path="url(#cardClip6)">
|
||||
<text x="2246.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming</text>
|
||||
<text x="2246.0" y="426" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Milestone</text>
|
||||
<line x1="2246.0" y1="436" x2="2498.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="2246.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap milestone</text>
|
||||
<text x="2246.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability polishing</text>
|
||||
<text x="2246.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue feedback</text>
|
||||
<text x="2246.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap</text>
|
||||
<text x="2262.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">milestone</text>
|
||||
<text x="2246.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability</text>
|
||||
<text x="2262.0" y="584" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">polishing</text>
|
||||
<text x="2246.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue</text>
|
||||
<text x="2262.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">feedback</text>
|
||||
</g>
|
||||
<circle cx="2372.0" cy="800" r="26" fill="#F59E0B" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2372.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">0.7</text>
|
||||
<text x="2372.0" y="902" text-anchor="middle" fill="#334155" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>1.0 - Next Major Foundation</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="2574.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.78)" stroke="#06B6D4" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2724.0" y="330" text-anchor="middle" fill="#0F172A" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">1.0</text>
|
||||
<g clip-path="url(#cardClip7)">
|
||||
<text x="2598.0" y="390" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Next Major</text>
|
||||
<text x="2598.0" y="426" fill="#0F172A" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Foundation</text>
|
||||
<line x1="2598.0" y1="436" x2="2850.0" y2="436" stroke="#94A3B8" stroke-opacity="0.4"/>
|
||||
<text x="2598.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Platform + architecture step-up</text>
|
||||
<text x="2598.0" y="486" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Platform + architecture</text>
|
||||
<text x="2614.0" y="514" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">step-up</text>
|
||||
<text x="2598.0" y="556" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Roadmap themes converge</text>
|
||||
<text x="2598.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Migration guidance in release</text>
|
||||
<text x="2614.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">notes</text>
|
||||
<text x="2598.0" y="626" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">• Migration guidance in</text>
|
||||
<text x="2614.0" y="654" fill="#1F2937" font-size="20" font-family="Arial, Helvetica, sans-serif">release notes</text>
|
||||
</g>
|
||||
<circle cx="2724.0" cy="800" r="26" fill="#06B6D4" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2724.0" y="870" text-anchor="middle" fill="#0F172A" font-size="28" font-family="Arial, Helvetica, sans-serif">1.0</text>
|
||||
<text x="2724.0" y="902" text-anchor="middle" fill="#334155" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
|
|
@ -13,109 +13,194 @@
|
|||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="160%">
|
||||
<feDropShadow dx="0" dy="12" stdDeviation="18" flood-color="#000000" flood-opacity="0.35"/>
|
||||
</filter>
|
||||
<clipPath id="cardClip0">
|
||||
<rect x="120.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip1">
|
||||
<rect x="472.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip2">
|
||||
<rect x="824.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip3">
|
||||
<rect x="1176.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip4">
|
||||
<rect x="1528.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip5">
|
||||
<rect x="1880.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip6">
|
||||
<rect x="2232.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
<clipPath id="cardClip7">
|
||||
<rect x="2584.0" y="356" width="280" height="354" rx="20"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="url(#bg)"/>
|
||||
<text x="110" y="110" fill="#FFFFFF" font-size="62" font-weight="700" font-family="Arial, Helvetica, sans-serif">Neon Vision Editor</text>
|
||||
<text x="110" y="165" fill="#DFE8FF" font-size="30" font-family="Arial, Helvetica, sans-serif">Release History · Versions 0.1 – 0.5 + upcoming</text>
|
||||
<line x1="180" y1="800" x2="2884" y2="800" stroke="url(#lineGrad)" stroke-width="8" stroke-linecap="round"/>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.1.0">
|
||||
<title>0.1 - Early Editor Foundation</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="110.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#49C6FF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="260.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.1</text>
|
||||
<g clip-path="url(#cardClip0)">
|
||||
<text x="134.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Early Editor</text>
|
||||
<text x="134.0" y="426" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Foundation</text>
|
||||
<line x1="134.0" y1="436" x2="386.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="134.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Initial lightweight editor core</text>
|
||||
<text x="134.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Basic syntax highlighting</text>
|
||||
<text x="134.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• First SwiftUI editor interface</text>
|
||||
<text x="134.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Initial lightweight</text>
|
||||
<text x="150.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">editor core</text>
|
||||
<text x="134.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Basic syntax</text>
|
||||
<text x="150.0" y="584" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">highlighting</text>
|
||||
<text x="134.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• First SwiftUI editor</text>
|
||||
<text x="150.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">interface</text>
|
||||
<text x="134.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Early file handling</text>
|
||||
</g>
|
||||
<circle cx="260.0" cy="800" r="26" fill="#49C6FF" fill-opacity="0.85"/>
|
||||
<text x="260.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.1</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.2.0">
|
||||
<title>0.2 - Core Editing</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="462.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#66E3FF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="612.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.2</text>
|
||||
<g clip-path="url(#cardClip1)">
|
||||
<text x="486.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Core Editing</text>
|
||||
<line x1="486.0" y1="436" x2="738.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="486.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Regex Find & Replace</text>
|
||||
<text x="486.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Bracket helper</text>
|
||||
<text x="486.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Improved syntax highlighting</text>
|
||||
<text x="486.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Improved syntax</text>
|
||||
<text x="502.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">highlighting</text>
|
||||
<text x="486.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Faster editor rendering</text>
|
||||
</g>
|
||||
<circle cx="612.0" cy="800" r="26" fill="#66E3FF" fill-opacity="0.85"/>
|
||||
<text x="612.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.2</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.3.0">
|
||||
<title>0.3 - Projects</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="814.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#9F6BFF" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="964.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.3</text>
|
||||
<g clip-path="url(#cardClip2)">
|
||||
<text x="838.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Projects</text>
|
||||
<line x1="838.0" y1="436" x2="1090.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="838.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Project sidebar navigation</text>
|
||||
<text x="838.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Project sidebar</text>
|
||||
<text x="854.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">navigation</text>
|
||||
<text x="838.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Recursive folder support</text>
|
||||
<text x="838.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Quick Open workflow</text>
|
||||
<text x="838.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Better file loading performance</text>
|
||||
<text x="838.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Better file loading</text>
|
||||
<text x="854.0" y="724" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">performance</text>
|
||||
</g>
|
||||
<circle cx="964.0" cy="800" r="26" fill="#9F6BFF" fill-opacity="0.85"/>
|
||||
<text x="964.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.3</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.4.0">
|
||||
<title>0.4 - Cross-Platform</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1166.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#FF6FD8" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="1316.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.4</text>
|
||||
<g clip-path="url(#cardClip3)">
|
||||
<text x="1190.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Cross-Platform</text>
|
||||
<line x1="1190.0" y1="436" x2="1442.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="1190.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• iPadOS + iOS workflow parity</text>
|
||||
<text x="1190.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Toolbar and keyboard polish</text>
|
||||
<text x="1190.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Reliability and performance</text>
|
||||
<text x="1206.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">hardening</text>
|
||||
<text x="1190.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Cross-platform Save As support</text>
|
||||
<text x="1190.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• iPadOS + iOS workflow</text>
|
||||
<text x="1206.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">parity</text>
|
||||
<text x="1190.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Toolbar and keyboard</text>
|
||||
<text x="1206.0" y="584" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">polish</text>
|
||||
<text x="1190.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Reliability and</text>
|
||||
<text x="1206.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">performance hardening</text>
|
||||
<text x="1190.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Cross-platform Save As</text>
|
||||
<text x="1206.0" y="724" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">support</text>
|
||||
</g>
|
||||
<circle cx="1316.0" cy="800" r="26" fill="#FF6FD8" fill-opacity="0.85"/>
|
||||
<text x="1316.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.4</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v0.5.0">
|
||||
<title>0.5 - Editor Intelligence</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1518.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#FF5CA8" stroke-width="3"/>
|
||||
</g>
|
||||
<text x="1668.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.5</text>
|
||||
<text x="1542.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Editor Intelligence</text>
|
||||
<g clip-path="url(#cardClip4)">
|
||||
<text x="1542.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Editor</text>
|
||||
<text x="1542.0" y="426" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Intelligence</text>
|
||||
<line x1="1542.0" y1="436" x2="1794.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="1542.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Inline code completion</text>
|
||||
<text x="1542.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Optional AI assistance</text>
|
||||
<text x="1542.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Markdown preview templates</text>
|
||||
<text x="1542.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Diagnostics and runtime controls</text>
|
||||
<text x="1542.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Markdown preview</text>
|
||||
<text x="1558.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">templates</text>
|
||||
<text x="1542.0" y="696" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Diagnostics and runtime</text>
|
||||
<text x="1558.0" y="724" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">controls</text>
|
||||
</g>
|
||||
<circle cx="1668.0" cy="800" r="26" fill="#FF5CA8" fill-opacity="0.85"/>
|
||||
<text x="1668.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.5</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>0.6 - Upcoming Milestone</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="1870.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#22C55E" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2020.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.6</text>
|
||||
<text x="1894.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming Milestone</text>
|
||||
<g clip-path="url(#cardClip5)">
|
||||
<text x="1894.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming</text>
|
||||
<text x="1894.0" y="426" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Milestone</text>
|
||||
<line x1="1894.0" y1="436" x2="2146.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="1894.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap milestone</text>
|
||||
<text x="1894.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability polishing</text>
|
||||
<text x="1894.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue feedback</text>
|
||||
<text x="1894.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap</text>
|
||||
<text x="1910.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">milestone</text>
|
||||
<text x="1894.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability</text>
|
||||
<text x="1910.0" y="584" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">polishing</text>
|
||||
<text x="1894.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue</text>
|
||||
<text x="1910.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">feedback</text>
|
||||
</g>
|
||||
<circle cx="2020.0" cy="800" r="26" fill="#22C55E" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2020.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.6</text>
|
||||
<text x="2020.0" y="902" text-anchor="middle" fill="#DFE8FF" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>0.7 - Upcoming Milestone</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="2222.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#F59E0B" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2372.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">0.7</text>
|
||||
<text x="2246.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming Milestone</text>
|
||||
<g clip-path="url(#cardClip6)">
|
||||
<text x="2246.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Upcoming</text>
|
||||
<text x="2246.0" y="426" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Milestone</text>
|
||||
<line x1="2246.0" y1="436" x2="2498.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="2246.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap milestone</text>
|
||||
<text x="2246.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability polishing</text>
|
||||
<text x="2246.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue feedback</text>
|
||||
<text x="2246.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Planned roadmap</text>
|
||||
<text x="2262.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">milestone</text>
|
||||
<text x="2246.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• UX + reliability</text>
|
||||
<text x="2262.0" y="584" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">polishing</text>
|
||||
<text x="2246.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Scope refined via issue</text>
|
||||
<text x="2262.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">feedback</text>
|
||||
</g>
|
||||
<circle cx="2372.0" cy="800" r="26" fill="#F59E0B" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2372.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">0.7</text>
|
||||
<text x="2372.0" y="902" text-anchor="middle" fill="#DFE8FF" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
<a href="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49">
|
||||
<title>1.0 - Next Major Foundation</title>
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="2574.0" y="260" width="300" height="470" rx="30" fill="rgba(255,255,255,0.06)" stroke="#06B6D4" stroke-width="3" stroke-dasharray="12 10"/>
|
||||
</g>
|
||||
<text x="2724.0" y="330" text-anchor="middle" fill="#F3F7FF" font-size="48" font-weight="700" font-family="Arial, Helvetica, sans-serif">1.0</text>
|
||||
<g clip-path="url(#cardClip7)">
|
||||
<text x="2598.0" y="390" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Next Major</text>
|
||||
<text x="2598.0" y="426" fill="#F3F7FF" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">Foundation</text>
|
||||
<line x1="2598.0" y1="436" x2="2850.0" y2="436" stroke="#DBE6FF" stroke-opacity="0.4"/>
|
||||
<text x="2598.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Platform + architecture step-up</text>
|
||||
<text x="2598.0" y="486" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Platform + architecture</text>
|
||||
<text x="2614.0" y="514" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">step-up</text>
|
||||
<text x="2598.0" y="556" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Roadmap themes converge</text>
|
||||
<text x="2598.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Migration guidance in release</text>
|
||||
<text x="2614.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">notes</text>
|
||||
<text x="2598.0" y="626" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">• Migration guidance in</text>
|
||||
<text x="2614.0" y="654" fill="#E7EFFF" font-size="20" font-family="Arial, Helvetica, sans-serif">release notes</text>
|
||||
</g>
|
||||
<circle cx="2724.0" cy="800" r="26" fill="#06B6D4" fill-opacity="0.5" stroke-dasharray="6 6"/>
|
||||
<text x="2724.0" y="870" text-anchor="middle" fill="#FFFFFF" font-size="28" font-family="Arial, Helvetica, sans-serif">1.0</text>
|
||||
<text x="2724.0" y="902" text-anchor="middle" fill="#DFE8FF" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>
|
||||
</a>
|
||||
</svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
|
|
@ -40,6 +40,7 @@ class Milestone:
|
|||
bullets: list[str]
|
||||
is_future: bool
|
||||
color: str
|
||||
link: str
|
||||
|
||||
|
||||
SEED_MINOR_TITLES: dict[tuple[int, int], tuple[str, list[str]]] = {
|
||||
|
|
@ -179,11 +180,19 @@ def choose_current_minor(sections: list[ReleaseSection], explicit_tag: str | Non
|
|||
def build_completed_minors(current: tuple[int, int], by_minor: dict[tuple[int, int], ReleaseSection]) -> list[tuple[int, int]]:
|
||||
seeds = set(SEED_MINOR_TITLES.keys())
|
||||
known = set(by_minor.keys()) | seeds
|
||||
completed = [m for m in known if m <= current]
|
||||
completed.sort()
|
||||
if len(completed) > 8:
|
||||
completed = completed[-8:]
|
||||
return completed
|
||||
completed = {m for m in known if m <= current}
|
||||
|
||||
# Keep the full historical 0.X line visible in the timeline (0.1 ... 0.N),
|
||||
# even when the active release line moves beyond 0.x.
|
||||
zero_minors = [minor for (major, minor) in completed if major == 0]
|
||||
if current[0] == 0:
|
||||
zero_end = current[1]
|
||||
else:
|
||||
zero_end = max(zero_minors, default=0)
|
||||
for minor in range(1, zero_end + 1):
|
||||
completed.add((0, minor))
|
||||
|
||||
return sorted(completed)
|
||||
|
||||
|
||||
def build_future_minors(current: tuple[int, int], completed: list[tuple[int, int]]) -> list[tuple[int, int]]:
|
||||
|
|
@ -203,7 +212,16 @@ def format_minor_label(m: tuple[int, int]) -> str:
|
|||
|
||||
def wrap_lines(text: str, width: int, max_lines: int) -> list[str]:
|
||||
wrapped = textwrap.wrap(text, width=width) or [text]
|
||||
return wrapped[:max_lines]
|
||||
if len(wrapped) <= max_lines:
|
||||
return wrapped
|
||||
trimmed = wrapped[:max_lines]
|
||||
last = trimmed[-1].rstrip()
|
||||
if len(last) > 1:
|
||||
last = (last[:-1] + "…").rstrip()
|
||||
else:
|
||||
last = "…"
|
||||
trimmed[-1] = last
|
||||
return trimmed
|
||||
|
||||
|
||||
def milestone_for_minor(
|
||||
|
|
@ -229,11 +247,25 @@ def milestone_for_minor(
|
|||
"UX + reliability polishing",
|
||||
"Scope refined via issue feedback",
|
||||
]
|
||||
return Milestone(label=label, title=title, bullets=bullets, is_future=True, color=color)
|
||||
return Milestone(
|
||||
label=label,
|
||||
title=title,
|
||||
bullets=bullets,
|
||||
is_future=True,
|
||||
color=color,
|
||||
link="https://github.com/h3pdesign/Neon-Vision-Editor/issues/49",
|
||||
)
|
||||
|
||||
if m in SEED_MINOR_TITLES:
|
||||
title, bullets = SEED_MINOR_TITLES[m]
|
||||
return Milestone(label=label, title=title, bullets=bullets, is_future=False, color=color)
|
||||
return Milestone(
|
||||
label=label,
|
||||
title=title,
|
||||
bullets=bullets,
|
||||
is_future=False,
|
||||
color=color,
|
||||
link=f"https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/v{m[0]}.{m[1]}.0",
|
||||
)
|
||||
|
||||
section = by_minor.get(m)
|
||||
if section is None:
|
||||
|
|
@ -243,10 +275,18 @@ def milestone_for_minor(
|
|||
bullets=["See CHANGELOG for details."],
|
||||
is_future=False,
|
||||
color=color,
|
||||
link="https://github.com/h3pdesign/Neon-Vision-Editor/blob/main/CHANGELOG.md",
|
||||
)
|
||||
bullets = extract_bullets(section.body, limit=4) or ["See CHANGELOG for details."]
|
||||
title = milestone_title_from_section(section)
|
||||
return Milestone(label=label, title=title, bullets=bullets, is_future=False, color=color)
|
||||
return Milestone(
|
||||
label=label,
|
||||
title=title,
|
||||
bullets=bullets,
|
||||
is_future=False,
|
||||
color=color,
|
||||
link=f"https://github.com/h3pdesign/Neon-Vision-Editor/releases/tag/{section.tag}",
|
||||
)
|
||||
|
||||
|
||||
def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
||||
|
|
@ -284,6 +324,12 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
end_label = completed[-1].label if completed else milestones[0].label
|
||||
subtitle = f"Release History · Versions {start_label} – {end_label} + upcoming"
|
||||
|
||||
card_layout: list[tuple[float, float]] = []
|
||||
for i in range(n):
|
||||
cx = margin + i * (card_w + gap) + card_w / 2
|
||||
rect_x = cx - card_w / 2
|
||||
card_layout.append((cx, rect_x))
|
||||
|
||||
out: list[str] = []
|
||||
out.append(f'<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" viewBox="0 0 {width} {height}">')
|
||||
out.extend(
|
||||
|
|
@ -302,6 +348,18 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
'<filter id="shadow" x="-20%" y="-20%" width="140%" height="160%">',
|
||||
f'<feDropShadow dx="0" dy="12" stdDeviation="18" flood-color="#000000" flood-opacity="{shadow_opacity}"/>',
|
||||
"</filter>",
|
||||
]
|
||||
)
|
||||
for i, (_, rect_x) in enumerate(card_layout):
|
||||
out.extend(
|
||||
[
|
||||
f'<clipPath id="cardClip{i}">',
|
||||
f'<rect x="{rect_x + 10:.1f}" y="{card_y + 96}" width="{card_w - 20}" height="{card_h - 116}" rx="20"/>',
|
||||
"</clipPath>",
|
||||
]
|
||||
)
|
||||
out.extend(
|
||||
[
|
||||
"</defs>",
|
||||
'<rect width="100%" height="100%" fill="url(#bg)"/>',
|
||||
f'<text x="{margin}" y="110" fill="{title_fill}" font-size="62" font-weight="700" font-family="Arial, Helvetica, sans-serif">Neon Vision Editor</text>',
|
||||
|
|
@ -311,11 +369,12 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
)
|
||||
|
||||
for i, m in enumerate(milestones):
|
||||
cx = margin + i * (card_w + gap) + card_w / 2
|
||||
rect_x = cx - card_w / 2
|
||||
cx, rect_x = card_layout[i]
|
||||
stroke_dash = ' stroke-dasharray="12 10"' if m.is_future else ""
|
||||
out.extend(
|
||||
[
|
||||
f'<a href="{escape(m.link)}">',
|
||||
f'<title>{escape(m.label)} - {escape(m.title)}</title>',
|
||||
'<g filter="url(#shadow)">',
|
||||
(
|
||||
f'<rect x="{rect_x:.1f}" y="{card_y}" width="{card_w}" height="{card_h}" rx="30" '
|
||||
|
|
@ -326,7 +385,9 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
]
|
||||
)
|
||||
|
||||
title_lines = wrap_lines(m.title, width=20, max_lines=2)
|
||||
out.append(f'<g clip-path="url(#cardClip{i})">')
|
||||
|
||||
title_lines = wrap_lines(m.title, width=16, max_lines=2)
|
||||
for idx, line in enumerate(title_lines):
|
||||
out.append(
|
||||
f'<text x="{rect_x + 24:.1f}" y="{card_y + 130 + idx * 36}" fill="{text_main}" font-size="30" font-weight="600" font-family="Arial, Helvetica, sans-serif">{escape(line)}</text>'
|
||||
|
|
@ -337,7 +398,7 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
)
|
||||
|
||||
for bi, bullet in enumerate(m.bullets[:4]):
|
||||
bullet_lines = wrap_lines(bullet, width=34, max_lines=2)
|
||||
bullet_lines = wrap_lines(bullet, width=24, max_lines=2)
|
||||
y = divider_y + 50 + bi * 70
|
||||
out.append(
|
||||
f'<text x="{rect_x + 24:.1f}" y="{y}" fill="{text_body}" font-size="20" font-family="Arial, Helvetica, sans-serif">• {escape(bullet_lines[0])}</text>'
|
||||
|
|
@ -347,6 +408,8 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
f'<text x="{rect_x + 40:.1f}" y="{y + 28}" fill="{text_body}" font-size="20" font-family="Arial, Helvetica, sans-serif">{escape(bullet_lines[1])}</text>'
|
||||
)
|
||||
|
||||
out.append("</g>")
|
||||
|
||||
node_dash = ' stroke-dasharray="6 6"' if m.is_future else ""
|
||||
fill_opacity = "0.5" if m.is_future else "0.85"
|
||||
out.append(f'<circle cx="{cx:.1f}" cy="{timeline_y}" r="26" fill="{m.color}" fill-opacity="{fill_opacity}"{node_dash}/>')
|
||||
|
|
@ -357,6 +420,7 @@ def render_svg(milestones: list[Milestone], dark: bool) -> str:
|
|||
out.append(
|
||||
f'<text x="{cx:.1f}" y="{timeline_y + 102}" text-anchor="middle" fill="{subtitle_fill}" font-size="18" font-family="Arial, Helvetica, sans-serif">upcoming</text>'
|
||||
)
|
||||
out.append("</a>")
|
||||
|
||||
out.append("</svg>")
|
||||
return "\n".join(out) + "\n"
|
||||
|
|
|
|||
Loading…
Reference in a new issue