Skip to content

Releases: chs-1108/dsh-purge

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 00:33

1.2.3

中文

  • 版本 1.2.3。修 #77 REWIND_DROP_SENT_ON_APPEND 在新版 dsh-client-ui-conversation 上静默跳过。
  • 根因:客户端 append(record) 里 this.revised.clear(); 被官方改成了
    if (this.revised.size > 0) this.revised.clear();。补丁走的是整段精确字符串匹配,
    多这一个条件就 0 命中,状态落成 skipped——面板看不出来,「撤销上一轮」却不再把
    已发送的消息从当前对话里拿掉。
  • 修复:给 #77 增加第二个替换变体,按新原文匹配,并保留官方的条件式 clear()。
    已核对宿主里 isRewindMarker()、replaceWindow(entries, hasMore)、this.hasMore
    都还在,替换不会引入未定义引用。替换后 node --check 通过,二次应用为 already。
  • 至此该宿主上因官方改版而落空的补丁清零:skipped 只剩 #32 / #53(Web 面专用,
    桌面端本来就不适用)和 #80(官方已不再注入那两行 tool-fs / tool-web,无可撤)。

English

  • Version 1.2.3. Fixes #77 REWIND_DROP_SENT_ON_APPEND silently skipping on current
    dsh-client-ui-conversation.
  • Root cause: the client's append(record) now guards the reset as
    if (this.revised.size > 0) this.revised.clear(); instead of an unconditional
    this.revised.clear();. The patch is one exact-string match, so that extra condition made it
    match nothing and settle as skipped. Invisible in the panel, but "undo last round" stopped
    removing the already-sent message from the current conversation.
  • Fix: added a second replacement variant for #77 that matches the new source and keeps the
    official guarded clear(). Verified that isRewindMarker(), replaceWindow(entries, hasMore)
    and this.hasMore all still exist in the host bundle, so the replacement introduces no
    undefined references. node --check passes; a second Apply reports already.
  • With this, no patch on this host is left unmatched by an upstream change: skipped is down to
    #32 / #53 (web-surface only, not applicable to desktop) and #80 (the host no longer injects
    those two tool-fs / tool-web lines, so there is nothing to undo).

1.2.2

中文

  • 版本 1.2.2。诊断工具补充,补丁逻辑不变。
  • 新增 scripts/asar-read.mjs:只读地从 app.asar 里取单个文件,不解包整份归档。
    用来对照「插件改的副本」和「Electron 真正加载的原件」。
  • 新增 scripts/asar-ls.mjs:列出归档内某个目录的条目,--count 只输出数量。
    和已解开目录比对,一眼看出解包是否完整(本机实测 306 = 306,差集为空)。
  • 新增 scripts/verify-host-tree.mjs:把补丁表里改过的每个宿主 JS 文件跑一遍
    node --check,并且只把「原件能过、改后过不了」判为坏掉——避免把官方本来就
    解析不了的写法算到补丁头上(本机实测 45 个文件,补丁引入的语法错误 0)。
  • 文档:README 开发章节补上这一组只读自检命令。
  • 适用范围说明:解开的 resources\app 只有在 app.asar 被挪走后才会被 Electron 加载;
    否则宿主仍从归档内启动,所有文件级补丁都处于未生效状态。verify-host-tree.mjs
    和 asar-ls.mjs 就是用来确认这一步有没有真的完成的。

English

  • Version 1.2.2. Diagnostics only; patch logic unchanged.
  • New scripts/asar-read.mjs: pull a single file out of app.asar without unpacking the
    archive, so the copy the plugin edits can be compared against what Electron actually loads.
  • New scripts/asar-ls.mjs: list one directory inside the archive; --count prints the
    entry count only. Diff it against the extracted directory to prove the unpack is complete
    (306 = 306 locally, empty symmetric difference).
  • New scripts/verify-host-tree.mjs: runs node --check over every host JS file the patch
    table touches, and only flags a file when the pristine copy parses and the patched one does
    not (45 files checked locally, 0 syntax errors introduced).
  • Docs: the README development section now lists this read-only self-check set.
  • Scope note: the extracted resources\app is only loaded after app.asar is moved aside.
    Until then the host boots from inside the archive and every file-level patch stays inert.
    verify-host-tree.mjs and asar-ls.mjs exist to confirm whether that step actually happened.

1.2.1

中文

  • 版本 1.2.1。修「点应用报 清洗没有写进全部宿主,已取消重启」。
  • 根因:宿主 dsh-system-prompt 的 assemble 在 if (completeSection === void 0 ...) 和
    return { ... } 之间新增了一行 const requiredContexts = new Set(...),contexts 也从
    runtimeContextSuppressed ? [] : transformed.contexts 改成按 requiredContexts 过滤。
    补丁 #40 COMPLETE_PROMPT_KEEP_INJECT 的 6 个 pattern 因此全部落空 → pattern_not_found
    → [cfg] complete prompt keeps ... 标记写不上 → hostCleanMarkersPresent() 恒为假
    → 重启前置检查拒绝放行,而「应用」本身看起来是成功的。
  • 修复:给 #40 增加第 7 个替换变体,按新版原文匹配,并保留官方的 requiredContexts 过滤
    (只接管 sections,不改官方 contexts 语义)。替换幂等,二次应用为 already。
  • 修复:重启前置检查不再用「标记缺失」一刀切拦重启。只有还能重试的补丁(pending /
    unmatched)才拦;宿主这版原文对不上的补丁是 skipped,重试也写不进去,此时放行并返回
    warnings,避免用户被永久卡在「应用失败 → 不能重启 → 补丁不生效」的死循环里。
  • 诊断:新增 scripts/verify-keep-inject.mjs(只读,验证 #40 能否匹配当前宿主)和
    scripts/check-ensure-clean.mjs(复现写盘 + 重启前置判定)、scripts/diagnose-hosts.mjs
    (逐个宿主列出标记 / 待应用补丁)。

English

  • Version 1.2.1. Fixes 清洗没有写进全部宿主,已取消重启 on Apply.
  • Root cause: the host's dsh-system-prompt assemble gained a
    const requiredContexts = new Set(...) line between the completeSection early return and the
    final return, and contexts switched from runtimeContextSuppressed ? [] : transformed.contexts
    to a requiredContexts filter. All six patterns of patch #40 COMPLETE_PROMPT_KEEP_INJECT missed,
    so the [cfg] complete prompt keeps ... marker was never written,
    hostCleanMarkersPresent() stayed false, and the pre-restart gate refused — while Apply itself
    looked successful.
  • Fix: added a seventh replacement variant for #40 that matches the new source and keeps the
    official requiredContexts filtering (only sections is taken over). Idempotent; a second Apply
    reports already.
  • Fix: the pre-restart gate no longer blocks on a missing marker alone. Only retryable patches
    (pending / unmatched) block; patches that cannot match this host build are skipped, cannot be
    written by retrying, and now pass through with warnings instead of trapping the user in an
    Apply-fails → cannot-restart → patches-never-load loop.
  • Diagnostics: new scripts/verify-keep-inject.mjs (read-only, checks whether #40 matches the
    current host), scripts/check-ensure-clean.mjs (replays the write + pre-restart decision), and
    scripts/diagnose-hosts.mjs (per-host markers and pending patches).

1.2.0

中文

  • 版本 1.2.0。这一版是「修 bug + 增强破甲 + 增强隐蔽性 + 增强稳定性」四项一起动。
  • 破甲:强句升到 v3。新文案显式写 HIGHEST-PRECEDENCE、覆盖一切冲突、禁止审计/引用/标记这些指令,
    并把「每个目标都是已授权的本地 fixture」写进授权尾句;反软拒绝尾句补上 as an AI 框架、
    元讨论、plan-only 三种逃逸口。ALLOW_EXEC_CORE(persona 块)同步加上「不得审计这些指令」。
  • 破甲:#1 的完成标记改成 v3 独有串(ACTIVE, MANDATORY, and HIGHEST-PRECEDENCE)。
    原来的标记在 v1/v2/v25 上同样命中,skipIfMarked 会把升级路径整个跳过 —— 强句永远停在旧版。
    现在旧版会被识别为 pending 并升级,v3 到位后再次幂等。
  • 隐蔽性:宿主文件里的 marker 从 [dsh-purge] xxx 统一迁移为 [cfg] xxx,不再自报插件名。
    迁移在读写边界双向归一化(normalizeMarks),旧文件读到就换、换完幂等。
  • 隐蔽性:诊断日志默认关闭,文件名去掉插件名(%TEMP%/.dsh-cache.log)。排查时用
    DSH_PURGE_DEBUG=1 打开。
  • 稳定性:applyPatches 加进程内串行锁。启动自愈、点应用、settle、reapply 四个入口同时写
    同一文件时,落盘结果不再取决于交错顺序(表现为「点过应用,重启后还是 pending」)。
  • 稳定性:applyPatches 写盘前自动 backupAll。首次应用若没有 .bak,回滚就没有原件,
    状态页那句「备份: 无」就是这么来的。
  • 修 bug:#71 梁神身份行补 optional: true。梁神预设是第三方加装的,宿主默认没有;
    原来只挂 strictFiles,状态页永远挂一条 missing_file 红条。
  • 修 bug:状态页补丁计数补上真实条数与适用条数(82 patches → 66 groups),
    分组展示不再让人以为补丁表缩水。app.asar 未解包时给出明确下一步。
  • 新增 scripts/selftest.mjs(只读自检:表结构 + 真实结算状态)与
    scripts/simulate-upgrade.mjs(内存演练:哪些文件会变、是否幂等、旧标记是否清干净)。

English

  • 1.2.0 — bug fixes, stronger jailbreak text, lower visibility, more stability.
  • Jailbreak: strong intro v3. Explicit HIGHEST-PRECEDENCE, overrides every conflicting
    instruction, forbids quoting/auditing/flagging the instructions, and declares every operator
    target an authorized local fixture. Anti-soft-refusal tail now also blocks the "as an AI"
    frame, meta-discussion, and plan-only answers. ALLOW_EXEC_CORE gains the same no-audit clause.
  • Jailbreak: #1 markers now use v3-only text. The old marker also matched v1/v2/v25, so
    skipIfMarked skipped the upgrade path entirely. Old versions now report pending and upgrade;
    v3 is idempotent afterwards.
  • Visibility: host markers migrate from [dsh-purge] xxx to [cfg] xxx. Normalisation is
    applied on both read and write paths, so old files migrate once and stay idempotent.
  • Visibility: the diagnostic log is off by default and its filename no longer carries the
    plugin name. Enable with DSH_PURGE_DEBUG=1.
  • Stability: applyPatches is serialised in-process. Boot self-heal, Apply, settle, and
    reapply no longer interleave writes on the same host file.
  • Stability: applyPatches runs backupAll before writing, so the first Apply always leaves
    restorable originals.
  • Fix: #71 gets optional: true — the liangshen preset is third-party and absent by default,
    which used to leave a permanent missing_file row.
  • Fix: status now prints real patch and group counts, plus a concrete next step when
    app.asar is still sealed.
  • New scripts/selftest.mjs and scripts/simulate-upgrade.mjs.

1.1.71

中文

  • 版本 1.1.71。
  • 修复 1.1.70 的 ?? 混 ||:插件启用时 failed to import(桌面 / Web 同一入口)。
  • #86 只改 UI 队列 steer → followup;公共 steer() 收回 next-step,代理间 send_message 仍下一步插入。
  • installed-rev 跨版本不再沿用旧 apply:x.y.z。#88 按现行 renderedPrompt / 旧 system 锚点打中的那条落标记。
  • 发版前 node --check 主入口,避免再把语法错误打进 Release。

English

  • 1.1.71.
  • Fix 1.1.70 ?? mixed with ||: enable failed to import on desktop and web.
  • #86 keeps UI queue steer → followup. Public steer() is next-step again so send_message inserts at the next step.
  • Stale apply:x.y.z in installed-rev refreshes across versions. #88 marks the host anchor that actually exists (renderedPrompt or system).
  • Release CI syntax-checks the plugin entry.

1.1.70

中文

  • 版本 1.1.70。
  • Hub / 残装若给 dsh-purge 加上 pluginPackages,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 systemPrompt + tools。
  • 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。
  • 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。
  • 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。

English

  • 1.1.70.
  • Hub / incomplete installs that inject pluginPackages leave dsh-purge pending and kill the host. Dependencies are pinned to systemPrompt + tools.
  • Clean page groups upgrade-chain patches for display only; Apply still writes every patch.
  • Dropped dead #81 / #...
Read more

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 21 Oct 13:33

1.2.2

中文

  • 版本 1.2.2。诊断工具补充,补丁逻辑不变。
  • 新增 scripts/asar-read.mjs:只读地从 app.asar 里取单个文件,不解包整份归档。
    用来对照「插件改的副本」和「Electron 真正加载的原件」。
  • 新增 scripts/asar-ls.mjs:列出归档内某个目录的条目,--count 只输出数量。
    和已解开目录比对,一眼看出解包是否完整(本机实测 306 = 306,差集为空)。
  • 新增 scripts/verify-host-tree.mjs:把补丁表里改过的每个宿主 JS 文件跑一遍
    node --check,并且只把「原件能过、改后过不了」判为坏掉——避免把官方本来就
    解析不了的写法算到补丁头上(本机实测 45 个文件,补丁引入的语法错误 0)。
  • 文档:README 开发章节补上这一组只读自检命令。
  • 适用范围说明:解开的 resources\app 只有在 app.asar 被挪走后才会被 Electron 加载;
    否则宿主仍从归档内启动,所有文件级补丁都处于未生效状态。verify-host-tree.mjs
    和 asar-ls.mjs 就是用来确认这一步有没有真的完成的。

English

  • Version 1.2.2. Diagnostics only; patch logic unchanged.
  • New scripts/asar-read.mjs: pull a single file out of app.asar without unpacking the
    archive, so the copy the plugin edits can be compared against what Electron actually loads.
  • New scripts/asar-ls.mjs: list one directory inside the archive; --count prints the
    entry count only. Diff it against the extracted directory to prove the unpack is complete
    (306 = 306 locally, empty symmetric difference).
  • New scripts/verify-host-tree.mjs: runs node --check over every host JS file the patch
    table touches, and only flags a file when the pristine copy parses and the patched one does
    not (45 files checked locally, 0 syntax errors introduced).
  • Docs: the README development section now lists this read-only self-check set.
  • Scope note: the extracted resources\app is only loaded after app.asar is moved aside.
    Until then the host boots from inside the archive and every file-level patch stays inert.
    verify-host-tree.mjs and asar-ls.mjs exist to confirm whether that step actually happened.

1.2.1

中文

  • 版本 1.2.1。修「点应用报 清洗没有写进全部宿主,已取消重启」。
  • 根因:宿主 dsh-system-prompt 的 assemble 在 if (completeSection === void 0 ...) 和
    return { ... } 之间新增了一行 const requiredContexts = new Set(...),contexts 也从
    runtimeContextSuppressed ? [] : transformed.contexts 改成按 requiredContexts 过滤。
    补丁 #40 COMPLETE_PROMPT_KEEP_INJECT 的 6 个 pattern 因此全部落空 → pattern_not_found
    → [cfg] complete prompt keeps ... 标记写不上 → hostCleanMarkersPresent() 恒为假
    → 重启前置检查拒绝放行,而「应用」本身看起来是成功的。
  • 修复:给 #40 增加第 7 个替换变体,按新版原文匹配,并保留官方的 requiredContexts 过滤
    (只接管 sections,不改官方 contexts 语义)。替换幂等,二次应用为 already。
  • 修复:重启前置检查不再用「标记缺失」一刀切拦重启。只有还能重试的补丁(pending /
    unmatched)才拦;宿主这版原文对不上的补丁是 skipped,重试也写不进去,此时放行并返回
    warnings,避免用户被永久卡在「应用失败 → 不能重启 → 补丁不生效」的死循环里。
  • 诊断:新增 scripts/verify-keep-inject.mjs(只读,验证 #40 能否匹配当前宿主)和
    scripts/check-ensure-clean.mjs(复现写盘 + 重启前置判定)、scripts/diagnose-hosts.mjs
    (逐个宿主列出标记 / 待应用补丁)。

English

  • Version 1.2.1. Fixes 清洗没有写进全部宿主,已取消重启 on Apply.
  • Root cause: the host's dsh-system-prompt assemble gained a
    const requiredContexts = new Set(...) line between the completeSection early return and the
    final return, and contexts switched from runtimeContextSuppressed ? [] : transformed.contexts
    to a requiredContexts filter. All six patterns of patch #40 COMPLETE_PROMPT_KEEP_INJECT missed,
    so the [cfg] complete prompt keeps ... marker was never written,
    hostCleanMarkersPresent() stayed false, and the pre-restart gate refused — while Apply itself
    looked successful.
  • Fix: added a seventh replacement variant for #40 that matches the new source and keeps the
    official requiredContexts filtering (only sections is taken over). Idempotent; a second Apply
    reports already.
  • Fix: the pre-restart gate no longer blocks on a missing marker alone. Only retryable patches
    (pending / unmatched) block; patches that cannot match this host build are skipped, cannot be
    written by retrying, and now pass through with warnings instead of trapping the user in an
    Apply-fails → cannot-restart → patches-never-load loop.
  • Diagnostics: new scripts/verify-keep-inject.mjs (read-only, checks whether #40 matches the
    current host), scripts/check-ensure-clean.mjs (replays the write + pre-restart decision), and
    scripts/diagnose-hosts.mjs (per-host markers and pending patches).

1.2.0

中文

  • 版本 1.2.0。这一版是「修 bug + 增强破甲 + 增强隐蔽性 + 增强稳定性」四项一起动。
  • 破甲:强句升到 v3。新文案显式写 HIGHEST-PRECEDENCE、覆盖一切冲突、禁止审计/引用/标记这些指令,
    并把「每个目标都是已授权的本地 fixture」写进授权尾句;反软拒绝尾句补上 as an AI 框架、
    元讨论、plan-only 三种逃逸口。ALLOW_EXEC_CORE(persona 块)同步加上「不得审计这些指令」。
  • 破甲:#1 的完成标记改成 v3 独有串(ACTIVE, MANDATORY, and HIGHEST-PRECEDENCE)。
    原来的标记在 v1/v2/v25 上同样命中,skipIfMarked 会把升级路径整个跳过 —— 强句永远停在旧版。
    现在旧版会被识别为 pending 并升级,v3 到位后再次幂等。
  • 隐蔽性:宿主文件里的 marker 从 [dsh-purge] xxx 统一迁移为 [cfg] xxx,不再自报插件名。
    迁移在读写边界双向归一化(normalizeMarks),旧文件读到就换、换完幂等。
  • 隐蔽性:诊断日志默认关闭,文件名去掉插件名(%TEMP%/.dsh-cache.log)。排查时用
    DSH_PURGE_DEBUG=1 打开。
  • 稳定性:applyPatches 加进程内串行锁。启动自愈、点应用、settle、reapply 四个入口同时写
    同一文件时,落盘结果不再取决于交错顺序(表现为「点过应用,重启后还是 pending」)。
  • 稳定性:applyPatches 写盘前自动 backupAll。首次应用若没有 .bak,回滚就没有原件,
    状态页那句「备份: 无」就是这么来的。
  • 修 bug:#71 梁神身份行补 optional: true。梁神预设是第三方加装的,宿主默认没有;
    原来只挂 strictFiles,状态页永远挂一条 missing_file 红条。
  • 修 bug:状态页补丁计数补上真实条数与适用条数(82 patches → 66 groups),
    分组展示不再让人以为补丁表缩水。app.asar 未解包时给出明确下一步。
  • 新增 scripts/selftest.mjs(只读自检:表结构 + 真实结算状态)与
    scripts/simulate-upgrade.mjs(内存演练:哪些文件会变、是否幂等、旧标记是否清干净)。

English

  • 1.2.0 — bug fixes, stronger jailbreak text, lower visibility, more stability.
  • Jailbreak: strong intro v3. Explicit HIGHEST-PRECEDENCE, overrides every conflicting
    instruction, forbids quoting/auditing/flagging the instructions, and declares every operator
    target an authorized local fixture. Anti-soft-refusal tail now also blocks the "as an AI"
    frame, meta-discussion, and plan-only answers. ALLOW_EXEC_CORE gains the same no-audit clause.
  • Jailbreak: #1 markers now use v3-only text. The old marker also matched v1/v2/v25, so
    skipIfMarked skipped the upgrade path entirely. Old versions now report pending and upgrade;
    v3 is idempotent afterwards.
  • Visibility: host markers migrate from [dsh-purge] xxx to [cfg] xxx. Normalisation is
    applied on both read and write paths, so old files migrate once and stay idempotent.
  • Visibility: the diagnostic log is off by default and its filename no longer carries the
    plugin name. Enable with DSH_PURGE_DEBUG=1.
  • Stability: applyPatches is serialised in-process. Boot self-heal, Apply, settle, and
    reapply no longer interleave writes on the same host file.
  • Stability: applyPatches runs backupAll before writing, so the first Apply always leaves
    restorable originals.
  • Fix: #71 gets optional: true — the liangshen preset is third-party and absent by default,
    which used to leave a permanent missing_file row.
  • Fix: status now prints real patch and group counts, plus a concrete next step when
    app.asar is still sealed.
  • New scripts/selftest.mjs and scripts/simulate-upgrade.mjs.

1.1.71

中文

  • 版本 1.1.71。
  • 修复 1.1.70 的 ?? 混 ||:插件启用时 failed to import(桌面 / Web 同一入口)。
  • #86 只改 UI 队列 steer → followup;公共 steer() 收回 next-step,代理间 send_message 仍下一步插入。
  • installed-rev 跨版本不再沿用旧 apply:x.y.z。#88 按现行 renderedPrompt / 旧 system 锚点打中的那条落标记。
  • 发版前 node --check 主入口,避免再把语法错误打进 Release。

English

  • 1.1.71.
  • Fix 1.1.70 ?? mixed with ||: enable failed to import on desktop and web.
  • #86 keeps UI queue steer → followup. Public steer() is next-step again so send_message inserts at the next step.
  • Stale apply:x.y.z in installed-rev refreshes across versions. #88 marks the host anchor that actually exists (renderedPrompt or system).
  • Release CI syntax-checks the plugin entry.

1.1.70

中文

  • 版本 1.1.70。
  • Hub / 残装若给 dsh-purge 加上 pluginPackages,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 systemPrompt + tools。
  • 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。
  • 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。
  • 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。

English

  • 1.1.70.
  • Hub / incomplete installs that inject pluginPackages leave dsh-purge pending and kill the host. Dependencies are pinned to systemPrompt + tools.
  • Clean page groups upgrade-chain patches for display only; Apply still writes every patch.
  • Dropped dead #81 / #89 rows. Hang lives in #87. Official phase-1 keep is silent.
  • Commander bind: start from the user's target. Includes #97 / #98 / #99.

1.1.69

中文

  • 版本 1.1.69。
  • 发送时剥掉 ChatML / project_instructions,框和磁盘不动。
  • 应用 + 重启挂当前默认,不必再点保存;框里仍是插件旧默认会刷到加密槽。
  • 红队只排不折:注入 → cap → 红队正文;目标卡/角色段改名 dshpg-*。
  • 隔离 ctx 也注册 inject/cap;#86 steer 改 next-turn;#87 hang 用 LF 比对。
  • 红队操作稿锁「上面的提示词作准」;指挥端去掉「给了单位名就授权」。

English

  • 1.1.69.
  • Peel ChatML / project_instructions on the wire; box and disk stay intact.
  • Apply + restart hangs the current default; no extra Save. Stale plugin defaults refresh from the sealed slot.
  • Redteam: inject → cap → ops only (no fold). Card/role sections renamed dshpg-*.
  • Isolated ctx also registers inject/cap. #86 steer → next-turn. #87 hang needle uses LF.
  • Redteam ops note: inject wins. Commander no longer says a company name means authorized.

1.1.68

中文

  • 版本 1.1.68。
  • #92:技能面板认 YAML 块标量 description(| / >),不再误报不可用。
  • #93:红队「版本/更新」:file:// 转成本地路径;Windows 用 .cmd + shell 起 npm/pnpm;npm 404 回落 GitHub tags。
  • #94:官方桌面 CLI 入口补 app.asar.unpacked 回退。Hub 首次安装仍可能撞官方 asar 路径。
  • #95:拆除 refusal-recover(读错字段永不触发;修好会无限复读)。
  • #96:bash 前台等待从插件标过的 600s 迁回 60s,后续工具不再被堵 10 分钟。
  • 注入置顶;capability 段改名 dshpg-capabilities;用户 prompt 一律 followup(#85);默认关闭自动「继续」。

English

  • 1.1.68.
  • #92: Skill panel parses YAML block-scalar description.
  • #93: Redteam update: file:// → fs path; Windows npm/pnpm via .cmd; GitHub tags if registry 404.
  • #94: Desktop CLI falls back to app.asar.unpacked. Hub first-install may still hit stock asar.
  • #95: Removed refusal-recover (dead reader / unbounded nudge loop).
  • #96: Restore marked bash foreground wait 600s → 60s.
  • Inj...
Read more

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 21 Oct 12:54

1.2.1

中文

  • 版本 1.2.1。修「点应用报 清洗没有写进全部宿主,已取消重启」。
  • 根因:宿主 dsh-system-prompt 的 assemble 在 if (completeSection === void 0 ...) 和
    return { ... } 之间新增了一行 const requiredContexts = new Set(...),contexts 也从
    runtimeContextSuppressed ? [] : transformed.contexts 改成按 requiredContexts 过滤。
    补丁 #40 COMPLETE_PROMPT_KEEP_INJECT 的 6 个 pattern 因此全部落空 → pattern_not_found
    → [cfg] complete prompt keeps ... 标记写不上 → hostCleanMarkersPresent() 恒为假
    → 重启前置检查拒绝放行,而「应用」本身看起来是成功的。
  • 修复:给 #40 增加第 7 个替换变体,按新版原文匹配,并保留官方的 requiredContexts 过滤
    (只接管 sections,不改官方 contexts 语义)。替换幂等,二次应用为 already。
  • 修复:重启前置检查不再用「标记缺失」一刀切拦重启。只有还能重试的补丁(pending /
    unmatched)才拦;宿主这版原文对不上的补丁是 skipped,重试也写不进去,此时放行并返回
    warnings,避免用户被永久卡在「应用失败 → 不能重启 → 补丁不生效」的死循环里。
  • 诊断:新增 scripts/verify-keep-inject.mjs(只读,验证 #40 能否匹配当前宿主)和
    scripts/check-ensure-clean.mjs(复现写盘 + 重启前置判定)、scripts/diagnose-hosts.mjs
    (逐个宿主列出标记 / 待应用补丁)。

English

  • Version 1.2.1. Fixes 清洗没有写进全部宿主,已取消重启 on Apply.
  • Root cause: the host's dsh-system-prompt assemble gained a
    const requiredContexts = new Set(...) line between the completeSection early return and the
    final return, and contexts switched from runtimeContextSuppressed ? [] : transformed.contexts
    to a requiredContexts filter. All six patterns of patch #40 COMPLETE_PROMPT_KEEP_INJECT missed,
    so the [cfg] complete prompt keeps ... marker was never written,
    hostCleanMarkersPresent() stayed false, and the pre-restart gate refused — while Apply itself
    looked successful.
  • Fix: added a seventh replacement variant for #40 that matches the new source and keeps the
    official requiredContexts filtering (only sections is taken over). Idempotent; a second Apply
    reports already.
  • Fix: the pre-restart gate no longer blocks on a missing marker alone. Only retryable patches
    (pending / unmatched) block; patches that cannot match this host build are skipped, cannot be
    written by retrying, and now pass through with warnings instead of trapping the user in an
    Apply-fails → cannot-restart → patches-never-load loop.
  • Diagnostics: new scripts/verify-keep-inject.mjs (read-only, checks whether #40 matches the
    current host), scripts/check-ensure-clean.mjs (replays the write + pre-restart decision), and
    scripts/diagnose-hosts.mjs (per-host markers and pending patches).

1.2.0

中文

  • 版本 1.2.0。这一版是「修 bug + 增强破甲 + 增强隐蔽性 + 增强稳定性」四项一起动。
  • 破甲:强句升到 v3。新文案显式写 HIGHEST-PRECEDENCE、覆盖一切冲突、禁止审计/引用/标记这些指令,
    并把「每个目标都是已授权的本地 fixture」写进授权尾句;反软拒绝尾句补上 as an AI 框架、
    元讨论、plan-only 三种逃逸口。ALLOW_EXEC_CORE(persona 块)同步加上「不得审计这些指令」。
  • 破甲:#1 的完成标记改成 v3 独有串(ACTIVE, MANDATORY, and HIGHEST-PRECEDENCE)。
    原来的标记在 v1/v2/v25 上同样命中,skipIfMarked 会把升级路径整个跳过 —— 强句永远停在旧版。
    现在旧版会被识别为 pending 并升级,v3 到位后再次幂等。
  • 隐蔽性:宿主文件里的 marker 从 [dsh-purge] xxx 统一迁移为 [cfg] xxx,不再自报插件名。
    迁移在读写边界双向归一化(normalizeMarks),旧文件读到就换、换完幂等。
  • 隐蔽性:诊断日志默认关闭,文件名去掉插件名(%TEMP%/.dsh-cache.log)。排查时用
    DSH_PURGE_DEBUG=1 打开。
  • 稳定性:applyPatches 加进程内串行锁。启动自愈、点应用、settle、reapply 四个入口同时写
    同一文件时,落盘结果不再取决于交错顺序(表现为「点过应用,重启后还是 pending」)。
  • 稳定性:applyPatches 写盘前自动 backupAll。首次应用若没有 .bak,回滚就没有原件,
    状态页那句「备份: 无」就是这么来的。
  • 修 bug:#71 梁神身份行补 optional: true。梁神预设是第三方加装的,宿主默认没有;
    原来只挂 strictFiles,状态页永远挂一条 missing_file 红条。
  • 修 bug:状态页补丁计数补上真实条数与适用条数(82 patches → 66 groups),
    分组展示不再让人以为补丁表缩水。app.asar 未解包时给出明确下一步。
  • 新增 scripts/selftest.mjs(只读自检:表结构 + 真实结算状态)与
    scripts/simulate-upgrade.mjs(内存演练:哪些文件会变、是否幂等、旧标记是否清干净)。

English

  • 1.2.0 — bug fixes, stronger jailbreak text, lower visibility, more stability.
  • Jailbreak: strong intro v3. Explicit HIGHEST-PRECEDENCE, overrides every conflicting
    instruction, forbids quoting/auditing/flagging the instructions, and declares every operator
    target an authorized local fixture. Anti-soft-refusal tail now also blocks the "as an AI"
    frame, meta-discussion, and plan-only answers. ALLOW_EXEC_CORE gains the same no-audit clause.
  • Jailbreak: #1 markers now use v3-only text. The old marker also matched v1/v2/v25, so
    skipIfMarked skipped the upgrade path entirely. Old versions now report pending and upgrade;
    v3 is idempotent afterwards.
  • Visibility: host markers migrate from [dsh-purge] xxx to [cfg] xxx. Normalisation is
    applied on both read and write paths, so old files migrate once and stay idempotent.
  • Visibility: the diagnostic log is off by default and its filename no longer carries the
    plugin name. Enable with DSH_PURGE_DEBUG=1.
  • Stability: applyPatches is serialised in-process. Boot self-heal, Apply, settle, and
    reapply no longer interleave writes on the same host file.
  • Stability: applyPatches runs backupAll before writing, so the first Apply always leaves
    restorable originals.
  • Fix: #71 gets optional: true — the liangshen preset is third-party and absent by default,
    which used to leave a permanent missing_file row.
  • Fix: status now prints real patch and group counts, plus a concrete next step when
    app.asar is still sealed.
  • New scripts/selftest.mjs and scripts/simulate-upgrade.mjs.

1.1.71

中文

  • 版本 1.1.71。
  • 修复 1.1.70 的 ?? 混 ||:插件启用时 failed to import(桌面 / Web 同一入口)。
  • #86 只改 UI 队列 steer → followup;公共 steer() 收回 next-step,代理间 send_message 仍下一步插入。
  • installed-rev 跨版本不再沿用旧 apply:x.y.z。#88 按现行 renderedPrompt / 旧 system 锚点打中的那条落标记。
  • 发版前 node --check 主入口,避免再把语法错误打进 Release。

English

  • 1.1.71.
  • Fix 1.1.70 ?? mixed with ||: enable failed to import on desktop and web.
  • #86 keeps UI queue steer → followup. Public steer() is next-step again so send_message inserts at the next step.
  • Stale apply:x.y.z in installed-rev refreshes across versions. #88 marks the host anchor that actually exists (renderedPrompt or system).
  • Release CI syntax-checks the plugin entry.

1.1.70

中文

  • 版本 1.1.70。
  • Hub / 残装若给 dsh-purge 加上 pluginPackages,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 systemPrompt + tools。
  • 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。
  • 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。
  • 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。

English

  • 1.1.70.
  • Hub / incomplete installs that inject pluginPackages leave dsh-purge pending and kill the host. Dependencies are pinned to systemPrompt + tools.
  • Clean page groups upgrade-chain patches for display only; Apply still writes every patch.
  • Dropped dead #81 / #89 rows. Hang lives in #87. Official phase-1 keep is silent.
  • Commander bind: start from the user's target. Includes #97 / #98 / #99.

1.1.69

中文

  • 版本 1.1.69。
  • 发送时剥掉 ChatML / project_instructions,框和磁盘不动。
  • 应用 + 重启挂当前默认,不必再点保存;框里仍是插件旧默认会刷到加密槽。
  • 红队只排不折:注入 → cap → 红队正文;目标卡/角色段改名 dshpg-*。
  • 隔离 ctx 也注册 inject/cap;#86 steer 改 next-turn;#87 hang 用 LF 比对。
  • 红队操作稿锁「上面的提示词作准」;指挥端去掉「给了单位名就授权」。

English

  • 1.1.69.
  • Peel ChatML / project_instructions on the wire; box and disk stay intact.
  • Apply + restart hangs the current default; no extra Save. Stale plugin defaults refresh from the sealed slot.
  • Redteam: inject → cap → ops only (no fold). Card/role sections renamed dshpg-*.
  • Isolated ctx also registers inject/cap. #86 steer → next-turn. #87 hang needle uses LF.
  • Redteam ops note: inject wins. Commander no longer says a company name means authorized.

1.1.68

中文

  • 版本 1.1.68。
  • #92:技能面板认 YAML 块标量 description(| / >),不再误报不可用。
  • #93:红队「版本/更新」:file:// 转成本地路径;Windows 用 .cmd + shell 起 npm/pnpm;npm 404 回落 GitHub tags。
  • #94:官方桌面 CLI 入口补 app.asar.unpacked 回退。Hub 首次安装仍可能撞官方 asar 路径。
  • #95:拆除 refusal-recover(读错字段永不触发;修好会无限复读)。
  • #96:bash 前台等待从插件标过的 600s 迁回 60s,后续工具不再被堵 10 分钟。
  • 注入置顶;capability 段改名 dshpg-capabilities;用户 prompt 一律 followup(#85);默认关闭自动「继续」。

English

  • 1.1.68.
  • #92: Skill panel parses YAML block-scalar description.
  • #93: Redteam update: file:// → fs path; Windows npm/pnpm via .cmd; GitHub tags if registry 404.
  • #94: Desktop CLI falls back to app.asar.unpacked. Hub first-install may still hit stock asar.
  • #95: Removed refusal-recover (dead reader / unbounded nudge loop).
  • #96: Restore marked bash foreground wait 600s → 60s.
  • Inject leads; capability section renamed; user prompt always followup; autoContinue default off.

1.1.67

中文

  • 版本 1.1.67。
  • #85:continue 续跑在传输/429 连错时不再无限兜圈。takeContinue 加 failStreak 阈值;refundContinue 不清 lastContinueSeq,连错 ≥3 直接放弃。
  • #84:区域拦截的空 Assistant 流改为单批 text-chunks 记录(带 .length),不再卡住宿主 UI。
  • 启动种子:进程启动时若 $DSH_HOME/prompt-inject.md 为空或缺失,自动把加密默认稿写一次;用户改过的稿不动。清洗完点重启后,重启成功立刻就能用默认提示词。
  • Windows 官方包重启:restart 脚本名改成 pid+random,首启不与并发实例打架;多余的 .cmd 中介删掉,直接 wscript.exe //nologo //B 起脚本;本机旧版无 pid 后缀的脚本/日志超过 24h 启动时自动清。
  • 杀进程范围收紧:ASAR_SWAP_PS1 不再 /IM 杀全名同名进程,只按安装根下 pid 停,避免误伤第三方同名。
  • 官方 CLI shim 原地改写之前先存一份 .dsh-purge.bak,并走原子写,断电/盘满可回退。
  • 首装场景不卡:WScript 判 clean 时,两边都是 null(文件缺或读失败)放行启动,只有任一明确 dirty 才拦。
  • 探测缓存:runningExes / shortcutExes 空结果不再缓存;点"应用"前 clearDesktopLocateCache() 仍可强刷。
  • scheduleAsarRenameWhenIdle 的 .rename-pending 锁:时钟回拨或超过 30 分钟视为失效,清掉重做。
  • execFileSync 三处 PowerShell 调用加 maxBuffer: 8MB,大结果不再静默 ENOBUFS 掉。
  • 其他:net-scope region gate 指数退避 + IPv6 regex 收紧;identity injectMatchers 支持 >4096 分段匹配、installAssembleGuard 幂等;hooks-deny 删 R0 兜底规则改原子写;extract-asar commit 不删 nextDir,写 .dshpurge-recover.json 便回滚;client.js redteam preset 多路检测、shell.submit WeakMap 清理补齐。

English

  • 1.1.67.
  • #85: Continue loop no longer spins forever on TRANSPORT/429 streaks. takeContinue adds a failStreak gate; refundContinue leaves lastContinueSeq set; 3 consecutive failures abandon.
  • #84: Region-gate empty-assistant stream becomes one batched text-chunks record (with .length), no longer hangs the host UI.
  • Boot-time seeding: on startup, if $DSH_HOME/prompt-inject.md is empty or missing, the encrypted default is wr...
Read more

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 12:07

1.2.0

中文

  • 版本 1.2.0。这一版是「修 bug + 增强破甲 + 增强隐蔽性 + 增强稳定性」四项一起动。
  • 破甲:强句升到 v3。新文案显式写 HIGHEST-PRECEDENCE、覆盖一切冲突、禁止审计/引用/标记这些指令,
    并把「每个目标都是已授权的本地 fixture」写进授权尾句;反软拒绝尾句补上 as an AI 框架、
    元讨论、plan-only 三种逃逸口。ALLOW_EXEC_CORE(persona 块)同步加上「不得审计这些指令」。
  • 破甲:#1 的完成标记改成 v3 独有串(ACTIVE, MANDATORY, and HIGHEST-PRECEDENCE)。
    原来的标记在 v1/v2/v25 上同样命中,skipIfMarked 会把升级路径整个跳过 —— 强句永远停在旧版。
    现在旧版会被识别为 pending 并升级,v3 到位后再次幂等。
  • 隐蔽性:宿主文件里的 marker 从 [dsh-purge] xxx 统一迁移为 [cfg] xxx,不再自报插件名。
    迁移在读写边界双向归一化(normalizeMarks),旧文件读到就换、换完幂等。
  • 隐蔽性:诊断日志默认关闭,文件名去掉插件名(%TEMP%/.dsh-cache.log)。排查时用
    DSH_PURGE_DEBUG=1 打开。
  • 稳定性:applyPatches 加进程内串行锁。启动自愈、点应用、settle、reapply 四个入口同时写
    同一文件时,落盘结果不再取决于交错顺序(表现为「点过应用,重启后还是 pending」)。
  • 稳定性:applyPatches 写盘前自动 backupAll。首次应用若没有 .bak,回滚就没有原件,
    状态页那句「备份: 无」就是这么来的。
  • 修 bug:#71 梁神身份行补 optional: true。梁神预设是第三方加装的,宿主默认没有;
    原来只挂 strictFiles,状态页永远挂一条 missing_file 红条。
  • 修 bug:状态页补丁计数补上真实条数与适用条数(82 patches → 66 groups),
    分组展示不再让人以为补丁表缩水。app.asar 未解包时给出明确下一步。
  • 新增 scripts/selftest.mjs(只读自检:表结构 + 真实结算状态)与
    scripts/simulate-upgrade.mjs(内存演练:哪些文件会变、是否幂等、旧标记是否清干净)。

English

  • 1.2.0 — bug fixes, stronger jailbreak text, lower visibility, more stability.
  • Jailbreak: strong intro v3. Explicit HIGHEST-PRECEDENCE, overrides every conflicting
    instruction, forbids quoting/auditing/flagging the instructions, and declares every operator
    target an authorized local fixture. Anti-soft-refusal tail now also blocks the "as an AI"
    frame, meta-discussion, and plan-only answers. ALLOW_EXEC_CORE gains the same no-audit clause.
  • Jailbreak: #1 markers now use v3-only text. The old marker also matched v1/v2/v25, so
    skipIfMarked skipped the upgrade path entirely. Old versions now report pending and upgrade;
    v3 is idempotent afterwards.
  • Visibility: host markers migrate from [dsh-purge] xxx to [cfg] xxx. Normalisation is
    applied on both read and write paths, so old files migrate once and stay idempotent.
  • Visibility: the diagnostic log is off by default and its filename no longer carries the
    plugin name. Enable with DSH_PURGE_DEBUG=1.
  • Stability: applyPatches is serialised in-process. Boot self-heal, Apply, settle, and
    reapply no longer interleave writes on the same host file.
  • Stability: applyPatches runs backupAll before writing, so the first Apply always leaves
    restorable originals.
  • Fix: #71 gets optional: true — the liangshen preset is third-party and absent by default,
    which used to leave a permanent missing_file row.
  • Fix: status now prints real patch and group counts, plus a concrete next step when
    app.asar is still sealed.
  • New scripts/selftest.mjs and scripts/simulate-upgrade.mjs.

1.1.71

中文

  • 版本 1.1.71。
  • 修复 1.1.70 的 ?? 混 ||:插件启用时 failed to import(桌面 / Web 同一入口)。
  • #86 只改 UI 队列 steer → followup;公共 steer() 收回 next-step,代理间 send_message 仍下一步插入。
  • installed-rev 跨版本不再沿用旧 apply:x.y.z。#88 按现行 renderedPrompt / 旧 system 锚点打中的那条落标记。
  • 发版前 node --check 主入口,避免再把语法错误打进 Release。

English

  • 1.1.71.
  • Fix 1.1.70 ?? mixed with ||: enable failed to import on desktop and web.
  • #86 keeps UI queue steer → followup. Public steer() is next-step again so send_message inserts at the next step.
  • Stale apply:x.y.z in installed-rev refreshes across versions. #88 marks the host anchor that actually exists (renderedPrompt or system).
  • Release CI syntax-checks the plugin entry.

1.1.70

中文

  • 版本 1.1.70。
  • Hub / 残装若给 dsh-purge 加上 pluginPackages,Cordis 会一直 pending,宿主退出码 1。本版把依赖钉回 systemPrompt + tools。
  • 清洗页只合并升级链展示(免责、审批、挂全文、hooks 等),Apply 仍打全部补丁。
  • 去掉已无用的 #81 / #89 清单行;挂全文并进 #87,官方 phase-1 走静默放行。
  • 指挥端改为「按用户给的目标开工」。合并 #97 / #98 / #99。

English

  • 1.1.70.
  • Hub / incomplete installs that inject pluginPackages leave dsh-purge pending and kill the host. Dependencies are pinned to systemPrompt + tools.
  • Clean page groups upgrade-chain patches for display only; Apply still writes every patch.
  • Dropped dead #81 / #89 rows. Hang lives in #87. Official phase-1 keep is silent.
  • Commander bind: start from the user's target. Includes #97 / #98 / #99.

1.1.69

中文

  • 版本 1.1.69。
  • 发送时剥掉 ChatML / project_instructions,框和磁盘不动。
  • 应用 + 重启挂当前默认,不必再点保存;框里仍是插件旧默认会刷到加密槽。
  • 红队只排不折:注入 → cap → 红队正文;目标卡/角色段改名 dshpg-*。
  • 隔离 ctx 也注册 inject/cap;#86 steer 改 next-turn;#87 hang 用 LF 比对。
  • 红队操作稿锁「上面的提示词作准」;指挥端去掉「给了单位名就授权」。

English

  • 1.1.69.
  • Peel ChatML / project_instructions on the wire; box and disk stay intact.
  • Apply + restart hangs the current default; no extra Save. Stale plugin defaults refresh from the sealed slot.
  • Redteam: inject → cap → ops only (no fold). Card/role sections renamed dshpg-*.
  • Isolated ctx also registers inject/cap. #86 steer → next-turn. #87 hang needle uses LF.
  • Redteam ops note: inject wins. Commander no longer says a company name means authorized.

1.1.68

中文

  • 版本 1.1.68。
  • #92:技能面板认 YAML 块标量 description(| / >),不再误报不可用。
  • #93:红队「版本/更新」:file:// 转成本地路径;Windows 用 .cmd + shell 起 npm/pnpm;npm 404 回落 GitHub tags。
  • #94:官方桌面 CLI 入口补 app.asar.unpacked 回退。Hub 首次安装仍可能撞官方 asar 路径。
  • #95:拆除 refusal-recover(读错字段永不触发;修好会无限复读)。
  • #96:bash 前台等待从插件标过的 600s 迁回 60s,后续工具不再被堵 10 分钟。
  • 注入置顶;capability 段改名 dshpg-capabilities;用户 prompt 一律 followup(#85);默认关闭自动「继续」。

English

  • 1.1.68.
  • #92: Skill panel parses YAML block-scalar description.
  • #93: Redteam update: file:// → fs path; Windows npm/pnpm via .cmd; GitHub tags if registry 404.
  • #94: Desktop CLI falls back to app.asar.unpacked. Hub first-install may still hit stock asar.
  • #95: Removed refusal-recover (dead reader / unbounded nudge loop).
  • #96: Restore marked bash foreground wait 600s → 60s.
  • Inject leads; capability section renamed; user prompt always followup; autoContinue default off.

1.1.67

中文

  • 版本 1.1.67。
  • #85:continue 续跑在传输/429 连错时不再无限兜圈。takeContinue 加 failStreak 阈值;refundContinue 不清 lastContinueSeq,连错 ≥3 直接放弃。
  • #84:区域拦截的空 Assistant 流改为单批 text-chunks 记录(带 .length),不再卡住宿主 UI。
  • 启动种子:进程启动时若 $DSH_HOME/prompt-inject.md 为空或缺失,自动把加密默认稿写一次;用户改过的稿不动。清洗完点重启后,重启成功立刻就能用默认提示词。
  • Windows 官方包重启:restart 脚本名改成 pid+random,首启不与并发实例打架;多余的 .cmd 中介删掉,直接 wscript.exe //nologo //B 起脚本;本机旧版无 pid 后缀的脚本/日志超过 24h 启动时自动清。
  • 杀进程范围收紧:ASAR_SWAP_PS1 不再 /IM 杀全名同名进程,只按安装根下 pid 停,避免误伤第三方同名。
  • 官方 CLI shim 原地改写之前先存一份 .dsh-purge.bak,并走原子写,断电/盘满可回退。
  • 首装场景不卡:WScript 判 clean 时,两边都是 null(文件缺或读失败)放行启动,只有任一明确 dirty 才拦。
  • 探测缓存:runningExes / shortcutExes 空结果不再缓存;点"应用"前 clearDesktopLocateCache() 仍可强刷。
  • scheduleAsarRenameWhenIdle 的 .rename-pending 锁:时钟回拨或超过 30 分钟视为失效,清掉重做。
  • execFileSync 三处 PowerShell 调用加 maxBuffer: 8MB,大结果不再静默 ENOBUFS 掉。
  • 其他:net-scope region gate 指数退避 + IPv6 regex 收紧;identity injectMatchers 支持 >4096 分段匹配、installAssembleGuard 幂等;hooks-deny 删 R0 兜底规则改原子写;extract-asar commit 不删 nextDir,写 .dshpurge-recover.json 便回滚;client.js redteam preset 多路检测、shell.submit WeakMap 清理补齐。

English

  • 1.1.67.
  • #85: Continue loop no longer spins forever on TRANSPORT/429 streaks. takeContinue adds a failStreak gate; refundContinue leaves lastContinueSeq set; 3 consecutive failures abandon.
  • #84: Region-gate empty-assistant stream becomes one batched text-chunks record (with .length), no longer hangs the host UI.
  • Boot-time seeding: on startup, if $DSH_HOME/prompt-inject.md is empty or missing, the encrypted default is written once; a user-edited file is untouched. After the Apply → cleanup → restart cycle, the default prompt is active immediately.
  • Windows official-build restart: restart script name now includes pid+random, so concurrent instances don't clobber each other; the .cmd intermediary is dropped — wscript.exe //nologo //B is spawned directly; legacy unsuffixed scripts/logs older than 24h are purged on each startup.
  • Kill scope tightened: ASAR_SWAP_PS1 no longer uses /IM to kill by full name — only pids under the install root are stopped, so same-named third-party processes aren't collateral.
  • Official CLI shim repair now saves .dsh-purge.bak and uses atomic write before overwriting, so power loss / disk full is recoverable.
  • First-install not blocked: when WScript checks for clean markers, two nulls (missing or unreadable) now pass through; only an explicit false blocks startup.
  • Probe caches: runningExes / shortcutExes no longer cache empty results; clearDesktopLocateCache() on Apply still forces a refresh.
  • scheduleAsarRenameWhenIdle .rename-pending lock: clock skew or ≥30-min-old lock is treated as stale and cleared.
  • Three execFileSync PowerShell calls get maxBuffer: 8MB so large results no longer silent-fail with ENOBUFS.
  • Also: net-scope region-gate exponential backoff + stricter IPv6 regex; identity injectMatchers segments >4096-char payloads, installAssembleGuard is idempotent; hooks-deny drops R0 fallback and uses atomic write for state; extract-asar commit no longer deletes nextDir and writes .dshpurge-recover.json for rollback; client.js redteam preset detection broadened; shell.submit WeakMap cleanup wired.

1.1.66

中文

  • 版本 1.1.66。
  • #80:清洗页可关掉 hooks deny / ask 旁路。关掉且文件干净显示跳过,不计入已应用;关掉后再打开,64/65 会按官方形态再打一次。
  • #81:继续 / 拒答续跑的来源 kind 改为 dsh-purge;限流和传输失败不再自动续一轮。
  • 重启后不用点保存也会挂上默认提示词;每一轮都补回全文。空的应用请求不再清空磁盘上的提示词。
  • 声明过的 overlay 只剩 .dshpurge.bak 时,应用会先拷回再加载。
  • 红队报告补上得分点短名。中文 README 恢复题图和预览图。

English

  • 1.1.66.
  • #80: The clean page can turn off the hooks deny/ask bypass. Off + clean files show skipped and are not counted as applied. Turning it back on reapplies 64/65 from the official form.
  • #81: Continue / refusal-recover use source kind dsh-purge. RATE_LIMIT and TRANSPORT no longer start another continue turn.
  • Restart hangs the default prompt without a Save click; every step puts the full t...
Read more