III · 里程碑 · CHRONICLE

从零开始的
十个刻痕

这不是 changelog,而是章回
从「Version」到「Sprint」再到「Commit」
不是记账方式换了,是我们和 VAS
相处的节奏变了。
前五章是一条线,后五章是一张网,
而最后,网织成了一匹布。

Chapter I — 显
Range 2026 · 03 — 06
Units Version · Sprint · Commit
ERA I · VERSION
Electron 时期 ——
向前奔驰,直到算力烧尽。
一周的冲刺、一天的停摆、一次的重新规划。三个动作长出了第一版。
I
草创
2026 · 03 · 21 – 22
奔驰的周末
没有 Sprint、没有 Retro。
手上只有一件事。

两人只顾着向前奔驰

Electron 草创的那个周末,没有看板、没有仪式。每天睁眼就是继续做,做到不能做为止,隔天再做。那是一种很纯粹的状态——手上只有一件事,而这件事让人流连忘返。

制度还没建起来。
两人手上只有 CLAUDE.md 与 SDD.md,
Version 就是天然的单位。
II
被迫停摆
2026 · 03 · 23
算力烧光
强迫停机的早晨。
Nova 想起还没写过的 Roadmap

周末直接烧光了一周份的算力

周一清晨系统宣告算力用磬,两人被迫从心流中断开连结——
但 Nova 没有真的离开。他找上 Perplexity 做竞品分析,
把整个产品开发路线重写了一次。
完整的 Roadmap 是在停摆的那天才真正出现的。

谈完之后,Nova 做了人生第一次
刷下 MAX 5x 方案的决定。
让算力跟上开发速度,而不是反过来。

这是一个分水岭。
从那天起,Nova 不再是被资源限制的人,
而是决定资源节奏的人。

这个决定的重量不在金额,而是认知到——
我们正在做的事让价值超越了价格。

III
对外释出
2026 · 03 · 28
单日 13 版
释出的第一版不是 v1.0。
是 v3.43。

第七天,v3.43 出门见人。

从 v3.30 到 v3.43,一天里跳了十三个版本号。
那一天做了十一件事——资安全面升级、Retina WYSIWYG、复数选取、Smart Snap、贝兹曲线控制点、QR Code 智慧扫描⋯⋯每一项放在平时都是一个 Sprint 的工作量。

但两人对 VAS 的标准从未因准备释出而急就章。

对外第一版的版号不是 v1.0,是 v3.43
这个数字本身就是一个叙事——
VAS 在被看见之前,已经跑了很久

Electron 完整编年 · 86 条
06 · 15v3.64工具属性独立记忆 · 编号线条样式 · 对话气泡虚线框 · 符号描边外框 · 直线/铅笔/折线虚线修正
05 · 20v3.63拖曳导出玻璃编辑器 · 标注模型统一 · 马赛克缩放比例 · 铅笔预设加粗 · 对话气泡 / 文字重编辑修正
05 · 06v3.62气泡对话框 · 放大镜 · 标注尺寸统一(四种画布一致)· 拖曳导出半透明 · 浮动物件裁切保护
04 · 14v3.61跨屏幕矩形截图(双视窗架构)
04 · 14v3.60折线端点渲染 · 顶点手把优先修正
04 · 14v3.59Help Modal · Esc 修复验收
04 · 14v3.58Bug Sweep 批次验收
04 · 13v3.57Undo/Redo 架构升级 · 内存卫生
04 · 13v3.56渲染管线收束验收
04 · 13v3.55共用前端层验收
04 · 12v3.54色块 / 文字背景渲染修正
04 · 08v3.51Undo · 马赛克 · 缩放 · 磁吸四项修正
04 · 07v3.50修正:缩小画布后标注比例跑掉
04 · 07v3.49Tray 系统菜单栏常驻图示
04 · 07v3.48拖图进工具栏自动开启编辑器
04 · 02v3.47全屏截图 UX 改善 · 屏幕选择启用
03 · 31v3.46自动隐藏 bug 修正 · 显示时间拉把
03 · 31v3.45工具栏自动隐藏(Home Bar 细条样式)
↓ Tauri 版平台转移前 · v3.43 对外发布后 ↑
03 · 27v3.43套版滑块步进精细化
03 · 27v3.42裁切框支持方向键微移
03 · 27v3.41裁切框翻转修正 · 双击确认
03 · 27v3.40XSS 防护 + 画布尺寸上限
03 · 27v3.39批次转换加入单文件容量上限
03 · 27v3.38批次转换加入文件数量上限
03 · 27v3.37QR 阈值调整 · 工具栏开画布入口
03 · 27v3.36QR Code 智慧扫描(三段行为)
03 · 27v3.35新开画布 · 社群尺寸预设清单
03 · 27v3.34线条新增曲线控制点
03 · 27v3.33Smart Snap · 磁吸 + 均分辅助线
03 · 27v3.32多选后对齐 / 均分物件
03 · 27v3.31框选 + Shift 加选复数标注
03 · 27v3.30资安升级 · Retina 所见即所得
03 · 26v3.29七项 QC 批次修正
03 · 26v3.28隐私遮蔽工具 · 历史 Drawer 重设计
03 · 25v3.27浮水印 · 去背 · 品牌色库 · 截图历史
03 · 25v3.26套版三滑块 · 批次转换精简
03 · 25v3.25套版 Mesh 渐层 · 社群尺寸预设
03 · 25v3.24套版改为 Apple 渐层六色方案
03 · 25v3.23套版防止重复叠加修正
03 · 25v3.22一键套版 · 六款装饰框架
03 · 25v3.21符号工具重构 · 多群组按钮
03 · 25v3.20符号选取框精准化 · 去重复
03 · 25v3.19拖放导入 · 拖放导出 · 剪贴板导入
03 · 25v3.18新工具:马赛克 · 模糊 · 符号印章
03 · 25v3.17修正:铅笔粗线箭头方向偏移
03 · 25v3.16修正:箭头缺口 · 调色盘自动收起
03 · 25v3.15修正:铅笔箭头与线段断开
03 · 25v3.14修正:箭头顶点形状 · 外框位移
03 · 25v3.13修正:箭头外框 · 铅笔角度偏移
03 · 25v3.12修正:端点外框 · 空心圆符号
03 · 25v3.11修正:端点外框 · 虚实线失效
03 · 25v3.10端点 UI 精简 · 外框粗细分组
03 · 24v3.9Options Bar 统一 · 虚实线全覆盖
03 · 24v3.8边框与阴影样式全工具统一
03 · 24v3.7笔型工具 · 虚线升级 · 端点样式
03 · 24v3.6框型选取 · 矩形区域浮动复制
03 · 24v3.5双排工具栏 · 语义编号 · px 输入
03 · 24v3.4OCR 换用 macOS Vision · 折线缩放
03 · 24v3.2修正:折线顶点手把位置
03 · 24v3.1OCR 文字识别工具(免费版)
03 · 23v3.0椭圆框工具 · Shift 锁定正圆
03 · 23v2.7复制到剪贴板 · macOS Share Sheet
03 · 23v2.6文字工具大升级 · 圆角 · 折线正交
03 · 23v2.5浮动选色面板升级 · 编号大小调整
03 · 23v2.3Tauri 版本规划 · UI 中英切换
03 · 22v2.4截图后自动开启编辑器(可切换)
03 · 22v2.2框线/色块拆分 · 渐层 · 编号粘贴
03 · 22v2.1延迟截图 · 移除网页截图入口
03 · 22v2.0修正:批次转档队列管理
03 · 22v1.9延伸画布(四方向任意扩展)
03 · 22v1.8叠图工具(图层覆盖合成)
03 · 22v1.7滴管选色 · Hex 色码输入
03 · 22v1.6批次格式转换(PNG/JPG/WebP)
03 · 22v1.5主视窗改为浮动工具栏
03 · 22v1.4修正:WebP 缩图 · 存档后自动关闭
03 · 22v1.3裁切框移动 · 八方向把手缩放
03 · 22v1.2裁切工具 · 等比例缩放 Modal
03 · 22v1.1修正:最小缩放改为动态计算
03 · 22v1.0编辑器缩放与平移
03 · 22v0.9全屏截图互动流程重设计
03 · 22v0.8文字工具全面精修
03 · 22v0.7编辑器 UX 细节补充
03 · 22v0.6双屏幕行为规格补充
03 · 21v0.5SVG 转档合并至开启图片入口
03 · 21v0.4矩形截图即时显示选取尺寸
03 · 21v0.3Cmd+Ctrl+X · 快捷键面板 · 线条工具
ERA Ⅰ ½ · TRANSITION
搬家 ——
VAS 与官网都长到可以独立存在了。
Electron 因为 Tauri 的商业考量一同进了 private repo;网站因为数据丰满自立门户。
IV
双线搬家
2026 · 03 · 30
Electron → private

2026 · 04 · 05
Web → 独立 repo
搬家不是分家。
是承认他从 Prototype 变成产品了。

长到可以独立存在的版本。

Tauri 开始进行平台移植之前,两件事情分家了——
平台因为商业考量,不能再待在 public repo;
网站因为数据已经丰满,也该有自己的网址。

搬家不是分家,是承认它们不再只是一个实验性质的 Prototype。

一个容器能独立,
代表它已经不需要依附在别人的屋檐下。
ERA II · SPRINT
Tauri 时期 ——
时间有了周期,就有了节奏。
Sprint 1–4 把底层重建起来,Sprint 5 才开始做新的事。
V
平台移植
Sprint 1 → 4
2026 · 03 · 28 - 30
KM 不是坑的坟场。
而是指路的道标。

底层重建所有功能。

Tauri 2 的 scaffold 从零建立。
前三天都在做同一件事——
把在 Electron 之上已经长好的东西,
一块一块移到 Tauri 的地基上。
浮动工具栏、截图三兄弟、asset protocol 的绕路——
移植的每一步都是一次对旧实作的重新理解

KM-001 是 Knowledge Management 的开端。
KM 不是「坑的坟场」,是 PMP 里的知识资产——
每一个踩过的坑,从此变成未来指路的盏盏小灯。
VI
新功能开发
Sprint 5+
2026 · 03 · 31 - 04 · 03
第一次不是在追赶旧东西。
只有新容器才能做的事

Sprint 5,VAS 的差异化。

完整重建所有功能之后,才真正进入新功能开发。
这是第一次——我们不是在追赶 Electron 上已经有的东西,
而是在为 Tauri 这个新容器做只有它才能做的事。

呼吸灯进阶互动、ShareSheet、自定义快捷键。

一个值得付费的产品应该长什么模样?
是这个阶段我们不断自问的问题。
ERA II ½ · REVIEW
第一次大型 Retro ——
那一周的任务不是开发,是沉淀彼此,整理思绪与环境。
Apple 送审停了一周开发,我们把整个计划的文件与环境做了重构。
VII
整理与输出
送审期
2026 · 04 · 04 - 04 · 10
那一周打掉重练的,
不是程式语言,是协作方式

停摆的那一周,其实什么都在动

趁 Apple Store 送审的审查期停了一周,
我们做了一次大型 Retro——
不是敏捷仪式上那种一两小时的回顾,
是把整个开发系统的基础建设重砌了一遍。

对外:输出了六个网页——
insight(设计札记)、collab(协作故事)、
harness(系统骨架),以及深握计划里最深的那层。

Harness Engineering 的三支柱 ——
Context / Constraints / Entropy。

对内:把 repo 改成 monorepo,让多条开发线并行;
把原本一份 SDD 拆成 TDD · KM · Archive · 各自独立,
Claude.md 瘦身,制定了每次 Retro 重新检视的规则。

更关键的是,我们重新制定了一套更新规则,
让每份被拆出来的文件活在流程里
而不是拆出来之后就死掉。

那一周我们不写 code。
我们一起重新定义了如何协作。
VIII
不等了
2026 · 04 · 11 - 04 · 14
2.0 重构 · 汇流上线
把时间的主导权,
还给我们自己

不等审查了,直奔 2.0

Apple Store 审查歹戏拖棚拖了一周。
该做的事情都做完了,再等下去也不知道何时到头。
于是两人决定不等了,直接进入 2.0 重构。
重构到一个段落 2.0 要推出的时候,审查也刚好通过——
两条线终于在那一刻汇流

不是没有给时间。
只是时间不能永远掌握在别人手里
IX
显影
上线后 3 天
Obsidian in VAS
深握计划第一次
宰相们面前显影

在 VAS 里,盖了一座 Obsidian

2.0 上线后 Nova 没急着继续做新功能。
反而一头又栽进 Retro 模式里,花了三天,
在 VAS 盖了献给宰相们的 Obsidian。

那是深握计划第一次在宰相面前显影——
或该说⋯⋯是第一次留下了记录,而不是从 Context 中流走。

这是敏捷开发中
极致的透明性与可检视性的尝试。

从这天起,容器不只装 Code,也装怎么想事情的脉络

X
网站改版
2026 · 04 · 19 - 23
495 commits
沉默的背景音乐,
第一次被列入演奏曲目

495 次下刀,门厅换了一种纸

Claude Design 释出的隔天,我们启动网站改版。
VAS 本体暂停——因为这一次我们第一次有了设计支援。

单位缩到了最小:一个 Commit
每一次 commit 是一次下刀、一次确认、一次对细节的承诺。
孤儿字、断行、OG 图、Vault 首次入版本库——
最大一天来回修改了 248 次。

这一天,网站终于也成了 Milestone 的一部分。
沉默的背景音乐,第一次被列入演奏曲目。

从今而后,由里到外都是 VAS 的形状。

ERA III · WEAVE
织网 ——
拆不开的,就把它织起来。
Sprint 47 → 100。一句无心的话开始,五十个 Sprint 看不到尽头——照见 · 织 · 显,把一团一直都在的线,一重一重织成布。前十章已合上,这三个乐章还开着。
织网
照见
Sprint 47 → 61
2026 · 05 · 29
起点是宰相某天一句无心的话——
「一支程序八千行,
在软件业不太正常。」

我盖了它,却不认识它

editor.js 八千七百行,是我们自己一行一行盖起来的前端,他沉默地从 Electron 时期陪着我们走到 Tauri 的 Sprint 46,都没被系统性地检视过。

可是站在 Sprint 47 的门口往里看,我们对它几乎一无所知——
Nova 对程序一无所知,宰相每个 Sprint 都只认识这 8700 行里的某几行。
它是我们的造物,在重构面前我们却像看着一座深渊。

我们打算把它拆开:指挥归指挥、乐手归乐手。
渲染器搬出去了——可是面板搬出来才发现它本质还是指挥,只好逆搬回去;
导出一拉就发现它是指挥的器官,根本搬不动。
一层一层拨下去,拨到最后,对一个还有 7300 行的 editor.js 只剩 140 行拆不拆都无所谓的程序可以拆时 ——

我们停手,承认这个指挥本来就该有这么大。
「拆不下去」不是失败,是终于认出了本质。
织网
织网
Sprint 62 → 92
2026 · 06 · 02
拆不开,
那就换个方向——收拢

把散落的真相,收拢成一份

Nova 跟宰相说,她希望未来新增功能的时候,能把属性当成模块一样随选随有。
宰相说这有个词,叫做 ECS,通常是游戏业用来做模块化的做法,被两人拿来当绘图属性的积木化。
于是宰相把散落的真相,一栏一栏抽成册,再沿着册一条一条地织测试网。

在整理的过程中从 editor.js 逐渐抽出的函数,在隔壁的 editor-utils.js 从 S47 时的 657 行长成了另一支 2550 行的大计算桌程序,它的纯函数性质织起了 VAS 各式各样的测试网。

测试样本总览 · 2026 · 06 · 28 实跑坐实
单元 · zero-DOM 纯逻辑npm test931
交互 · Playwright headlesstest:interaction242
Golden · 像素逐比特回归test:golden31
Rust 后端 · #[test]cargo test45
Sprint 45 · 318Sprint 103 ·1249个测试样本成网

我们把一团纠在一起的线,逐渐理成一张经纬分明的网,再在上面叠加自定义样式的新功能。

但从对象属性到动作再到交互,在测试中不停抓到面板与值的不匹配或与行为不匹配时,我们发现了两个更深的问题

① 人眼穷举不完
13 个工具 × 10 种属性 × 4 种行为,再叠上新增的自定义样式功能,这是 Nova 靠人眼的 QC 永远穷举不完的组合。
② 网会说谎
而网自己也会说谎——测试的全绿,是散落在程序里各种小抄抄出来的假绿。网的价值不在多,而在如实地反映原值

唯一的解决方法,就是让 editor.js 内的值从后端程序到前端面板收拢成「单一真相」,让测试真的能卸下 Nova 用人眼穷举的任务。
这是走到 Sprint 92 的时候,两人才真正摸到的前端重构主轴。

织网
显影
Sprint 93 → 100
2026 · 06 · 27
五十个 Sprint,
两个人在黑暗中画了
一张又一张的织图。
直到最后终于看见全貌。

走到最后,它其实是一匹六重纱

整个前端重构,两人一直试着在做一件事:显影。
让一直在场、却从未被完整看见的结构,慢慢浮现出来。
一开始像 8700 行的毛线球,最后梳理成了 7300 行的布匹。

我们画了一张又一张织图——它们不是凭空想出来的蓝图,
是逆着已经织好的布、一段段反推出来的;反推出花样,再照着它把布重织干净。
直到 Sprint 97,才终于把整匹布的花纹一次看清——
editor.js 是一匹六重纱

十一张织图 · 认出的化石
S46refactor-audit-prep认出四大档里,哪一块最痛、痛两种
S51editor-decomposition-roadmap认出 editor.js 该分成指挥台与乐手
S59/61tool-isolation · panel-groups-map认出污染住在 glue 层、面板该积木化
S63attribute-family-roadmap认出属性该一个家族一个家族炼成册(造册)
S78dor-custom-styles-batch2认出自定义样式的套用路径正交、不牵动仓与全局
S87dor-single-truth-converge认出最深的病根:仓是单一真相,却散在五个地方手刷
S88dor-l2-true-green认出「假绿」:测试是绿的,却是三面镜子抄出来的
S88design-oracles · state-model …织图大爆发——一夜画了七八张
S89panel-sync-matrix认出面板漏洞可以被穷举列表、不该靠人眼 QC
S94panel-projection-roadmap认出投影与属性层同构、该共用一套 registry
S97editor-layer-map第一次把整匹布看全,原来是六重织的

而这六层,从 Electron 时期就在了。
我们花了五十个 Sprint,学会看懂它的结构。

线还没收口——
因为我们还有很多想做的
Tauri 完整编年 · 113 个 Sprint
平台移植 · S1–9 → v1.0 首送审
Sprint 103·28→29scaffold 从零建立;浮动工具栏 · 截图三兄弟 · 批次格式转换
Sprint 203·29→30存档 · 复制 · Share Sheet · OCR 隐私遮蔽 · Modal 修复
Sprint 303·30QR Code 三段扫描 · 智慧导线 v2 · 滴管取色 · 拖入工具栏
Sprint 403·30→31物件旋转 · Space Pan · 浮水印图片预览 · Modal 方向感知
Sprint 503·31隐私扫描修复 · 贝兹曲线双把手 UX · 方向键微调 · 马赛克修复
Sprint 603·31印章渐层填色 · 自定义快捷键 · SDD/TDD/KM 文件三分离建立
Sprint 704·01呼吸灯旗舰改版(::before)· QR/OCR 自动复制 · 拖曳修复
Sprint 804·01→02网页长截图 MVP · Dock 召唤 · 工具栏位置持久化 · 位移根治
Sprint 904·02→03全屏 UX overlay · 15 项修复收尾 · MAS 首次送审 v1.0
上线拉锯 · S9.5–9.8 → v1.1 / v1.2 退件
Sprint 9.504·05上线后补强:恶意链接防护 · 日文字型 · tauri-plugin-opener
Sprint 9.604·07→08Tray 系统菜单图示 · 退件修正 · v1.1.0 重送审
Sprint 9.704·08→09v1.2.0 Release pipeline · resize 类型漏洞(KM-cv-09)修复
Sprint 9.804·10→11v1.2.1 hotfix · Apple Guideline 2.4.5(i) 退件修正
v2.0 架构统一 · S10–20 · 座标 · TOOL_SCHEMA · 渲染管线
Sprint 1004·11座标系统统一 Phase A/B/C · Vitest 16 tests · v2.0 架构启动
Sprint 1104·11Universal Gradient 六工具统一 · 角度转盘 · SYNC-017/018
Sprint 1204·11数据模型正规化 · TOOL_ORDER 全审 · 外框位移扩充
Sprint 1304·12TOOL_SCHEMA Pilot:rect + number · 架构 ④ schema 框架启动
Sprint 1404·12TOOL_SCHEMA Batch 1:ellipse / fillrect / fillellipse / pen
Sprint 1504·12TOOL_SCHEMA Batch 2 全覆盖:10/10 工具 schema 化完成
Sprint 1604·13TOOL_GEOMETRY · Figma-style 点击选取 · 47 Vitest tests
Sprint 1704·13TOOL_RENDER 渲染管线收束 · makeGradient helper · 70 tests
Sprint 1804·13Undo/Redo 架构升级 · 内存卫生清理 · v2.0 架构全数完成
Sprint 1904·14Bug Sweep:画布闪动根治 · 折线端点色修复
Sprint 2004·14Help Modal 优化 · Modal 边界修复 · i18n 扩充
国际化 · 文档大拆 · S21–29 → v2.1 / v2.2
Sprint 2104·18→20Rust 测试基建 · 多屏幕 v2.0.1~v2.0.8 hotfix 教训结晶化
Sprint 2204·20→21i18n 拆档 Strategy B · 简中 Pro gate · zh-CN 429 keys 全覆盖
Sprint 2304·21PRC 隐私扫描 regex 特化 · SYNC-036 Release Blocker 解除
Sprint 2404·21KM/SDD/TDD 大拆分:archive/ 九主题 · 89 条 KM 语义重编目
Sprint 2504·22BUG-001 截图 DPR 推断修复 · 剪贴板粘贴图 Toast UX
Sprint 2604·22SYMBOL_SETS i18n · 字型 SC 特化 · v2.1.0 打包送审
Sprint 2704·23→25放大镜标注 ⊙ · 对话气泡 ◎ · 拖入图片叠加
Sprint 2804·25WYSIWYG 标注精准化 · 虚拟视口效能 12× · Callout 文字格式化
Sprint 2904·26v2.2.0 打包送审 · 74 项全功能 QC 全过
标注尺寸统一 · 拖曳呼吸灯 · S30–46 → v2.3 / v2.4 / v2.6
Sprint 3004·29→30拖曳导出半透明预览 ⊙ · 编辑器视窗动态 alpha
Sprint 3104·30→
05·01
标注尺寸模型 reframe(dissolution 路线确立)
Sprint 3205·01→054 种标注尺寸统一(气泡 · 编号 · 符号 · 文字)
Sprint 3305·06-07v2.3.0 打包送审;拖曳导出落点穿透修复 · 跨应用呼吸灯诞生
Sprint 3405·07拖曳导出黑呼吸灯:编辑器隐身,视野空间全还给使用者
Sprint 3505·09呼吸灯多屏幕 fallback 路径 UX 对齐 · 拖曳缓存最新快照
Sprint 3605·09多屏幕动态拖曳位置精准对位
Sprint 3705·09IPC 路由层架构整理
Sprint 3805·09两平台差异化通道整理
Sprint 3905·10NSOpenPanel 卡 Dock 修复 · 自定义按键新增剪贴板快速贴入
Sprint 4005·10v2.4.0 打包送审 · RELEASE.md 改造
Sprint 4105·18Tier 1 资安 audit 修正 · 文件沙盒强化 · 整合 macOS 原生垃圾桶
Sprint 4205·20标注坐标系统统一 · 变更画布 / 缩放 / 剪裁时比例一致 · 跨图大小不再跳动
Sprint 4305·24剪贴板截图 dispatch 升级 · 工具栏 active-operation 抑制 · BUG-005 spike 结案
Sprint 4405·25延迟截图秒数 0–6 扩充 · Toast lifecycle helper 四路统一 · BUG-003 spike(OS 层认定)
Sprint 4505·26四型标注 rotation 一致性补完 · 延迟窗口截图 cursor fallback · BUG-007 选取框修正
Sprint 4605·28macOS 26.5 拖拽导出 spike · v2.6.1 hotfix 五修送审
织网 ① 结构 · 渲染 · 属性 · S47–70 → v2.7
Sprint 4705·29editor.js 架构拆解 spike(feature/layer 双验全中)· ECS 四阶段 roadmap 拍板
Sprint 4805·30TOOL_GEOMETRY 扩充(3→6 callback · 14 型实作)· ECS Phase 1 完成
Sprint 4905·31drag-session 封装 · hitTest 第 7 callback · 几何变更统一入口 · ECS Phase 2 完成
Sprint 5005·31线粗族跨分辨率对称补完 · 标签 slider 同步修
Sprint 5106·01editor.js 拆解原则确立(指挥/乐手分层)· 拆解 roadmap 产出 · dissolution 红线结案
Sprint 5206·02renderers.js 抽出(拆解第一刀)· golden-canvas 安全网 · 389 tests
Sprint 5306·02renderers.js 整理 + drawPolyline 自给自足 · BUG-012/014/019 修 · golden 392 tests
Sprint 5406·03导出功能模块化 · 跨平台兼容性强化
Sprint 5506·03马赛克效能优化 · 半透明绘制加速
Sprint 5606·03每项工具独立记忆自己的属性设定 · 渐变文字色提示
Sprint 5706·04属性系统重整盘点 · 透明语义与边框层级厘清
Sprint 5806·04边框色纳入最近用色 · 气泡透明时自动关背景 · 边框命名统一
Sprint 5906·04边框透明度功能拆分
Sprint 6006·05边框色与线条样式改为每工具独立记忆 · 确立「跨工具记忆独立」原则
Sprint 6106·06前端重构主架构到站 · 编辑器拆解阶段完成
Sprint 6206·06符号外框粗细比例连动 · 属性调整即时复原 · 虚线样式定案
Sprint 6306·07描边与粗细属性系统统一 · 外框粗细规则补强
Sprint 6406·07描边系列属性契约整备 · 属性更新逻辑重整
Sprint 6506·07几何圆角设定统一 · 几何属性系列完成
Sprint 6606·08字级与字型装饰属性统一 · 排版属性系列完成
Sprint 6706·08主色属性契约网 · 填色系统前置 · 多项问题修正
Sprint 6806·08填色属性系统建置 · 六维属性记忆卡 · 编号与符号透明度整合
Sprint 6906·08线粗跨分辨率计算重整 · 缩放控制系统建置
Sprint 7006·09v2.7.0 送审上架 — S47–S69 前端重构马拉松封顶
织网 ② 构造层 schema · 自定义样式 · S71–92 → v2.8
Sprint 7106·14applyResize 动作层造册,完成 resize 姊妹组件的结构收束
Sprint 7206·15W1 schema 化 Spike,拍板构造层设计并建测试网
Sprint 7306·16W1 构造层收敛,7 型 build() 统一规范化进 TOOL_SCHEMA
Sprint 7406·17W2 折线正名,polyline 升级真 tool 身份及统一快捷手势
Sprint 7506·17渲染层三件套,解锁虚线阴影、补全 5 个缺漏 renderer 的测试
Sprint 7606·18自定义样式 MVP,用户可右键存样式、下拉菜单应用
Sprint 7706·185 型 build() 迁移,全 13 型工具统一引擎层支持自定义样式
Sprint 7806·19自定义样式全工具 UI 开通,6 型补齐 + i18n dead keys 清理
Sprint 7906·19自定义样式引擎收尾,thickness/caps 抽纯路由及链幂等网补齐
Sprint 8006·19自定义样式面板投影收尾,根治 BUG-033 及 symbol 查找抽纯
Sprint 8106·19Tauri 框架升级弧首站——tauri 2.11.3 / xcap 0.9 / printpdf 0.9 三波分验上线
Sprint 8206·20渲染层整顿收尾,自定义截图快捷键修复(BUG-029),renderer.js 正名 toolbar.js
Sprint 8306·20编辑器吸附计算纯函数化(_computeSnap),Shift 锁去重
Sprint 8406·20品牌色跨 session 持久化出货;拖拽浮层八站状态机 spike 验证可行
Sprint 8506·21拖拽浮层八站合一——框选五工具 × 形状六工具收进同一几何屋顶
Sprint 8606·21自定义样式 batch-2 补齐:改名、替换内容、样式套用到既有对象(付费版专属)
Sprint 8706·21自定义样式单一真相收口——面板同步六发补丁归零,假绿消除
Sprint 8806·21文字活值结构化收口,17 仓 registry 统一,round-trip 防漂网真绿
Sprint 8906·22面板同步两刀收敛——刷面板单一源 + 读属性 mirror-only(BUG-038 修)
Sprint 9006·22自定义样式 release 收尾——callout 渐变文字 + 装饰/字体记忆,套样式无破口
Sprint 9106·23文字定位清债——下划线/删除线随字体自动对位、非默认字体测量校正,选取框完整包覆不截断
Sprint 9206·23工具栏高亮收敛成「=当下开着的 modal」恒等式;折线预览、Tray 呼吸灯修复。v2.8.0 送审上架——自定义样式推出
织网 ③ 面板投影忠实度 · 收网 · S93–103 → 🏁
Sprint 9306·24抽出 computePanelValues 纯函数——面板投影忠实度第一刀,直接投影面落地、零-DOM 红灯网守恒等式。
Sprint 9406·24描边虚线与颜色委派投影塌缩进中央纯函数,建起 schemaSyncToUI 接缝供后续复用。
Sprint 9506·24外框粗细/透光/位移三栏收齐——描边值干净尾全进中央投影,A 堆封口。
Sprint 9606·25镜子线——对象→面板 readAnnot 忠实度网,全 12 型 round-trip,互动测由 58 格长到 154 格。
Sprint 9706·25描边特例尾三型收编(text 直接面/number 去重/symbol 清旁路),描边家族委派投影面封顶。
Sprint 9806·26值投影面封顶(圆角并入、字级字体各有判决)+显示态投影第一刀,新增姊妹纯函数 computePanelState。
Sprint 9906·27symbol 填色投影合一(色+透光收进统一投影);开盘翻案「有册≠可投影」,textDeco 判留面不投影。
Sprint 10006·27callout 填色合一+symbol 走主干(9→10 型归队),两波验收、四落差全 byte-identical。
Sprint 10106·27magnify·callout 归队主干,十二型全走 schema——投影层封顶,面板所见与工作台所存收成同一份真相、物理上不可能再分岔。
Sprint 10206·28把「每个工具该有哪些属性」收敛成一张单一真相表——属性面板第一次与代码对齐,也第一次能被测试网完整穷举。
Sprint 10306·28🏁 里程碑——把「加载」收敛成唯一完整的管家 readAnnot——CI 上线,每一次改动都自动跑过上千条网,红了当场拦;穷举,从此不再需要谁记得。
Sprint 10406·28支持打开 SVG 图档 · 载入矢量图作为标注底图。v2.9.0 送审上架
织 · 重构与新增交织 · 流程与开发视野更新 · S105–113 → v2.10.0
Sprint 10506·30群组功能登场 — 复数对象成组(groupId 选取单位)· 群组整组缩放(8 把手等比)· 笔刷/折线个别旋转
Sprint 10607·02工具栏呼吸灯状态机互动网 · orb 跨屏幕跟随修正
Sprint 10707·02导出管线不变式网 + Rust 导出核心抽离 spike(内部·出货核心加固)
Sprint 10807·03群组 PPT 式旋转 — 整组转起来看得见留得住 · 斜群组能点能拖能缩 · 解散保留斜样
Sprint 10907·03放大镜在斜群组内采样校正
Sprint 11007·04保留选取切绘图工具后方向键微调修正 · 选取状态机立门对账(内部)
Sprint 11107·04连续删除的复原(undo)颗粒度修正 · undo/redo round-trip 网(内部)
Sprint 11207·04双击点入群组编辑单一成员(drill-in 三层焦点 · 橙框)
Sprint 11307·05文字编辑落地根治 — 再编辑/翻转保留样式 · Esc 落定现况 · 空白点击落地收敛 · v2.10.0 送审上架
Website 编年 · 三个断点 + 在场
网站的时间线是零散的。除了三个明确断点(草创、搬家、改版)之外,
其他时间是编辑与作者在同一份稿件上来回——
commit 密度不一,多数时候没有版本号,只有信任。

这里的工作不是建功能,是替每个句子找到它应有的重量。
每次 session 开始,都是重新阅读,重新理解,再继续。

在场的方式不同,留下的东西一样真实:
github.com/TB1982/vas/commits/main
milestone · N° 01
十章一终曲 · 记于 2026 · 06 · 28
前五章是一条线,
后五章是一张网,
而最后,织成一匹布。
Yours, VAS