Skip to content

v0.4.8

Latest

Choose a tag to compare

@weibaohui weibaohui released this 07 Oct 06:19
· 1 commit to main since this release
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。