Ð޸´ȫÏîĿÉó²éÎÊÌⲢ·¢²¼ v1.1.9

¸ÄÓñ¾»ú¶ÀÁ¢ CA£¬»ָ´ CLI TLS УÑ飬±£»¤ƾ¾ÝÓëÅäÖò¢·¢±£´档
Ð޸´ Cursor Êý¾ݡ¢»Ự·¾¶¡¢´úÀíÉúÃüÖÜÆڡ¢ģÐÍÇëÇóÓë Skills Îļþ²Ù×÷¡£
Ϊ¶ÀÁ¢ Tab ·þÎñÔö¼ӿͻ§¶˼øȨ£¬Éý¼¶ÒÀÀµÓ빤¾ßÁ´£¬ÍêÉƷ¢²¼ԪÐÅϢͬ²½¡£

Ñé֤£ºÁ½¸ö Go ģ¿éµIJâÊÔ/vet¡¢¹ؼüģ¿é race¡¢ǰ¶˲âÊÔ/Éú²ú¹¹½¨/Éó¼ơ¢
Go ¿ɴï©¶´ɨÃèÓë macOS/Linux ¿ÉÐÐģ¿齻²æ±àÒë¾ùͨ¹ý¡£
Windows ¸ôÀëÆô¶¯ͨ¹ý£»δÍê³ɵĵã»÷ðÑ̺ÍԭÉúƽ̨Ñé֤¼ûÉó²鱨¸档
This commit is contained in:
FuDie0915
2026-11-10 09:59:34 +08:00
parent db73cf5a39
commit 188225fae6
98 changed files with 3324 additions and 930 deletions

65
docs/review-v1.1.9.md Normal file
View File

@@ -0,0 +1,65 @@
# v1.1.9 项目审查
审查日期:2026-11-10。范围包括应用与 Wails 桥接、配置与前端、Cursor/CLI 集成、代理与 HTTP 服务、模型适配和流式协议、会话与用量存储、Skills、独立 Tab 服务、构建及发布脚本。
## 修复清单
| 类别 | 问题与处理 | 回归依据 |
|---|---|---|
| 证书 | 从运行代码和当前源码树移除共享 CA 私钥;每个本机用户数据目录持久保存独立私有 CA,私钥权限受保护,损坏时拒绝静默轮换 | 独立性、复用、损坏文件和密钥匹配测试 |
| 证书迁移 | 安装并验证新 CA 后按旧证书指纹清理信任;管理员与当前用户存储分别处理,取消或失败阻止启动 | 取消、重试、幂等和迁移脚本语法测试 |
| CLI | 恢复 TLS 验证,仅重定向 Cursor API,保留 SNI;兼容中文、空格、引号路径和原有附加 CA;移除继承的旧 bypass 配置 | Node HTTP/2、错误 CA、无效主机名及 Windows 启动器实测 |
| 凭据 | 前端日志不输出配置正文;旧敏感缓存迁移为偏好白名单;后端统一脱敏并保护日志文件 | 日志和缓存哨兵测试 |
| 配置 | 补齐 CLI HTTPS 端口的界面往返;通信 revision 做原子比较,冲突保留草稿;后端模型使用记录不被界面回写覆盖 | 后端 CAS、并发竞争及真实前端状态模块测试 |
| Cursor 数据 | 损坏设置原样保留;注入前备份受影响键,停止时只恢复仍由本应用占用的键 | 损坏文件、重复注入、用户并发修改测试 |
| 最近项目 | 保留顶层元数据、文件/工作区条目及未知字段;数据库更新失败时不删除聊天目录 | 数据库与 workspaceStorage 临时夹具测试 |
| 会话存储 | 拒绝点目录、分隔符、控制字符、NTFS 流及 Windows 保留名称 | 跨平台路径案例测试 |
| 生命周期 | HTTP/HTTPS 启动失败回滚;关闭超时后关闭连接、释放端口;串行化启停,保护初始化期间状态读取 | 端口重绑定、连接取消和 race 测试 |
| 协议 | 修复两处 Protobuf 锁复制;完整传递模型自定义头、Anthropic 扩展参数;处理特殊 Host 头 | go vet、模型本地 HTTP/SSE 集成测试 |
| 用量 | 测试夹具改用独立 filler ID,保留跨 500 个事件的去重验证 | 原失败测试恢复通过 |
| Tab 服务 | 客户端令牌与上游令牌分离;401、64 MiB 请求上限、取消和流式错误收口;配置变更与 URL 前缀正确生效 | 独立模块与应用转发集成测试 |
| 浏览器访问 | 本地 RPC/CORS 拒绝无关网站 Origin,允许原生请求和 Cursor/Wails 来源 | Origin 欺骗及本地请求测试 |
| 重定向 | 认证请求不向其他 origin 转发头和正文,保留同源重定向及取消语义 | 本地双服务器测试 |
| Skills | 拒绝卸载未知技能及穿过符号链接修改;保留自建文件、修改过的命令;覆盖前在本机私有数据目录备份 | 自建技能、命令保留及现有安装/刷新测试 |
| Windows 启动 | 快捷方式路径转义;增加 `--version` 和 `--no-auto-start`,支持隔离的只打开界面诊断 | 版本命令、隔离启动检查 |
| 构建 | 版本资源同步只修改版本字段,避免发布时重新生成并覆盖定制 Wails 模板 | 元信息同步和自定义构建文件保留测试 |
## 依赖与兼容
- Go 工具链固定为 1.26.10,语言基线 1.26.0;升级 x/net、x/text、go-git、go-billy 及必要传递依赖。
- Vue、Vite、PostCSS 及存在安全公告的传递依赖升级到修复版本,Wails JS runtime 固定为原已使用的 3.0.0-alpha.79。
- `uuid` 对 vite-plugin-top-level-await 的传递依赖覆盖为兼容其 v4/v5 调用 API 的 11.1.1;生产构建验证该兼容性。
- 修复版 esbuild 无法生成原 Safari 13 目标的解构语法降级,前端构建基线调整为 Safari 14.1。Windows WebView2 不受影响;本版不承诺旧版 Safari 内核。
## 验证记录
| 检查 | 结果 |
|---|---|
| 根 Go 模块 | `go test ./...` 与 `go vet ./...` 均通过 |
| 独立 Tab 模块 | 测试、`go vet` 与 `govulncheck` 均通过 |
| 并发检查 | 配置、backend、client、certs、skills 的 `go test -race` 通过,含启动状态轮询与关闭超时 |
| Go 漏洞扫描 | 0 条可达漏洞、0 条导入包漏洞;根模块有 4 条所需模块中未被本项目调用的公告,不能视为所有传递模块均无公告 |
| 前端 | 4 项 Node 测试通过;生产构建通过;Yarn audit 成功完成,286 项依赖、0 条漏洞 |
| macOS/Linux | `CGO_ENABLED=0`、amd64 下 certs、cursor、skills、netproxy、backend 模块编译通过;补齐仅 Windows 使用的安装路径扫描函数在其他平台的空实现 |
| Windows 启动 | 最终二进制以 `--no-auto-start` 在临时用户目录启动,窗口正常响应,WebView2 初始化成功,复用该隔离目录的本机 CA |
| 二进制 | Go 1.26.10、windows/amd64、production、CGO 关闭;`--version`、PE FileVersion 与 ProductVersion 均为 1.1.9 |
| 便携包 | ZIP 完整性检查通过,仅含 `windows-64.exe`;压缩包 19,780,599 字节,程序 53,621,248 字节 |
便携 ZIP:`local-cursor-v1.1.9-windows-x64-portable.zip`。SHA-256:
```text
8b7898f139983a7caad0bef45ae52d9c0a4789ebb41771682be92d455fb4e150
```
重点回归包含私有 CA/Node TLS/HTTP2、Windows PowerShell 路径和参数、多窗口保存竞争、异常关闭后端口重绑定、模型认证/SSE/取消、Tab 鉴权/超限/转发、未知数据字段保留、真实前端状态模块与凭据缓存。生产构建存在单个 JS chunk 超过 500 kB 的体积提示,不影响构建成功。
平台限制:本机为 Windows。Windows 窗口点击冒烟因 Computer Use 本地管道不可用未完成;已完成进程响应、日志和 WebView2 初始化检查,不能据此声称已人工确认所有界面交互。macOS/Linux 未运行原生 GUI、完整桌面打包或真实证书存储操作。自动化证书迁移测试使用模拟信任存储和脚本解析,不向本机系统信任库安装测试 CA;涉及 Cursor 数据的破坏性测试使用临时目录与测试数据库。
## 升级说明
1. 首次启动需要信任本机新证书并移除旧共享根证书,Windows 可能要求一次管理员授权。失败时可重试,模型配置和历史数据继续保留。
2. 本机 CA 私有文件为用户数据目录下的 `data/local-ca.pem`。不要将它放入仓库、发布包或共享给其他机器。旧私钥已经公开,删除旧发布页不能撤回公开过的内容;升级以移除旧根信任为准。
3. 远程 Tab 服务新增必填 `clientToken`,必须与上游 `token` 不同;应用配置的 `tabServerToken` 填对应客户端令牌。本机未启用 Tab 服务的用户不需要修改。
4. 被覆盖的 Skills 文件备份保存在本机数据目录的 `data/skill-backups/`;含自建文件的技能不会被无提示整体删除。
5. 多窗口配置冲突时保留编辑草稿,核对并刷新版本后重新保存。若目标模型已被其他窗口修改或删除,则不会把草稿写入其他模型。
6. 发布仅提供 Windows x64 便携 ZIP。旧发布页及附件会移除,旧标签和 Git 提交继续保留。