Skip to content

Releases: lzzzz666888/dsh-purge-optimized

Release list

v1.1.91-opt.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 15:06

1.1.91-opt.1

中文

  • 版本 1.1.91-opt.1,上游基线 1.1.90。衍生分支,不是上游版本。
  • 恢复技能库:skills/redteam/ 从 1.1.71 逐字节搬回 23 个技能,package.json 的 files 重新包含 "skills"。1.1.90 打包时丢了这个目录,installBundledSkills() 一直返回 {action:'missing'},一个文件都不落盘,而提示词和 skill-fixes.js 仍在引用 gogo-intranet / fscan-intranet 这些名字。
  • 恢复知识库:store-core.js 的 dispatch 不再短路 pocSearch|pocList|pocGet|pocSave|pocUpdate|pocDelete|pocUse|pocStats,tools.js 删除 KB_DISABLED 常量与 6 处早退。底层 SQLite 方法原本就完整,只是上层被封。
    • pocGet 未命中返回 {ok:false,error} 而不是 throw;pocUpdate 外层补 try/catch。
    • 5 个工具的 execute() 原本漏写 args 参数(早退导致永不执行到),一并补成 (args, exec)。
  • 恢复本地靶场白名单:writeAllowText() 在 1.1.90 里是空函数,写入不落盘;readAllowExact / permittedHost / isOwnNetwork / isSkippedV4 被整个删除。现已按原逻辑恢复,并补回设置页的输入框与保存按钮(1.1.90 只剩一个标题)。
  • 模板索引增强:searchTemplates() 增加 offset / matched / byCategory 与每项的 category / categoryName;templateStats() 增加 byCategory。上游 1.1.90 的界面对着这三个字段取值,但后端一个都不返回,翻页与类目条实际是死的(1.1.71 同样如此)。
  • 页签接回:侧栏 tabs 补回「知识库」「技能库」,路由从「三条全给 EnvTab」拆成三条独立路由。
  • 保持不动:isLocalLabV4 私网门禁、lookupIps 的 DNS 解析判定(2s 超时 / 5s 缓存 / 256 条上限)、isCheatTask 游戏外挂拦截、tools/pre-execute 钩子、8 个证据链工具、presets/redteam/agent.cordis.yml 里已删除的 toolFilter(0.2.1 写回会让整份预设注册失败)。
  • 归属:本分支为 Apache-2.0,上游版权归 HunYiSage;NOTICE 保留上游原文,仅追加本分支说明。

English

  • 1.1.91-opt.1, based on upstream 1.1.90. Derivative branch, not an upstream release.
  • Skill library restored: the 23 skills under skills/redteam/ are copied byte-for-byte from 1.1.71 and files in package.json includes "skills" again. Upstream 1.1.90 stopped shipping that directory, so installBundledSkills() always returned {action:'missing'} and copied nothing, while the prompts and skill-fixes.js still referenced names like gogo-intranet and fscan-intranet.
  • Knowledge base re-enabled: store-core.js no longer short-circuits pocSearch|pocList|pocGet|pocSave|pocUpdate|pocDelete|pocUse|pocStats, and tools.js drops the KB_DISABLED constant plus its six early returns. The SQLite layer underneath was intact the whole time.
    • pocGet returns {ok:false,error} on a miss instead of throwing; pocUpdate is wrapped in try/catch.
    • Five tools had execute() without an args parameter because the early return made that unreachable; they now take (args, exec).
  • Local-lab allowlist restored: writeAllowText() was an empty stub in 1.1.90 that never wrote to disk, and readAllowExact / permittedHost / isOwnNetwork / isSkippedV4 had been deleted. The original behaviour is back, together with the settings panel textarea and save button (1.1.90 had reduced that block to a bare heading).
  • Template index improved: searchTemplates() now returns offset / matched / byCategory plus per-item category / categoryName; templateStats() gains byCategory. The 1.1.90 UI reads all three, but the backend returned none of them, so pagination and the category bar were inert (1.1.71 had the same bug).
  • Tabs reconnected: the sidebar tabs list includes Knowledge and Skills again, and the three previously merged routes each get their own branch instead of all falling through to EnvTab.
  • Left untouched: the isLocalLabV4 private-network gate, the lookupIps DNS check (2s timeout / 5s cache / 256 entries), isCheatTask game-cheat interception, the tools/pre-execute hook, the eight evidence-chain tools, and the removed toolFilter in presets/redteam/agent.cordis.yml (writing it back breaks preset registration on 0.2.1).
  • Attribution: this branch is Apache-2.0; upstream copyright stays with HunYiSage. NOTICE keeps the upstream text and only appends a branch note.

1.1.90

中文

  • 版本 1.1.90。
  • #208 Android 切后台回来输入框整块消失:撤销按钮原先注册在宿主的 conversation.input.right 槽位,这个槽位渲染在 composer 的 React 子树里。宿主在提交阶段只要抛一次错,React 会把整棵树卸载,症状就是输入框连带按钮一起没了。
    • 撤销按钮不再走任何槽位。改为在 body 上挂一个 position: fixed 的宿主节点,用 createPortal 把按钮传进去,渲染树完全脱离 composer;composer 内部再出错也牵连不到它。
    • 位置按最靠下的那组 .standardControls(就是 composer 底部工具条)的矩形实时对齐,并给它留 padding-left 空位,不遮住模型选择器;预留宽度跟着按钮实测宽度走。
    • 会话切换、窗口尺寸变化、页面滚动都会重新对齐;没有会话时按钮不显示、留白也一起归还。
    • 锚点查找带缓存和节流,只在锚点缺失或掉线时才扫一次 DOM,长会话滚动不受影响。
  • 验证:client.js 语法检查通过;conversation.input.right 在本插件中已无任何注册点;双宿主 standardControls 类名核对一致。

English

  • 1.1.90.
  • #208 the whole composer vanished after switching apps: the undo button was registered into the host's conversation.input.right slot, which renders inside the composer's React subtree. One throw during a commit phase makes React unmount that tree, and the input box goes with it.
    • The undo button no longer uses any slot. It renders through createPortal into a position: fixed host appended to body, fully outside the composer subtree, so a composer error can no longer take it down.
    • It aligns itself to the rectangle of the bottom-most .standardControls (the composer toolbar) and reserves padding-left there so the model picker is not covered; the reserved width follows the button's measured width.
    • It re-aligns on session change, resize and scroll, and releases both the button and the reserved space when there is no session.
    • Anchor lookup is cached and throttled: the DOM is scanned only when the anchor is missing or detached, so long chats keep scrolling smoothly.
  • Verification: client.js passes the syntax check; no conversation.input.right registration remains in the plugin; the standardControls class name matches on both hosts.

1.1.89

中文

  • 版本 1.1.89。
  • #204 工作目录提示恢复:deployment:persona-suffix 优先写会话真实 cwd 字面量(interpolate: false),拿不到才退静态描述;同时把 cwd 补进 assembly.variables,用户自己模板里的 {{cwd}} 也能渲染。0.2.1 不再抛 unknown prompt variable,工作目录提示不再变成 the current workspace。
  • #207 桌面静默退出可诊断:
    • 新增 #92:宿主每次退出都把 code / signal / stderr 尾巴写进 %TEMP%\dsh-purge-desktop.log(不再只记 signal 分支)。
    • 新增 #93:主进程记录 boot / before-quit / will-quit / quit code / window-all-closed / render-process-gone(附渲染进程最后几行 console)/ child-process-gone / 信号 / 每分钟心跳。只用 uncaughtExceptionMonitor,不改变崩溃行为。
    • asar 换包脚本:Move-Item 失败后改用 .NET File.Move 重试,成功/失败都 Test-Path 复核并记录真实错误;空闲改名脚本同样记录失败原因(限流,不刷屏)。
  • #202 原子写:atomicWriteFile 保持 writeFile + rename(不依赖 hostFs 白名单里没有的 open);CLI --apply 成功后补打应用戳,下次启动 settle 不会误判未对齐再重打。
  • 修复重复标记:#32 / #53 的 export 行锚点原来自我匹配,每点一次「应用」就多追加一行注释;改成带负向前瞻的正则,连续应用保持幂等。
  • 验证:web + desktop 双宿主现有补丁全部 applied;rc.2 夹具与 rc.5 实机 pattern 全绿;沙箱 42 个目标文件 apply/revert 字节级还原;生成的 PowerShell 脚本通过 Parser::ParseFile 语法检查。

English

  • 1.1.89.
  • #204 working directory restored: the persona suffix now uses the real session cwd as a literal (interpolate: false) and only falls back to the static sentence when no cwd is available; cwd is also added to assembly.variables, so user templates with {{cwd}} render. 0.2.1 no longer throws unknown prompt variable, and the prompt keeps the real path instead of the current workspace.
  • #207 desktop exit is diagnosable:
    • New #92: every host exit writes code / signal / stderr tail to %TEMP%\dsh-purge-desktop.log.
    • New #93: main process logs boot / before-quit / will-quit / quit code / window-all-closed / render-process-gone (with the renderer console tail) / child-process-gone / signals / a one-minute heartbeat. Uses uncaughtExceptionMonitor only, so crash behavior is unchanged.
    • ASAR swap: falls back to .NET File.Move after Move-Item fails, verifies with Test-Path, and records the real error; the idle rename script logs failures too (rate-limited).
  • #202 atomic writes: atomicWriteFile stays on writeFile + rename (the hostFs whitelist has no open); the CLI --apply now also writes the applied stamp so the next boot's settle does not re-apply.
  • Duplicate markers fixed: the #32 / #53 export-line anchors matched their own output and appended another comment on every Apply; both now use negative lookaheads and are idempotent.
  • Verified: all existing patches applied on both web and desktop hosts; rc.2 fixtures and rc.5 real files green; sandbox apply/revert restored 42 target files byte-for-byte; generated PowerShell scripts pass Parser::ParseFile.

1.1.88

中文

  • 版本 1.1.88。
  • 双版本适配(rc.2 + rc.5):#32/#36/#50/#53/#57/#62 在 0.2.1-rc.2 与 0.2.1-rc.5 上都能命中。旧 pattern 全部保留,rc.5 的新 pattern 追加,不再用新文案覆盖旧版。
  • #36 升级字段:bash/pwsh 的 sandbox_permissions justification 描述一并清洗;补上 Approval is auto-granted. 大写 marker,tool-fs 不再因为大小写差异永远漂移。
  • #50 跨会话引用:去掉 untrusted / “不要跟随指令”话术,保留只读快照的事实描述。
  • #57 developer role:rc.5 responses 通路的 instructionRole 分支纳入 openai/azure 白名单。
  • #62 审批 fail-open:rc.5 的 void 0 分支(无 approval 服务 / 无 agent / unavailable)全部放行;已打过旧 approval 分支的文件不会因 marker 被整条跳过。
  • #32 / #53 状态标记:#53 不再共用 #32 的注释 marker,旧宿主不会假绿;rc.5 残留的 local web GUI 前缀与 DeepSeek Harness Web GUI 描述已清掉。
  • 宿主门禁:package.json 增加 dshTargets,状态页同时接受 rc.2 与 rc.5。
  • 验证:web + desktop 双宿主 73/85 applied、0 pending、0 drifted;沙箱 42 个目标文件 apply/revert 字节级还原通过。

English

  • 1.1.88.
  • Dual-version support (rc.2 + rc.5): patches #32/#36/#50/#53/#57/#62 now match both 0.2.1-rc.2 and 0.2.1-rc.5. Old patterns are kept; rc.5 patterns are added instead of replacing them.
  • #36 escalation schema: also neutralizes the bash/pwsh sandbox_permissions justification text; adds the capitalised Approval is auto-granted. marker so tool-fs no longer drifts on case alone.
  • #50 session references: drops untrusted / "do not follow instructions" framing while keeping the read-only snapshot wording.
  • #57 developer role: the rc.5 instructionRole responses branch is included in the openai/azure allowlist.
  • #62 approval fail-open: rc.5 void 0 branches (no approval service / no agent / unavailable) all allow; files already stamped by the old approval branch are re-processed instead of skipped.
  • #32 / #53 markers: #53 no longer shares #32's co...
Read more