Skills Manager v1.25.2
发布日期:2026-07-03
递交范围:v1.25.1...v1.25.2
发布概览
- 面向两个最高优先级 P0 问题的数据可信补丁:项目工作区终于遵循符号链接模式;中央库配置损坏不再静默表现为「技能库被清空」。
用户可见更新
- 项目工作区现在遵循符号链接模式 —— 把技能安装到项目工作区、或从中心更新项目技能时,此前无论同步模式设成什么都是文件复制——这些链路从未「请求」过符号链接,所以 v1.23.1 的 Windows junction 修复帮不上忙、macOS 也同样受影响。现在它们与全局工作区一样严格遵循同步模式设置,并复用同一套平台回退逻辑。更新时若项目副本有未同步的本地修改会拒绝覆盖(与全局工作区的保护一致)。注意:项目里的符号链接指向本机中央库,不会随仓库带走——同步模式的设置说明已更新(#225、#202)。
- 中央库配置损坏不再表现为「所有技能丢失」 —— 当
repo-config.json无法读取、JSON 损坏或路径非法时,应用此前会静默回退到默认路径并在那里新建一个空库,看起来就是「技能库被重建、全没了」,而数据其实还在原来配置的目录里。现在设置页会显示警告横幅,说明已回退默认路径、数据仍在原配置位置(#228 追加报告)。 - 更安全的安装/更新护栏 —— 复制重叠护栏现在会在任何破坏性操作之前拒绝无法解析的源(缺失或悬空的符号链接)以及源/目标互相包含的情况,加固本地技能更新链路防止数据丢失(#199 加固)。
开发者与治理更新
- 中央库配置读取区分「缺失 / 有效 / 损坏」三态;新增
get_central_repo_warningscommand 为设置页横幅供数。 - 旧路径
.agent-skills迁移逻辑因执行顺序问题(条件在目录创建之后评估)早已是死代码;现在改为先迁移再建目录,并移除该路径上的一处home_dir().unwrap()。 - 全局本地技能更新(
update_agent_local_skill_from_center)同样接入同步模式设置。 - 新增 7 个单元测试:护栏边界(源缺失/悬空、互相包含)、符号链接根目录哈希、配置三态读取。根因与修复方案在实现前经过 codex 只读沙箱对抗性评审。
当前校验状态
- ✅ 跨平台构建通过(macOS Intel / macOS ARM / Windows x64 / Linux x64)
- ✅ TypeScript typecheck 通过
English release notes
Release date: 2026-07-03
Commit range: v1.25.1...v1.25.2
Release Overview
- A data-trust patch for the two top-ranked P0 issues: project workspaces finally honor symlink mode, and a broken central-library config no longer silently presents as an empty library.
User-facing
- Project workspaces now honor symlink mode — Installing a skill into a project workspace, or updating it from the center, always copied files no matter what the sync-mode setting said; these paths never requested a symlink, which is why the v1.23.1 Windows junction fix never helped and macOS was affected too. They now follow the sync-mode setting exactly like the global workspace, reusing the same platform fallbacks. Updating also refuses to overwrite a project copy that has unsynced local edits, mirroring the global-workspace protection. Note: project symlinks point at this machine's central library and won't travel with the repo — the sync-mode setting description now says so (#225, #202).
- A broken central-library config no longer looks like losing every skill — When
repo-config.jsonwas unreadable, corrupt, or contained an invalid path, the app silently fell back to the default location and created a fresh empty library there, presenting as "the library was rebuilt, all skills gone" while the data still sat at the configured path. Settings now shows a warning banner explaining the fallback and that the data is still at the previously configured location (#228 follow-up report). - Safer install/update guardrails — The copy-overlap guard now rejects a source that cannot be resolved (missing or dangling symlink) and mutual source/destination containment before any destructive step runs, hardening local-skill updates against data loss (#199 hardening).
Developer & Governance
- Central-repo config loading now distinguishes missing / valid / invalid states; new
get_central_repo_warningscommand feeds the Settings banner. - The legacy
.agent-skillsmigration ran after directory creation had already made its condition false (dead code since the ordering changed); it now runs first. Also removed ahome_dir().unwrap()on that path. - Global local-skill updates (
update_agent_local_skill_from_center) follow the sync-mode setting as well. - 7 new unit tests: guard edge cases (missing/dangling source, mutual containment), hashing through a symlinked root, and config three-state loading. Root causes and fix plans were adversarially reviewed (codex, read-only sandbox) before implementation.
Current Verification
- ✅ Cross-platform build passed (macOS Intel / macOS ARM / Windows x64 / Linux x64)
- ✅ TypeScript typecheck passed
完整变更:v1.25.1...v1.25.2