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

latest releases: v1.40.0, v1.39.0, v1.38.0...
2 months ago

Skills Manager v1.28.0

发布日期:2026-07-04
递交范围:v1.27.0...v1.28.0

发布概览

  • 备份升级为真正的多设备同步:改动自动备份、在设备间自动流动;合并以技能为单位而不是文本行;冲突永不阻塞同步、永不覆盖你的工作——保留本机版本等你决定,每个选择前都有安全快照兜底。

用户可见更新

  • 自动备份 — 停止编辑约两分钟后,改动在后台自动提交并上传;退出应用时先在本地保存,下次启动补传。备份页新增开关(默认开启);备份失败会以状态卡片常驻显示人话原因,而不是一闪而过的提示。
  • 免操作双向同步 — 其他设备推送了更新时,后台轮次会自动合并进来并推送回去——连接同一备份的设备无需任何人点同步即可保持一致。「立即备份」随时可用。
  • 按技能合并 — 同步改为以技能对象为单位而非文本行:一台设备改名、另一台改内容会自动正确组合;删除只在对方未动过该技能时才传播;技能目录与其元数据永远成对移动。
  • 冲突等你决定,而不是挡住同步 — 同一技能在两台设备被同时修改时,其余技能照常同步;该技能保留本机版本,进入备份页「需要处理」列表,技能库卡片上也会出现琥珀色徽章。三选一:保留本机 / 使用远端 / 两个都保留(远端版本以「原名 (设备名)」落地为普通技能)——应用任一选择前都会先建安全快照,每个决定都可撤销。冲突未决期间,涉及该技能的远端更新会暂停自动同步,其余更新照常流动。
  • 备份按设备署名 — 每台设备都有名字(备份页可改);备份历史和合并摘要会显示每条变更来自哪台设备,「昨天 22:14 · 公司电脑 · 更新 3 个技能」读起来像时间线。
  • 同步撞车静默化解 — 备份时恰好另一台设备也在推送,不再弹出吓人的「需要修复」错误:整个同步作为一个事务执行,自动重新拉取、重新合并、重试上传。
  • 超大技能留在本机 — 超过 100 MB 的技能默认排除出备份(本机完全正常使用,备份页有标注)。已备份过的技能绝不会被悄悄移出;排除的技能瘦身后会自动重新进入备份。
  • 更完整的断开选项 — 「断开本机」之外,备份页新增「撤销授权」(按你的连接方式打开对应的 GitHub 管理页面,并断开本机)和危险区「删除远端备份」(经 GitHub 原生的输入仓库名确认流程)。
  • 一键重新连接 — 因 GitHub 授权被撤销或过期导致备份失败时,状态卡片会直接提供「重新连接 GitHub」按钮,原地重新走登录流程。
  • 旧版本混写保护 — 如果旧版 Skills Manager 写入了同一个备份,同步会检测到:无害写入放行并提醒升级;不安全的行级合并会被阻断并指出是哪台设备;从未被新版本触碰过的仓库保持旧同步行为不变。

开发者与治理更新

  • 新增 core/merge 合并引擎(merge-engine 设计 v4,经四轮 codex 设计评审):组件级三方决策(content / path / attrs 独立判定)、元数据规范重建保证字节级收敛(两侧合并同一对提交产出相同树 OID)、视角无关的路径碰撞重排(pending 占位者优先)、从严的合并树校验器(任何不变量违反即零变化中止)。
  • pending 冲突的真源是 commit trailer(Skills-Manager-Conflicts / Resolved),随 push/pull 跨设备传播、重克隆后可重建;隐藏 refs 以 staging→promote 两段式钉住对端版本防 GC;崩溃安全的应用序列(pre-merge/applying 锚点)+ 启动恢复协议(自动收敛工作区,用户改动救援为快照 tag,绝不静默覆盖)。
  • 协议标记(.skills-manager/protocol.json + commit trailer)随所有 app commit 写入,支撑两级旧客户端检测与 legacy 回退;应用自身的行级合并(逃生舱与 legacy 路径)也盖章,避免被其他设备误判。
  • 对象合并为默认引擎,merge_engine=system 为退出开关;GUI 同步与 CLI git pull 共用同一门控路径;新增单锁事务命令 git_backup_sync 取代前端 commit/pull/push 三段编排(push 被拒时锁内重试 fetch+merge ≤3 次)。
  • 两轮 codex 实现级代码评审(6 + 5 条发现):修复 checkout 回滚崩溃窗口、离线期间重声明后的陈旧冲突指针、UseRemote 嵌套路径数据丢失、超大排除在 init/restore/瘦身路径的缺口、未知认证方式的撤销页面误导;拒绝的发现均记录理由(其中一条以实证测试固化)。
  • 修复一个存量 reindex bug:合并后的技能路径链式重排会中途触发 central_path UNIQUE 约束;现在先把所有行停到占位路径再重写。
  • CLI 新增 git prune-sync-refs,清理 mirror 式推送带到远端的 refs/skills-manager/*;SQLite 迁移 v7 新增可重建的 pending_conflicts 投影表。
  • 后端测试从 304 增至 375(决策矩阵、树 OID 收敛、双仓库集成含 R3 反例、崩溃恢复分支、协议违规、阻尼、超大排除);README 备份章节与应用内帮助按重设计后的产品全文重写。

当前校验状态

  • ✅ 跨平台构建通过(macOS Intel / macOS ARM / Windows x64 / Linux x64)
  • ✅ TypeScript typecheck 通过

English release notes

Release date: 2026-07-04
Commit range: v1.27.0...v1.28.0

Release Overview

  • Backup becomes true multi-device sync: changes back up automatically and flow between your devices hands-free, merges understand skills instead of text lines, and a conflict never blocks a sync or overwrites your work — it waits for your decision with a safety snapshot behind every choice.

User-facing

  • Automatic backup — A couple of minutes after you stop editing, changes are committed and uploaded in the background; quitting the app saves locally first and the next launch uploads it. A new Backup-page toggle controls it (on by default), and a failed run stays visible as a status card with a plain-language reason instead of a vanishing toast.
  • Hands-free two-way sync — When another device pushed changes, the background round now merges them in and pushes back automatically — connected devices converge without anyone clicking Sync. Manual "Back Up Now" still works anytime.
  • Skill-aware merging — Syncs now merge per skill instead of per text line: renaming a skill on one machine combines cleanly with editing its content on another, deletions propagate only when the other side didn't touch the skill, and metadata always moves together with its folder.
  • Conflicts wait for you instead of blocking — If the same skill was edited on two devices at once, everything else syncs normally; that skill keeps your local version and appears under "Needs attention" on the Backup page and as an amber badge on its Library card. Choose keep mine / use remote / keep both (the remote copy lands as a normal skill named after its device) — a safety snapshot is taken before any choice, so every decision is undoable. While a conflict is open, remote changes to that skill pause automatic sync; everything else keeps flowing.
  • Backups signed by device — Each device gets a name (editable on the Backup page); backup history and merge summaries show which device made each change, so "yesterday 22:14 · Work Laptop · 3 skills updated" reads like a timeline.
  • Sync races resolved silently — Backing up while another device pushes at the same moment no longer surfaces as a scary "needs recovery" error: the whole sync runs as one transaction that automatically refetches, re-merges, and retries the upload.
  • Oversized skills stay local — Skills over 100 MB are excluded from backup by default (kept fully usable on this machine, labeled on the Backup page). Skills already backed up are never silently removed; shrink an excluded skill and it re-enters the backup automatically.
  • Fuller disconnect options — Alongside "Disconnect this machine", the Backup page now offers "Revoke authorization" (opens the right GitHub page for how you connected, then disconnects locally) and a danger-zone "Delete remote backup" routed through GitHub's own type-the-name confirmation.
  • Reconnect in one click — When the backup fails because the GitHub authorization was revoked or expired, the status card now offers "Reconnect GitHub" to run the sign-in again in place.
  • Protection against old app versions — If an older Skills Manager wrote to the same backup, syncing detects it: harmless writes proceed with an upgrade reminder, unsafe line-level merges are blocked with the device named, and repositories never touched by a new version keep the old sync behavior unchanged.

Developer & Governance

  • New core/merge engine (merge-engine design v4, four codex design reviews): component-level three-way decisions (content / path / attrs), canonical metadata rebuild for byte-identical convergence (tree-OID-equal merges on both devices), viewpoint-free path-collision reassignment with pending placeholders, and a strict merged-tree validator that aborts with zero changes on any invariant violation.
  • Pending conflicts derive from commit trailers (Skills-Manager-Conflicts / Resolved) so they replicate via push/pull and survive re-clones; hidden refs pin the counterpart version against GC with a staging→promote protocol; a crash-safe apply sequence (pre-merge/applying anchors) plus a startup recovery that settles the working tree and rescues user edits into snapshot tags.
  • Protocol markers (.skills-manager/protocol.json + commit trailer) ride every app commit, powering two-tier old-client detection with a legacy fallback; the app's own line merges (escape hatch and legacy path) are stamped so other devices don't misattribute them.
  • The object merge is the default engine with merge_engine=system as the opt-out; the GUI sync and CLI git pull share one gated path, and a new one-lock git_backup_sync command replaces the frontend commit/pull/push orchestration (push rejections retry fetch+merge up to 3×).
  • Two codex code reviews on the implementation (6 + 5 findings): fixed a checkout-rollback crash window, stale conflict pointers after offline re-declarations, UseRemote nested-path data loss, oversized-exclusion gaps in init/restore/shrink paths, and unknown-auth-method revocation; declined findings are documented with rationale (and one pinned by an empirical test).
  • Fixed a latent reindex bug: path reassignments between skills (rename chains after merges) could trip the central_path UNIQUE constraint mid-loop; rows now park on placeholders first.
  • CLI gains git prune-sync-refs to clean refs/skills-manager/* copies that mirror-style pushes uploaded to the remote; SQLite migration v7 adds the rebuildable pending_conflicts projection.
  • Backend test suite grows from 304 to 375 (decision matrix, tree-OID convergence, two-repo integration incl. the R3 counterexample, crash-recovery branches, protocol violations, damping, oversized exclusion); README backup section and the in-app help rewritten for the redesigned product.

Current Verification

  • ✅ Cross-platform build passed (macOS Intel / macOS ARM / Windows x64 / Linux x64)
  • ✅ TypeScript typecheck passed

完整变更v1.27.0...v1.28.0

Full changelog files: English | 中文

Don't miss a new skills-manager release

NewReleases is sending notifications on new releases.