Skills Manager v1.22.5
发布日期:2026-06-01
递交范围:v1.22.4...v1.22.5
发布概览
- 一个 Git 同步可靠性版本:对全新空远程的「首次备份」现在会真正上传,不再只显示「已同步」却让远程保持空仓;两台机器改了同一个技能造成的冲突可以优雅恢复,而不是把技能库卡死;Git 操作现在会写日志,方便排查同步问题。同时内置 agent 也支持编辑项目级技能路径。
用户可见更新
- 首次备份到新远程会真正上传了 —— 对着一个全新的空仓库设置备份时,以前只会在本地提交、却从不推送,于是「同步」显示「已同步」而远程一直是空的。现在首次同步会正确执行初始推送(并建立 upstream 跟踪),新远程会按预期被填充(#162、#179、#116)。
- 同步冲突可恢复,不再弄坏技能库 —— 两台机器改了同一个技能并都点了同步时,合并冲突会让仓库进入卡死状态,阻塞之后所有同步(甚至可能导致软件打不开)。现在同步会自动回滚失败的合并,并提供一键「从远程重新克隆」恢复,仅本地存在的技能会被保留(#169)。
- 内置 agent 支持编辑项目级技能路径 —— 之前只有自定义 agent 才能设置的「项目级技能路径」(及恢复默认)现在对内置 agent 也可用。无论全局路径还是项目路径,每一行都会在悬停时显示编辑/重置操作。
开发者与治理更新
- 修复
handleGitSync的推送判定:no_upstream状态下ahead恒为 0(没有@{upstream}可比较),导致旧的committed || ahead > 0条件完全跳过首次推送。现在当upstream_health === "no_upstream"时也会推送,依赖后端的push -u路径建立跟踪。 - 为 Git 备份子系统加入结构化日志(
init/set_remote/commit/push/pull/snapshot/restore/clone/reclone,INFO 级),并在run_git_checked设单一 WARN 失败汇聚点;远程 URL 会脱敏。此前该子系统不产生任何日志,使得「同步悄无声息什么都没做」类问题无法排查。 pull_unlocked现在通过run_git执行合并,冲突时记录警告、best-effort 执行git merge --abort清理冲突工作树和MERGE_HEAD,再以可识别的SYNC_CONFLICT错误返回;前端据此路由到恢复对话框(冲突态仅提供重新克隆)。新增回归测试覆盖「首次推送到空远程」和「双方冲突后中止」。- 内置 agent 的项目路径覆盖保存在新设置项
custom_tool_project_paths(留空或与内置默认相同即清除覆盖);设置页路径 UI 已统一,全局行和项目行共用同样的右对齐悬停操作。
当前校验状态
- ✅ 跨平台构建通过(macOS Intel / macOS ARM / Windows x64 / Linux x64)
- ✅ TypeScript typecheck 通过
English release notes
Release date: 2026-06-01
Commit range: v1.22.4...v1.22.5
Release Overview
- A Git-sync reliability release: the very first backup to a fresh remote now actually uploads instead of silently reporting "Up to date", conflicting edits from two machines recover gracefully instead of wedging the library, and Git operations are now logged so sync problems can be diagnosed. Built-in agents also gain editable project skill paths.
User-facing
- First backup to a new remote now uploads — Setting up backup against a freshly created empty repository used to commit everything locally but never push, so Sync reported "Up to date" while the remote stayed empty. The first sync now correctly performs the initial push (setting up upstream tracking), so a new remote is populated as expected (#162, #179, #116).
- Sync conflicts recover instead of breaking the library — When two machines edited the same skill and both synced, the merge conflict left the repository in a stuck state that blocked all future syncs (and could even prevent the app from loading). Sync now rolls back the failed merge automatically and offers a one-click "re-clone from remote" recovery, with skills that exist only locally preserved (#169).
- Built-in agents get editable project skill paths — The per-project skills path (and reset-to-default) that was previously only available for custom agents now works for built-in agents too. Each path row exposes edit/reset actions on hover for both the global and project paths.
Developer & Governance
- Fixed the sync push gate in
handleGitSync: ano_upstreamrepo reportsahead = 0(there is no@{upstream}to diff against), so the oldcommitted || ahead > 0condition skipped the first push entirely. It now also pushes whenupstream_health === "no_upstream", relying on the backendpush -upath to establish tracking. - Added structured logging across the Git backup subsystem (
init/set_remote/commit/push/pull/snapshot/restore/clone/reclone) at INFO, with a single WARN failure chokepoint inrun_git_checked; remote URLs are redacted. Previously the subsystem emitted no logs, leaving "sync silently did nothing" reports undiagnosable. pull_unlockednow runs the merge viarun_gitand, on conflict, logs a warning, runs best-effortgit merge --abortto clear the conflicted tree andMERGE_HEAD, then bails with a recognizableSYNC_CONFLICTerror; the frontend routes that to the recovery dialog (re-clone only for conflicts). Regression tests cover first-push-to-empty-remote and the two-sided conflict abort.- Built-in agent project-path overrides persist in a new
custom_tool_project_pathssetting (an empty value or one equal to the built-in default clears the override); the Settings path UI was unified so global and project rows share the same right-aligned hover actions.
Current Verification
- ✅ Cross-platform build passed (macOS Intel / macOS ARM / Windows x64 / Linux x64)
- ✅ TypeScript typecheck passed
完整变更:v1.22.4...v1.22.5