Repository navigation
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。