Skip to content

Releases: weibaohui/dsh-sync

v0.4.8

Choose a tag to compare

@weibaohui weibaohui released this 07 Oct 06:19
468b21d

0.4.8

修复六条问题链,核心是阻断性的「点保存提示成功,重启 dsh 后设置回到默认」。

0.4.3 — 保存后重启回默认(阻断性修复)

  • 根因:可加载到的 @deepseek-ai/schemastery 是 3.18.1,没有 3.18.4 才引入的 .volatile(),导致 Config = undefined,宿主 ctx.settings.describe() 不再列出 dsh-sync,PUT /settings 走宿主通道抛 No configurable plugin entry,异常被 catch 成一行 warn、接口仍返回 200 —— 设置只活在内存里,重启即丢。
  • 修复:schemastery 移入 dependencies + loadSchemastery() 逐候选校验 .volatile();Config 永不为 undefined(自铸 Config 兜底);新增自持文件层 ~/.dsh/dsh-sync/settings.json(0600),保存即落盘,宿主写回失败也跨重启生效;新增 GET /dsh-sync/api/diag 排障端点,PUT 回传 persist{fileOk,hostOk},UI 不再假装成功。

0.4.4 — 面板/状态层与保存语义

  • 状态轮询失败不再静默(错误行 + 重试);用户编辑期间不再被轮询覆盖(dirtyRef);token 显示「已配置」标记;新增「清空仓库地址」按钮。
  • PUT 语义固定:null = 显式清除(含 clearedKeys 墓碑层防复活),'' = 保持不变(兼容旧客户端);响应回传 applied/ignored/cleared/persist。

0.4.5 — 多托管方与泄露风险闸门

  • 新增 GitHub / GitLab / Gitee 托管方(页面按钮组,默认 GitCode);provider 感知私仓校验,公共仓库一律拒绝保存;自建/未知主机返回 400 UNVERIFIED_REPO,用户显式确认风险后才放行。
  • 非 GitCode 的 PR/conflict/prune 返回明确错误而非静默失败;askpass 用户名按 provider(GitHub x-access-token)。

0.4.6 — Windows remote 镜像

  • 修复「远端为准」策略下覆盖循环静默空转(git 路径引号转义致 startsWith 恒 false):gitDiffNameStatus 改 -z 解析 + normGitPath 归一化。
  • 修复镜像写入行尾不一致(autocrlf 把 LF 写成 CRLF):shadowFileBuf 改从 git show HEAD:path 取仓库原始字节。

0.4.7 — 浏览远端报 400

  • 根因:浏览 ref(refs/dshsync/browse)相对远端 main 常处于回退状态,refspec 无 + 时 git 以 non-fast-forward 拒绝。
  • 修复:refspec 改为 +<branch>:refs/dshsync/browse(强制更新);客户端 getJson 失败时读响应体,不再只显示裸 HTTP 400。

0.4.8 — 桌面版 AI 对齐 + 同步基线失效

  • 桌面版 AI 智能对齐只报 fetch failed:apiproxy 基地址写死 3080,桌面宿主用随机端口 → 改用 ctx.webServer.port。
  • 远端 main 被改写后同步基线失效导致会话日志永久挂账:resolveSyncBase() 退化到 merge-base,revalidatePendingBoth() 自动销账失效挂账,runPush 未合并出口 restoreBaseline()。

离线测试 82 项全绿(macOS Node 22 真机复跑:82 pass / 0 fail / 0 skip,30s)。详细根因与验证见 #13。

v0.4.2 — 修复 Windows 路径转换导致 fetch failed (issue #10)

Choose a tag to compare

@weibaohui weibaohui released this 02 Oct 02:51

修复

Windows 下 AI 智能对齐/浏览远端报 fetch failed(issue #10)

根因是 Git for Windows 的 MSYS2 路径转换:在 Git Bash 里,传给原生 .exe 的参数会被重写,
目录名里的点被当成路径段拆开 —— C:\Users\x\.dsh\dsh-sync\repo 变成
C:\Users\x\dsh\dsh-sync\repo(点消失、多出一级),git 于是在不存在的目录里执行并报错。
这也解释了「手动在该目录里跑 git fetch 成功、插件却失败」。

官方定性为 wontfix:git-for-windows/git#685

两层防护

  • host 侧:git 子进程在 Windows 下自动注入 MSYS_NO_PATHCONV=1 + MSYS2_ARG_CONV_EXCL='*',
    仅作用于该子进程,不写全局环境(全局设置会破坏其它程序,官方专门警告过)。
  • AI 侧:三个 AI 提示词(冲突处理 / AI 智能对齐 / 远端对齐)加入 Windows 前置保险:
    判定平台 → 路径自检 → 每条 git 命令前置开关 → rev-parse --show-toplevel 验证目录真实可达后才动手;
    验证失败立即停止并如实汇报,不允许据错误目录判定「无冲突/无需修改」。

验证

  • 新增 test/win-pathconv.test.mjs(8 项契约测试)
  • 离线测试 60 项全绿(原 52 + 新 8)

请 Windows 用户更新验证

dsh plugin add @weibaohui/dsh-sync@0.4.2

更新后重试「AI 智能对齐」/「浏览远端」。若仍报错,请在 issue #10 附上 uname -s 输出与
完整报错(GIT_TRACE=1 更佳),以便定位是否还有其它链路。

v0.4.1

Choose a tag to compare

@weibaohui weibaohui released this 29 Sep 00:38

安全修复(issue #9)

  • AI agent 提示词不再携带 GitCode 访问令牌:需要凭据的 git 推送、PR 查询/合并收归 host 侧 prepareConflictTree / finalizeConflictBranch;agent 只做本地语义解冲突/合并,prompt 严禁一切网络操作。三个 AI 模板零凭据占位符(回归测试保障)
  • conflictMode=manual 关闭全部 AI 入口:/conflict/run、/align/run、/remote/align 一律 403(原实现只约束自动触发路径)
  • git 子进程凭证改经 GIT_ASKPASS env 注入:远端 URL 保持干净,argv 不再携带 token(ps 全机可见),.git/config 不落盘

真机/CI 测试发现并修复

  • mergeable 竞态:GitCode 在 push 后异步重算 mergeable,推送前的陈旧 false 不再一票否决(轮询 5×3s,参数可注入)
  • merge 身份依赖:prepareConflictTree 的 merge 显式内联 -c user.name=dsh-sync,无全局 git 身份的环境(CI/新机器)不再 128 失败
  • finalize push 补回 authEnv:resolve 后的推送经 GIT_ASKPASS 认证,不依赖本机 credential store

离线测试 52 项全绿(macOS + Linux CI);另在真实 GitCode 仓库完成 prepare→解冲突→finalize 全链路真机验证(凭证隔离模式,认证只走 askpass 一条通道)。

v0.4.0 — 多协议备份:WebDAV / 本地文件夹

Choose a tag to compare

@weibaohui weibaohui released this 27 Sep 23:17

多协议备份(WebDAV / 本地文件夹)+ 快照多协议通用上云 + ~/agents/skills 技能根。详见 README。

Full Changelog: v0.3.4...v0.4.0

v0.3.4

Choose a tag to compare

@weibaohui weibaohui released this 26 Sep 15:02

Full Changelog: v0.3.3...v0.3.4

v0.3.3

Choose a tag to compare

@weibaohui weibaohui released this 26 Sep 13:24

修复 dsh 0.1.7 下「打开对话」按钮消失:sessions.open 移除后改走 uiWorkspace.openSession,旧核自动回退。

v0.3.2

Choose a tag to compare

@weibaohui weibaohui released this 25 Sep 13:15

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@weibaohui weibaohui released this 25 Sep 12:39

Full Changelog: v0.3.0...v0.3.1

0.3.0 — 远端备份浏览+选择性拉取+AI对齐+文件预览

Choose a tag to compare

@weibaohui weibaohui released this 25 Sep 08:32

Full Changelog: v0.2.3...v0.3.0

v0.2.3

Choose a tag to compare

@weibaohui weibaohui released this 25 Sep 02:35

Full Changelog: v0.2.2...v0.2.3