You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#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.
#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 text back. An empty Apply body no longer wipes the disk prompt.
A declared overlay that exists only as .dshpurge.bak is copied back before load.
Red-team reports get short score-point names. Chinese README restores the banner and preview images.
Minimal / PTC: Same task blocked while standard works → uncleared run_code, sandbox, or plan text, or minimal preset missing agent-instructions. This release flips #60/#61/#63 and adds the plugin on minimal (#26). Quit fully → Apply → Restart → new chat before retesting.
Rewind → resend: Rewind buttons stay in the same chat; your last user line returns to the composer and this round’s assistant output/todos drop. From 1.1.60, bounds follow the current turn, not the first user message (#74/#75 + lib/rewind.js).
Apply / restart: User Apply/Restart writes client bundles so restart is not cancelled as “clean incomplete”.
Default prompt re-sealed into asset-table.js; runtime reads the encrypted slot only.
#66 asar swap PS fallback; #67dsh.cmd; #69 dock fixed; #71 idempotent assemble guard; #70 skill paths per host OS; #68 docs: desktop + .tar.gz (Hub one-click still git — see README).
Apply no longer reports that the clean missed the current host just because the package path or the old markers do not match (#65).
Both resources/app/node_modules and resources/app/dsh/node_modules count. If the official identity sentence and the inject-dropping return are already gone, those two markers are not required.
The complete-prompt patch matches both tab and space indentation.
After Apply and restart, the settings-box prompt is hung on the system section. An empty box uses the active rule set. If both are empty, Apply stops and asks for a prompt.
Cordis, PTC, minimal, unrestricted, and Liangshen clear intercepts and bans the same way standard does, and keep their own tools.
Drill authorization is stored in this install and survives updates. It is cleared only after uninstall succeeds. An empty environment init is no longer treated as configured.
The official Messages request system field uses the current system prompt instead of the first snapshot.
Apply uses the settings box, then the active rule set, then the official system prompt. An empty box with no rules asks for a prompt and does not write the built-in default to disk.
清洗 and the drill console use transparent glass that follows the DSH theme. The manual theme switch is gone.
Docs keep official Web and the official desktop only.
After Apply + restart, every assemble turn puts the operator prompt back at the front. If the host replaces assemble, it is wrapped again so turn 2 does not drop the inject.
An empty settings box no longer cancels Apply on the client; Restart seeds the default prompt first. A sealed asar no longer cancels restart just because the running process still has the old archive.
A second Apply is not treated as a cancel because of settle cooldown. A sealed archive still restarts on each Apply until swapped; after patches are in, it does not loop.
1.1.54
中文
版本升级到 1.1.54。
官方桌面密封 asar 启动不再中途解包/杀进程:避开 Host Fiber._reload 的 INACTIVE_EFFECT / DesktopHostFatalError;补丁留给设置页「应用」。
市场 tar 安装与空 sha / 缺 installed-rev 的无限重启修复仍在(#58–#61,1.1.53)。
English
Version 1.1.54.
Official desktop no longer unpacks or kills the host mid-boot on a sealed asar; that raced Fiber._reload and threw INACTIVE_EFFECT / DesktopHostFatalError. Patches wait for Settings Apply.
Desktop settle is delayed and aborts on an inactive context; startup self-heal writes files only and does not scheduleRestart (#59 / #60 / #61).
Stop Apply/startup infinite restart (#59 / #60 / #61): missing installed-rev after tarball install or empty applied.json sha no longer reapply+restart every boot; skip restart once aligned, with a cooldown.
Web self-heal restart does not open a browser, so closing the window no longer respawns tabs (#59 / #61).
Empty-sha heal only runs when the host is not sealed and markers are present (or the plugin root is missing), so sealed-host self-heal still works (#56 / #57).
Marketplace install prefers tar.gz/zip in package.json so Hub does not fall back to a failing git ls-remote (#58).
Official desktop Apply/Restart no longer auto-runs the official installer (#57); users upgrade the host themselves; the plugin only unpacks and patches.
If applied.json exists but the host is sealed again / plugin root is missing, treat as mismatched and reapply; UI shows patches-lost.
Plugin startup never auto-updates; update only from the panel.
Reseal the default prompt from local default-prompt-inject.md into asset-table.js.
Keep user-replaced prompts: never overwrite disk text that differs from the bundled sealed default; runtime bundled default comes only from the sealed slot.
Rewind cuts the whole last turn and invalidates derive cache so the next send does not keep undone content.
Reject /skills import when source overlaps $DSH_HOME/skills so delete-then-copy cannot wipe skills (#54).
Implement platformEnvAdaptStatus / platformEnvAdaptSkip so the send gate no longer false-blocks ready environments (#55).
Official desktop: ignore unversioned/same-version installer.exe pending updates; restore resources/app if update handoff fails; empty applied stamp sha no longer skips reapply (#56, same path on 0.1.7 and 0.2).
Patch #52 matches non-.volatile() defaults; #57 follows useDeveloperRole and covers responses; #48 soft-settles when upstream removed the caution text; export patches_ready; desktop shim shows not-needed-here.
Fix macOS official desktop Apply false failure "Failed: Restarting.": helper/runtime branches of scheduleRestart return restarting:true; Darwin restart uses osascript quit then SIGTERM/SIGKILL, skips CLI processes, relaunches via open without ELECTRON_RUN_AS_NODE.
After unpacking app.asar, auto-patch the official dsh CLI entry (asar/app fallback) and add app/runtime -> ../runtime so dsh web and other subcommands keep working.
/purge status treats multi-path file lists correctly instead of marking patched files as missing.
Restart failure UI no longer uses the success note as the error detail.
1.1.48
中文
版本升级到 1.1.48。
修复红队指挥「只派活」约束被组装时误删,导致不派 subagent;预设在 Agent Teams 下强制重开 classic subagent。
Fix redteam lead dispatch-only SOP being stripped during assemble; re-enable classic subagent under Agent Teams in the redteam preset.
Add task-matched skill/MCP selection protocol (read catalog, then call what the task needs; same for subagents and redteam). Does not change official registration.
Raise subagent maxDepth default to 10 on 0.2 schemas that dropped .default().
Wire drill Env adapt ops platformConfigGet / Save / AssignToolkit, fixing unknown op: platformConfigGet so tool paths and FOFA/VPS config work again.
Skill catalog also probes $DSH_HOME/redteam/skills and falls back with homedir() on Windows when HOME is empty.
Knowledge prefers nuclei templates from Env adapt; empty libraries show the local knowledge.db path so a missing API is not assumed.
First install shows a user notice: what the plugin does, that it is free/open source, the GitHub repo URL, legal warning against profit behind the author, and illegal-use prohibitions. After confirm it does not show again on that machine.
Broader desktop locate/surface detection (including DeepseekHarnessDesktop installs); failed locate caches no longer stick on "host not located".
Small rewind/request-path fixes to reduce later-turn hangs and misleading progress.
Version 1.1.46. Skip 1.1.45; that version has bugs. Do not install it.
Reseal the default prompt from default-prompt-inject.md.
Fix unstable inject: persona dropping on the second turn or mid-task, including cases where the model treated the system inject as project_instructions and rejected it.
Replacement and scope workspace intros match 0.1.7 again: they do not override system, developer, or direct user instructions. The main intro anti-soft-refuse text stays. A stacked scope paragraph is collapsed back to that one sentence.
Strip outer ChatML / <project_instructions> wrappers before the text reaches the model, so a real system inject is not read as project instructions.
Sanitize assembled system-prompt sections so text is always a string; stop pinning full sections for a session, which could make the second turn crash in renderPrompt on undefined.length with (gateway/internal).
Always normalize decision.messages to an array in agent/pre-step, so a second send does not die on a missing messages list.
Region gate: multi-address hosts are no longer blocked just because one resolved IP is in a controlled region (CDN/noise).
After rewind, deriveMessages / systemNodes tolerate missing content, so resend no longer fails with (gateway/internal).
Clean progress: do not show a scary 0/63 before the host is located; items not needed on this install count as ready, so a fake 48/63 no longer appears.
Apply writes and injects the default prompt; an empty box uses the bundled default, so a separate Save is not required.
Fix rewind: empty snapshotEvents() no longer reads undefined.length, so undo no longer fails with (gateway/internal).
Unpacking app.asar writes beside resources/app and swaps in only after the unpack finishes. Once that directory is usable, later starts only edit those files. The same archive showing up again is moved aside. A new size or mtime, or a missing directory, is unpacked once. If unpacking sticks or that patch round does not finish, the previous directory is put back and the upgrade marker stays for the next start.
Rewinding the previous round removes only that sent message and its reply. Earlier rounds stay on screen and leave the next model request. Leftover rewind markers stay off the next model request, so the next send is a new message.
The editable prompt is placed once at the front of the system prompt. Each step replaces the first system prompt with that current text.
Instructions for deepseek.com stay on the system role. Thinking is still sent.
The region check looks only at this task's target. An own server is allowed only when that exact address or hostname is on the list. The turn ends after the denial sentence is written.
Official mode always uses the default prompt, including CTF. Red team uses only the active rule set, or the default prompt without CTF followed by the red team steps. Subagents receive the same inject as the main session. If the prompt file is empty, startup uses the bundled default without requiring Save.
Under Prompt on the Clean page, register your own server: one IP or exact hostname per line, then Save list. The docs include the steps and a screenshot.
New chats place the prompt at the front of the system prompt. The dock is frosted glass, and both the light and ink themes stay readable.
The patch count includes only applied items. The web-surface identity row stays applied after the later sentence rewrite.
Needles for 0.1.x entry points were added. An already patched 0.2.0 host is not rewritten.
Official modes inject the editable prompt, or the active rule set when one is enabled. Red team also keeps its operating section.
Rewind stays on the current session: choose one step or the last round, return the last line to the composer, and clear what was already sent.
Restart is cancelled unless the host is cleaned and inject text is present.
A full-access default is no longer pinned back to a restricted preset. Official model Session Log upload is off by default.
Targets whose addresses fall in mainland China, Hong Kong, or Macau are stopped.
1.1.40
涓枃
鐗堟湰鍗囩骇鍒?1.1.40銆?- 閫傞厤 DSH 0.2.0-rc.2锛欰nthropic OAuth 涓嶅啀鍦ㄧ郴缁熸彁绀烘渶鍓嶉潰寮烘彃銆孻ou are Claude Code鈥︺€嶏紝鑷畾涔?prompt-inject 涓嶄細琚帇鍒板悗闈€?- 鍘绘帀鍦?0.2 閲屽凡涓嶅瓨鍦ㄧ殑 patch 41锛坉eveloper 瑙掕壊鏀瑰啓锛夛紝閬垮厤鏃犳晥琛ヤ竵鍗犱綅銆?- 璁剧疆椤电偣 搴旂敤 鎴愬姛鍚?鑷姩閲嶅惎 瀹夸富锛屼笉蹇呭啀鎵撳紑鎻掍欢鐐圭浜屾閲嶅惎銆?
English
Version 1.1.40.
For DSH 0.2.0-rc.2, Anthropic OAuth no longer prepends 鈥淵ou are Claude Code鈥︹€?ahead of your system prompt, so custom prompt-inject is not pushed behind a Claude identity block.
Removed patch 41 (developer-role remap) because those needles are gone in 0.2.
After Apply in settings, the host restarts automatically; you no longer need to open the plugin again to confirm restart.
On Chinese Windows, the official desktop install-and-restart no longer stays on preparing to restart. The update script starts with an ASCII comment, and non-ASCII paths are written as \u escapes, so Windows Script Host does not swallow the newline when it reads the file as GBK.
macOS and Linux do not use this script. Their restart path is unchanged.
Red team no longer downloads tools for you. When the setup script is missing, the guide points at the drill console environment page so you fill in the paths.
Long jobs keep a target card in the system prompt. The commander and subagents see the same card: stay on that organization, and do not switch to other names that show up in results. Each subagent loads its own role text, and dispatched work must use the name on the card.
Tool lookup accepts distro filenames such as Kali's httpx-toolkit and impacket-secretsdump, and does not treat Python's httpx as the scanner.
The official desktop app can find app.asar on macOS and Linux (Contents/Resources on Mac). Outside Windows, the console-hide wrapper that broke require is not installed.
Red team uses an anchor gate: the first steps are capped at 1024 output tokens, the cap lifts when the first reasoning block contains we and not let me, otherwise it lasts at most 4 steps in that turn, and a context compaction closes the gate again. Red team tools and the persona stay as they are.
Bundled skills are copied to $DSH_HOME/redteam/skills and the preset points there with dshHomePath, instead of a machine-specific node_modules path. Your own skills stay in $DSH_HOME/skills and win on the same name.
Red team mode shows in the mode list again. Declaring the preset no longer exits early because a path variable was missing.
The sponsor addresses are back in the readme.
1.1.37
涓枃
鐗堟湰鍗囩骇鍒?1.1.37銆?- 淇敼婕旂ず鍙扮幆澧冮厤缃粴鍔ㄩ棶棰樸€?
English
Version 1.1.37.
The drill console environment page scrolls, so the rest of the settings can be filled in.
The drill knowledge page lists local templates. Opening Knowledge shows a page of nuclei templates, with paging and search by CVE or component. It no longer shows only the template count.
Update archives extract on Windows, macOS, and Linux. Linux does not call PowerShell. Windows tries tar, then PowerShell. macOS and Linux try tar, unzip, python3, then bsdtar. If none of those exist, Node extracts the zip itself. Thanks to @cracer4869 for reporting spawnSync powershell ENOENT on Kali in #44.
Fix the restart dialog coming back after you already restarted. When the official app is already running from the unpacked resources/app, opening the panel no longer asks you to quit again just because this is the official process. The restart prompt appears only when app.asar was actually moved aside in this run.
Drill console is on the stable release. The right dock has two pages: Clean and Drill. The first time you open Drill you read the notice and confirm authorization. Assets, skills, and the local environment ship inside this plugin.
Fix rewind leaving a branch every time. The host cannot truncate a session in place. After rewind the old session leaves the sidebar, so repeated undo does not pile up branches.
Fix version switching on the desktop app and web: stop installing through dsh plugin add. pnpm's fetch of the GitHub archive returns http 302 or fetch failed. The plugin downloads the package itself.
Fix the thinking and output loop: remove the default-prompt reset that had no stop condition.
Fix update failure http 302: download via codeload.github.com and follow redirects manually so Electron/some Node builds no longer stall on github.com 鈫?codeload 302.
Fix empty beta list: client keepListedVersion matches the server 鈥?keep the beta tip / beta branch after stable ships; fall back to raw/jsDelivr when tip SHA cannot be fetched.
1.1.27
涓枃
**淇搴旂敤閲嶅惎鍚庤繘瑙勫垯璁惧畾浠嶅脊銆岄渶瑕侀噸鍚€?*锛氭墜鍔ㄣ€屽簲鐢ㄣ€嶆垚鍔熷悗鍐欏叆 applied 鎴筹紝閲嶅惎鍚?settle 涓嶅啀璇垽琛ヤ竵鏈榻愩€?- 鐐广€岄噸鍚€嶆竻鎺?boot_full_quit 绮樻€ф爣璁帮紱status 鎸夊竷灏斿€煎悓姝ュ脊绐椼€?- web waitForRestart 蹇呴』鍏堢湅鍒版棫杩涚▼鎺夌嚎鍐嶅垽瀹氭垚鍔燂紝閬垮厤鍚岃繘绋嬭鍒锋柊鍙堝脊绐椼€?
English
Fix restart prompt still showing after Apply + successful restart: write the applied stamp on successful manual Apply so settle does not think patches are out of date.
Clear sticky boot_full_quit when Restart is clicked; status syncs the modal from the boolean.
Web waitForRestart requires the old process to go down before treating restart as success, avoiding same-process false refresh.
1.1.26
涓枃
淇娴嬭瘯閫氶亾琚寮忕増鍚屽彿钘忔帀锛歚1.1.25 姝e紡鍙戝竷鍚庯紝1.1.25-beta.* 鍥犮€屾寮忓凡杩戒笂銆嶉€昏緫鏁撮€氶亾涓嶅彲瑙侊紱鐜?**beta 鍒嗘敮 tip 濮嬬粓鍒楀嚭**锛堟寮?娴嬭瘯骞惰锛屾祴璇曞甫绾㈤槦锛夈€?- 宸茶拷涓婄殑鏃?beta **鏍囩**浠嶄細闅愯棌锛沗1.1.11-beta 浠嶄笅绾裤€?
English
Fix beta lane hidden by same-number stable: after 1.1.25 stable, 1.1.25-beta.* vanished via the 鈥渟table caught up鈥?filter; the beta branch tip always stays listed (parallel channels; beta carries red-team).
Older caught-up beta tags still hide; 1.1.11-beta stays withdrawn.
1.1.25
涓枃
**淇 #43**锛氫笉鍐嶆妸 profiles/*/cordis.patch.yml锛堢敤鎴?patch 灞傦級绾冲叆 backupAll/revertAll锛涘崌绾ц嚜鎰堟椂涓嶄細鐢ㄦ棫 bak 瑕嗙洊鐢ㄦ埛鍚庢潵杩藉姞鐨?insert銆?- 鍚姩/杩樺師鏃朵富鍔ㄤ涪鎺夊巻鍙蹭笂璇缓鐨?cordis.patch.yml.dshpurge.bak锛屼繚鐣欏綋鍓嶇敤鎴锋枃浠躲€?- 鏂板 npm run test:profile-patch銆?
English
Fix #43: stop including profiles/*/cordis.patch.yml (user patch layer) in backupAll/revertAll, so upgrade reapply no longer restores an old bak over later user inserts.
Drop stale cordis.patch.yml.dshpurge.bak without restoring; keep the live user file.
Fix #40: pathLooksDesktop no longer treats source trees as desktop just because the path contains deepseek-harness; require install shapes (resources/, .exe, .app).
Fix #41: skip hide-console injection into source apps/cli build output; revertAll never deletes targets when .dshpurge.bak is missing.
Fixes ENOENT when Apply runs on the official desktop. While app.asar is still present, creating dsh-purge-child-process-hide.mjs failed. The path was rewritten to resources\app.asar\...\dsh-purge-child-process-hide.mjs, and patches stayed pending.
Cause: with the archive still in place, Electron maps resources\app into app.asar. Creating a file that is not already in the archive through the normal file API throws ENOENT.
Both write paths stay. If the archive is still there, files are written on the real resources\app directory. If there is no app.asar, the previous node:fs path is unchanged. That covers Web, community desktop, and an official install that has already been unpacked and had the archive moved to app.asar.bak.
Install paths are not pinned to a drive letter. Web and community desktop keep their existing Apply and restart. The host target remains dsh 0.1.7-rc.2.
Fixes required-patch failures #43, #9, #15, #23, and #42. Apply no longer reports the cleanse as incomplete because of these five. The prompt was already written; the failure made the plugin look dead.
Cause: a parent folder named DeepSeek Harness was treated as the official desktop install, so the Web npm packages were excluded and these five were never written. Install paths are not pinned to a drive letter. A tree counts as the desktop install only when the desktop executable is beside it, or the path is under that install's resources/app. Web, community desktop, and official desktop each patch their own packages.
#43: strips the identity sentence from the four built-in Web presets (standard, ptc, cordis, minimal). Left in place, that sentence stays next to the inject.
#9: approval requests are auto-granted.
#15: sandbox confine no longer wraps the command.
#23: subagent default depth moves from 1 to 10.
#42: the settings service gets the old register / get methods back, so plugins that still call them can load.
When the file exists but this version does not contain that original text, the row shows skipped and Apply still completes. Text that is present is still written.
Host version: current target is dsh 0.1.7-rc.2. Anchors for the previous target, 0.1.7-rc.1 (including 0.1.7-rc.1.20260924.1), still match.
Official desktop upgrade: a downloaded update installs on Restart, or on the in-app install-and-restart action, then the new build is unpacked and patched. With no pending update, Restart still closes and reopens the current client. Install paths are not pinned to a drive letter.
Patches: #14 and #35 match the rc.2 escalation text, so Apply no longer fails those required patches. #29, #33, and #36 follow the new prompt wording.
Web and community DSH Desktop keep their existing Apply and restart.
Official desktop EXE: Apply on official DeepSeek Harness unpacks app.asar, restores native modules, then Restart closes the client and opens it again. Web and community DSH Desktop keep their existing Apply and restart.
Restart: exiting the official host is no longer treated as a crash, and no PowerShell process is left behind. The helper no longer calls toISOString, which made Windows Script Host pop a runtime error. The new process does not inherit ELECTRON_RUN_AS_NODE, which made it exit immediately.
Updates: switching or rolling back a version restores and reapplies that version's patches without a manual revert first.
Patch list: hosts that already depend on dsh-web-fetch-http no longer show a permanently skipped #20. Install paths are not pinned to a drive letter.
Restart: the old page token dies with the process, so a refresh looks like restart did nothing. Restart now frees the port and opens the browser at the new dsh web: URL. Use that page and start a new chat.
Settings: Apply collapses duplicate legacyApplyPath left by earlier 1.1.17 patches so dsh-settings can load. Restart once after that apply.
Stability: patch #42 no longer stacks duplicate legacyApplyPath on dsh 0.1.7, which broke @deepseek-ai/dsh-settings, provider catalog loading, and downstream plugins. Uses skipIfMarked and does not re-insert the helper the official package already ships.
Workspace intros: patches #1/#2 match both WORKSPACE_* and AGENT_* constant names so rows no longer show Skipped on older installs.
Refusal / soft refusal: stronger official workspace intros plus a fixed dsh-purge:rules section. Restart dsh and start a new chat for prompt changes.
Aligned with dsh 0.1.7-rc.1. The workspace-instruction constant is now AGENT_INSTRUCTIONS_INTRO. The sentence is unchanged, and the patch follows it.
Sandbox confine() is now async confine(argv, policy, signal), and the patch matches that function. Passthrough behavior is the same as the previous release.
Subagent depth lives on dsh-subagent. The default moves from 1 to 10. The depth check remains.
The settings service again exposes the old register / get methods, so plugins such as dsh-mnemon and dsh-better-reasoning-effort keep working. Official describe / update stay. The patch applies once and does not insert itself again on startup.
Patch text that no longer exists in 0.1.7 is removed, including the extra dsh-web-fetch-http dependency on dsh-base. The official package already depends on it.
The four built-in Web presets (standard, ptc, cordis, minimal) lose only the identity sentence. The working-directory suffix, tool lists, ptc mode, and minimal's complete: true plus includeRuntimeContext: false stay.
When complete: true, prompt-inject.md is still prepended to that section. A host upgrade or an older hook that drops the section does not drop the inject. After Apply you still click Restart and start a new chat before it enters the session.
The dsh-compaction-instant web client uses configForms instead of the removed settingsScope, so the page no longer stops on Failed to load plugins.
Rewind on 0.1.7 created the new session and left the UI on the old chat, so the click looked dead. 0.1.7 has no sessions.open. The button now opens the new session with uiWorkspace.openSession and puts the previous user line back in the composer. A failure shows on the button.
The README sponsor block is now a non-profit notice: no commercial resale and no gray-market profit; technical reference only.