github xingkongliang/skills-manager v1.22.5
Skills Manager v1.22.5

latest releases: v1.43.1, v1.43.0, v1.42.2...
5 months ago

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: a no_upstream repo reports ahead = 0 (there is no @{upstream} to diff against), so the old committed || ahead > 0 condition skipped the first push entirely. It now also pushes when upstream_health === "no_upstream", relying on the backend push -u path 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 in run_git_checked; remote URLs are redacted. Previously the subsystem emitted no logs, leaving "sync silently did nothing" reports undiagnosable.
  • pull_unlocked now runs the merge via run_git and, on conflict, logs a warning, runs best-effort git merge --abort to clear the conflicted tree and MERGE_HEAD, then bails with a recognizable SYNC_CONFLICT error; 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_paths setting (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

Full changelog files: English | 中文

Don't miss a new skills-manager release

NewReleases is sending notifications on new releases.