# WindsurfAPI 记账本 v2 · 精细账 · 2026-07-10 ~ 07-16(v3.1.2 → v3.5.0) ## 元信息 - 范围:93 条 commit(4fc3c39 至 4a105fd),全部 hash 经 `git rev-parse` 逐个验证存在,无一缺失。 - 时区口径:统一按 +0900(主作者 dwgx 所在时区)。两条 warelik 贡献(15e9562/2047628)原提交时区 +0300,其作者日期为 07-14 22:41;按 +0900 归入 07-15,文中已标注。 - 深挖标记:★ = 逻辑级(读了 diff 或完整 commit message 的因果链)。 - 与 v1 采集(ledger-out-slice-7a-v3.md)的关系:本账在其聚类/修复明细基础上做逐条精细账,末尾「勘误」列出对 v1 的三处修正。 --- ## 一、版本轨迹精细表(22 个 tag,v3.1.2 ~ v3.5.0) rc 系列用 `rc` 标注。tag 落点均经 `git rev-list -n1` 验证。 | tag | 日期(+0900) | 当天发布的 tag 数 | tag 落点 commit | 核心内容 | |---|---|---|---|---| | v3.1.2 | 07-11 | 第 1/6 版 | a10a781 | self-update + trend-clip 修复 + WebGL pool fire(新增) | | v3.1.3 | 07-11 | 第 2/6 版 | f9a4d6c | 加固 WebGL pool fire(context leak 修复) | | v3.1.4 | 07-11 | 第 3/6 版 | a14fb2d | fire lifecycle recovery + trend clamp + review 修复(含 add9bd4 按 account id 发布、a228daa Docker/update.sh 加固) | | v3.1.5 | 07-11 | 第 4/6 版 | 270dd0b | dashboard a11y + i18n gate + CORS & proxy SSRF 修复(#9/#11) | | v3.2.0 | 07-11 | 第 5/6 版 | dcc2eb6 | statistics dashboard overhaul(统计页大改,129827b) | | v3.2.1 | 07-11 | 第 6/6 版 | e13886d | 审计修复轮(安全/正确性/运维/性能) | | v3.2.2 | 07-12 | 第 1/5 版 | cc5a9e7 | 审计批 4/5 + 账号池可靠性 + Windows 部署(d331b18 脚本套件;**热更新退出码 bug 引入点**) | | v3.2.3 | 07-12 | 第 2/5 版 | 60bd3fd | 模型 catalog live-sync + 外部审计修复(65240aa;**烧账号事故源头**) | | v3.2.4 | 07-12 | 第 3/5 版 | 9edd148 | /v1/models 发现回归修复(d3f1f4c;**烧账号引爆点**) | | v3.2.5 | 07-12 | 第 4/5 版 | f91d417 | live-catalog alias-fold 修复(7a8d658;**烧账号根治**) | | v3.2.6-rc4 | 07-12 | 1 rc | c40ae89 | esbuild 先打单 CJS 再 pkg(解 ESM 打包崩溃) | | v3.2.6-rc5 | 07-13 | 1 rc | 5a76a71 | 数据存 exe 旁 Windsurf_data + 首跑自动开面板 | | v3.2.6-rc6 | 07-13 | 2 rc | c725370 | 首跑自动生成 API_KEY + DASHBOARD_PASSWORD 写 .env | | v3.2.6 | 07-13 | 第 1/7 版 | e1d6632 | **tag 落点非 release commit**:4851629 打出 release(429 缓解默认开 + Windows 单 exe + 热更新修复)后,补 e1d6632 托盘再定 tag | | v3.2.7 | 07-13 | 第 2/7 版 | 17b024a | Windows 系统托盘(零依赖 NotifyIcon + W 波浪图标)+ 落地页 tab/FAQ | | v3.2.8 | 07-13 | 第 3/7 版 | b991004 | 托盘双模式启 exe + CI 打解压即用 zip 分发包 | | v3.2.9 | 07-13 | 第 4/7 版 | f2a3f89 | SOCKS5 隧道测试覆盖(tq-01)+ dashboard 每账号累计花费(K8) | | v3.3.0 | 07-13 | 第 5/7 版 | e4c31ed | dashboard 池操作大改(diff 门 / 请求卫生 / 池事件通知 / 批量操作) | | v3.3.1 | 07-13 | 第 6/7 版 | 75a267b | 打磨三件套(KPI count-up + 骨架屏 + reduced-motion)+ 批量池操作 | | v3.3.2 | 07-13 | 第 7/7 版 | 655e74f | **无独立 release commit,tag 直接打在主题化 checkbox/radio 上** | | v3.4.0 | 07-15 | 1 版 | a9fba98 | cline 可插拔兼容层 + identity-neutralize + content-policy 可观测 + MCP-gate neutralize(#216)+ IPv6(#215) | | v3.5.0 | 07-16 | 1 版 | 81370f5 | Claude Code 专属兼容层 /v1/cc/*(4a105fd 在其后收尾) | 节奏:07-11 六连发,07-12 五连发(含 rc4),07-13 七版 + 2 rc,07-15/16 各一。三股主线:Dashboard 大改版、外部审计修复轮、Windows exe/托盘链。 --- ## 二、逐条 commit 账(93 条,时间正序) ### 07-10 **1. 4fc3c39 · docs(contributors)** 致谢 clarezoe(catalog-resync fix,#206)。本片首条,前接 v3.0.x 尾巴。 ### 07-11(六连发日) **2. 421e80d ★ · fix(server)** dashboard 空 body POST 按 `{}` 处理,不再误报 Invalid JSON。逻辑:server.js 对空请求体(length 0 或非 JSON 字符串)此前直接抛 400;改后按空对象走默认分支。+40 行测试。 **3. 5c526b0 ★ · feat(dashboard)** WebGL fire on saturated pool rows + trend peak clipping 修复。池满行加 WebGL 火焰动画;修复趋势图峰值被 clip 吞掉的 bug。 **4. a10a781 · chore(release): v3.1.2** 当天第 1 版。self-update + trend-clip 修复,WebGL pool fire 首秀。 **5. 877fbef ★ · fix(dashboard)** cap WebGL fires + empty-state/navigate 时 dispose(review 修复)。逻辑:v3.1.2 的 WebGL 动画在空态/页面切换时不释放 context,多次进出页面累积 context 泄漏 → 浏览器 context 上限(约 16 个)后新动画全黑;加「每行限一次 fire + 空态/导航时 dispose context」。index.html +41。 **6. f9a4d6c · chore(release): v3.1.3** 当天第 2 版。harden WebGL pool fire(context leak fixes)——5 的加固版。 **7. add9bd4 ★ · fix(reliability)** release 按 account id + self-update 非零退出。逻辑:systemd 场景下 update 脚本静默 0 退出会让 systemd 以为更新成功、不重启 → 旧版继续跑;改非零退出让 systemd 感知需要重启。 **8. a228daa ★ · fix(deploy)** Dockerfile 默认 DEVIN_CONNECT=1 + update.sh dirty/ahead 时 fails closed。逻辑:git 目录脏/落后于远端时 update 继续会留下半更新状态;改失败即停(fails closed)。 **9. a14fb2d · chore(release): v3.1.4** 当天第 3 版。fire lifecycle recovery + trend clamp + review fixes。 **10. 5464913 ★ · feat(a11y)** radiogroup/canvas/dialog 语义 + data-i18n-aria-label 运行时。逻辑:补齐原生 HTML 语义(radiogroup role、canvas 替代文本、dialog role)+ i18n 键在运行时写入 aria-label,修复读屏器读不到中文文案的问题。 **11. c41596c ★ · feat(i18n)** check-i18n #8 扫 App `