本次发布围绕旧自更新面收口、双端交互协同与多处跨端运行期修复展开:已被官方插件页原生覆盖的家族自更新包 @linxin666/dsh-update 整包移除(聚合包保留 @linxin666/dsh-web-all/update 静默 tombstone);远程接入(dsh-remote-bridge)将待答提问与审批改为桌面浏览器面板与已配对手机双侧同显、先答者结算,并退役离线提问独占认领窗口;工坊中继(dsh-market)识别并解压隧道宿主未声明编码的 gzip 响应,消除边缘二次压缩造成的手机端乱码(issue #2030);任务看板(dsh-task-board)在卡片携带未完成子任务但部署运行旧代 Agent Teams 时于启动前 fail closed(issue #2031);浏览器视图(dsh-browser-view)在 CDP 连接断开后自动重建会话并拆分连接与命令超时预算;技能中心(dsh-skill-explorer)、会话归档(dsh-session-archive)、小队(dsh-agents)、梁神预设(dsh-liangshen)、窄屏抽屉(dsh-web-all 与 dsh-remote-web-ui)、图表(dsh-diagrams)与 Windows 终端(dsh-win-bash)同步落地一系列稳定性与安全修复。四个卫星仓在本版同版本对齐到 0.4.16。
移除
@linxin666/dsh-update家族自更新包:DSH0.2.2-rc.1已在官方插件页提供全量已装 bundle 的注册表版本检查、宿主下限门禁与就地移除/安装/还原流程,聚合包也已于0.4.14停止挂载web-ui-update行。本版将packages/dsh-update连同俄语update字典、6 处共享模块同步目标与 4 项门禁基线一并删除;聚合包继续保留@linxin666/dsh-web-all/update子路径导出、retiredPlugins登记与shellNotes行作为静默 no-op 的 tombstone,存量 profile 升级或启动不会因旧行名报错,npm 上已发布的@linxin666/dsh-update@0.4.15仍可解析。
远程接入待答提问与审批双侧可见、先答者生效:此前dsh-remote-bridge认领用户提问或审批时未调用next(),导致问题被手机认领后桌面浏览器面板无法渲染同一张卡片。现在提问与审批在认领成立的同时立即向下放行给宿主应答链,桌面端与手机端同时持有待答卡片,任一侧先作答即完成结算:宿主面板先答时,桥向已声明questions.v1或approvals.v1的连接广播state: "settled"并释放认领;手机先答时,桥返回手机答案并忽略宿主链随后的结果;宿主链 reject 或返回默认unavailable不视为裁决,手机侧认领继续可答。当ctx.typertGateway.hasLiveClient()为真(桌面面板在线)时不再发送重复 APNs 推送;原 10 分钟离线提问独占窗口(OFFLINE_QUESTION_CLAIM_TTL_MS及环境变量DSH_REMOTE_BRIDGE_OFFLINE_CLAIM_TTL_MS)一并退役,离线认领保持至被回答、宿主截止时间到期或插件卸载。
工坊中继补齐未声明的传输编码与部署密钥轮询(issue #2030):被隧道穿透的 DSH 宿主对部分响应无论请求头如何都会返回 gzip 压缩字节且不带Content-Encoding,导致 Cloudflare 边缘二次压缩,手机端只解开一层后将页面渲染成乱码。market/worker/src/relay-encoding.js现检查未声明Content-Encoding的响应首块,对以 gzip 魔数(1f 8b 08)开头的响应流在 Worker 内解压为原始字节并附上Cache-Control: no-transform,quick 与 bridge 两条链路统一经此出口返回;scripts/deploy-market在刷新TURNSTILE_SECRET与ASSET_ATTEST_SECRET后轮询等待密钥列表收敛,消除版本传播竞态导致的误判失败。
任务看板强制调度器预置无法编排时 fail closed(issue #2031):携带未完成子任务的卡片会被强制切到liangshen预设执行,但在挂载了旧代官方 Agent Teams(注册spawn_teammate工具)的部署上,梁神预设的 R0.5 兼容门会立即停下等待人工点击退出选项,无人值守或定时触发的卡片因此永远卡在running列。dsh-task-board现在于创建任何会话前读取宿主工具注册表,一旦探测到spawn_teammate即以具名错误直接拒绝本次启动,并在执行日志中按读者语言(中/英/俄)给出排查与处置说明。
浏览器视图自动替换已关闭的 CDP 会话并拆分超时预算:此前dsh-browser-view的真实浏览器模式把 5 秒连接时限沿用为后续所有 CDP 命令的超时,导致慢页面频繁触发假超时,且浏览器重启或底层 socket 断开后旧会话被一直复用直至重启宿主。现在连接预算(外部端点 5 秒)与命令执行预算(CDP_COMMAND_TIMEOUT_MS,30 秒)拆分为独立旋钮;当下一次工具调用发现传输已关闭时,自动按配置变更同款的清理路径丢弃失效会话(对外部浏览器仅分离而不关闭进程,对已退出的隔离 Chromium 执行销毁并重拉起),并为并发调用方共享同一个新建会话。
技能中心准入、窄屏抽屉命中、小队会话桥接与归档删除保护预览:dsh-skill-explorer接入宿主可选的connection服务,凡经--trusted-host或有效签名浏览器会话接纳的反向代理请求均可直接访问/api/dsh-skill-explorer/*(issue #2025、#2026);dsh-web-all与dsh-remote-web-ui为窄屏抽屉层级补上!important并将聚合遮罩设为pointer-events: none,修复官方布局运行时注入样式表赢下同权重平手后把抽屉压到遮罩下方、导致抽屉内点击失效或首击关闭抽屉的问题(issue #2012、#2013、#2014);dsh-agents改用实例级ctx.inject实时桥接uiWorkspace与sessions,消除插件加载顺序导致「打开会话」按钮永久缺失的问题;dsh-session-archive下发宿主侧attached与in-flight保护原因并按in-flight > current > attached > running合并,使行内删除禁用态、全保护批量删除禁用态与确认框跳过数同宿主权威计划完全一致(issue #2022)。
梁神预设工具面与事实折叠、图表净化及 Windows UnicodeHOME修复:dsh-liangshen改为从步骤准入的tools.schemas(agent, context.toolSet)读取目录表面并通过ctx.tools.restrict()施加分页,修复 SDK 2.0.22 将工具声明收回 provider 后子会话误报无工具的问题(issue #2016),同时让foldFactLedger一并折叠默认ptc呈现下的tool/ptc-dispatch事件并跳过报错调用;dsh-diagrams改用 URL 解析器提取链接 scheme,剥离借 TAB/LF/CR 拆分或前置 C0 控制字符隐藏的javascript:URL(issue #2017);dsh-win-bash为随包 MSYS bash 显式注入HOME(优先保留既有HOME,缺失时取 Nodehomedir()),避免含非 ASCII 字符的 Windows 用户目录经 ANSI 代码页推导损坏(issue #2028)。
四个卫星仓同版本对齐到0.4.16:皮肤中心(dsh-skins)上架equation-sea、pixel-whale与md3三套新皮肤(商店皮肤扩充至 65 套),将diy-journal字体转写为 Woff2 并压缩贴纸与插画使包体积缩减 62%,补齐model-dorm浮层阴影与圆角运行时令牌并修正 3 个令牌名,修复equation-sea右侧栏与商店卡片对比度,排除 4 套模板里发送键选择器对附件栏删除按钮的误命中,并将皮肤中心的全屏面板不透明底色限定在data-sidebar-right-open打开态下绘制(5f51988d1249173509c77129670e3be5cfd514a8);宠物(dsh-pet)重绘whale-girl-refined左右奔跑动作的 8 帧序列,擦除腰部多余的远端袖口与手部伪影并按逐像素水平镜像对齐左跑行(ae2c9d443eda35a6439597c1787c7607e988bbed);社区插件索引(dsh-community-plugins)退役 52 个宿主下限仍停留在0.1.x的历史条目,新收录dsh-plugin-desktop-notify、@chendaleiq/dsh-plugin-auto-update、dsh-tutorloop、dsh-character-cards、dsh-power-menu-mac与dsh-keenable,恢复已适配新底座的dsh-llm-verifier,当前商店目录共 106 个插件(f0b8ad9de23ddd9fc1cc81c66196f566c1b8859a);预设中心(dsh-presets)与主仓同步对齐版本号至0.4.16(5752778d13f97e3f81467178559efd973777da53)。
升级须知
- 宿主最低版本要求保持 DSH
>=0.2.2-rc.1:本版未抬高dsh.engines.dsh与@deepseek-ai/dsh对等依赖下限,已满足0.4.15运行条件的宿主可直接升级。 @linxin666/dsh-update整包移除与存量兼容:自更新包源码与独立发布线自本版起终止,插件版本检查与更新统一在官方插件页执行。聚合包保留@linxin666/dsh-web-all/update静默 tombstone 与retiredPlugins登记,存量全量 profile 无需手工删行即可平滑升级;若此前曾单独安装@linxin666/dsh-update,旧版0.4.15仍留在 npm registry,建议在插件页将其卸载并改用官方插件页自带的更新检查。- 远程接入离线提问认领窗口配置项退役:
dsh-remote-bridge的待答提问现由桌面面板与已配对手机双侧同显、先答者结算,原 10 分钟离线独占窗口(环境变量DSH_REMOTE_BRIDGE_OFFLINE_CLAIM_TTL_MS)已移除,设置该环境变量不再产生任何效果。 - 任务看板对旧代 Agent Teams 强制编排预设执行前置拦截:若部署启用了旧代官方 Agent Teams(工具注册表含
spawn_teammate),包含未完成子任务的看板卡片在启动时会被立即拒绝并标记失败,而不会再拉起卡死在兼容门上的会话。需运行此类父子卡片时,请先升级到当前代官方 Agent Teams,或在设置中停用旧代团队运行时后重启宿主。 - 升级入口支持矩阵:仓库内不存在 Doctor 预启动迁移,官方插件页(或插件管理器更新任务)是具备配置备份、
--dump-config预检与失败自动回滚的推荐升级入口;客户端 bundle 与宿主服务改动在升级后需重启dsh web并刷新浏览器页面生效。 - 平台验证声明:本版在 Linux(Ubuntu x86_64)环境下完成了本地门禁与只读核验。Windows 与 macOS 未在物理实机上验证——
dsh-win-bash为非 ASCII Windows 用户目录显式注入HOME的改动(issue #2028)仅经单元测试覆盖其环境构造契约,未在物理 Windows 主机上做实机挂载验证。
新功能
- [remote-bridge] 待答提问与审批同时呈现在桌面浏览器面板与已配对手机上,先作答者结算,离线提问认领持续至被回答、宿主截止或插件卸载
- [market] 创意工坊上架
equation-sea、pixel-whale与md3三套新皮肤(共 65 套),并将diy-journal皮肤包体积缩减 62% - [market] 创意工坊新收录社区插件
dsh-plugin-desktop-notify、@chendaleiq/dsh-plugin-auto-update、dsh-tutorloop、dsh-character-cards、dsh-power-menu-mac与dsh-keenable,并恢复dsh-llm-verifier
修复
- [remote-bridge] 认领提问或审批后立即放行宿主应答链并在任一侧结算时通知另一侧,桌面面板在线时不再重复发送 APNs 推送
- [market] 解压隧道宿主未声明
Content-Encoding的 gzip 响应首块并附上Cache-Control: no-transform,消除边缘二次压缩导致的手机端乱码 (#2030) - [task-board] 含未完成子任务的卡片在强制使用梁神预设而部署运行旧代 Agent Teams 时于建会话前 fail closed (#2031)
- [win-bash] 为随包 MSYS bash 显式提供
HOME(优先继承环境,缺失时取 Nodehomedir()),修复 Unicode 用户目录经 ANSI 代码页推导损坏的问题 (#2028) - [skill-explorer] 放行经宿主
connection服务接纳的请求(--trusted-host与有效签名浏览器会话)进入/api/dsh-skill-explorer/*(#2025 #2026) - [browser-view] 在 CDP 传输关闭后自动丢弃旧会话并重建共享替换会话,同时将 5 秒连接时限与 30 秒命令超时拆分为独立预算
- [session-archive] 下发宿主侧
attached与in-flight保护原因并按权威优先级合并,使列表行内删除按钮、全保护批量删除禁用态与确认框跳过计数同宿主实际拒绝集合一致 (#2022) - [agents] 按实例通过
ctx.inject实时桥接可选的uiWorkspace与sessions服务,晚于本行挂载时自动启用会话入口,缺席时保持按钮可见置灰并写明原因 - [web,remote-web-ui] 为窄屏侧栏抽屉层级补充
!important并将聚合遮罩设为pointer-events: none,修复后注入的官方布局样式表压低抽屉层级导致点击穿透或首击误关抽屉 (#2012 #2013 #2014) - [liangshen] 关键事实登记簿(
foldFactLedger)同时折叠tool/ptc-dispatch与tool/call事件并跳过报错的 PTC 调用,修复出厂默认ptc呈现下登记事实不进入[Working Context]的问题 - [liangshen] 从步骤准入的
tools.schemas(agent, context.toolSet)读取工具目录表面并按ctx.tools.restrict()施加分页,修复 SDK 2.0.22 后子会话误报无工具的问题 (#2016) - [diagrams] 通过 URL 解析器判别链接 scheme,剥离借 TAB/LF/CR 拆分或前置 C0 控制字符隐藏的
javascript:URL (#2017) - [pin] 将
dsh-message-edit与dsh-web-settings的@deepseek-ai/dsh-client-ui-slots映射至包内 registry 副本,并对齐dsh-remote-bridge的dsh-user-questions可变答案数组签名,修复宿主 SDK 钉死下的本地typecheck与build - [market] 部署脚本在刷新
TURNSTILE_SECRET与ASSET_ATTEST_SECRET后轮询等待密钥列表生效窗口,消除版本传播竞态导致的误报失败 - [pet] 重绘
whale-girl-refined左右奔跑帧以擦除腰部多余远端袖口与手部伪影,并同步刷新创意工坊精灵图资产 (#2021)
其他改动
- [dsh-update] 整包移除家族自更新插件
@linxin666/dsh-update(源码、俄语update字典、共享模块同步目标与四项门禁基线行),保留@linxin666/dsh-web-all/update静默 tombstone,插件版本检查与更新归口至官方插件页 - [market] 退役 52 个宿主下限停留在
0.1.x的社区插件条目,并在合并皮肤、插件与宠物卫星更新后重建market/dist(当前共 65 套皮肤、12 只宠物、106 个插件、33 个预设) - [satellites] 前移
dsh-skins、dsh-pet、dsh-community-plugins与dsh-presets四个子模块 gitlink 到各自0.4.16发布提交,同步皮肤中心全屏面板不透明修饰符与各轮准入决策记录 - [remote-bridge] 在双语 README 中移除已退役的离线提问独占认领窗口说明,对齐双端同显与先答生效语义
- [readme] 同步根双语 README 的家族插件表、社区规模与模型配置示例,并转义波浪号区间以避免 GFM 删除线误渲染
- [notes] 记录宿主 SDK 钉死对本地门禁的影响及修复、移除
dsh-update、窄屏抽屉命中测试与win-bash显式HOME等决策笔记
English
This release focuses on retiring redundant self-update infrastructure, coordinating dual-surface interactions, and hardening cross-platform runtime behavior: the family self-update package @linxin666/dsh-update is removed outright now that the official Plugins page natively handles version checks and updates (while @linxin666/dsh-web-all/update stays as a silent tombstone); remote access (dsh-remote-bridge) displays pending user questions and approvals on both the desktop browser panel and paired phones with first-answer-wins settlement, retiring the offline exclusive claim window; the Workshop relay (dsh-market) detects and decompresses undeclared gzip responses from tunneled hosts so Cloudflare does not double-compress them into mojibake on mobile (issue #2030); the task board (dsh-task-board) fails closed before creating a session when a card with unfinished subtasks is forced onto the LiangShen preset on a deployment running the legacy Agent Teams generation (issue #2031); the browser view (dsh-browser-view) automatically replaces closed CDP sessions and splits connection and command timeout budgets; and a batch of stability and security fixes lands across dsh-skill-explorer, dsh-session-archive, dsh-agents, dsh-liangshen, mobile drawers (dsh-web-all and dsh-remote-web-ui), dsh-diagrams, and dsh-win-bash. The four satellite repositories align to 0.4.16.
Remove the
@linxin666/dsh-updatefamily self-update package: DSH0.2.2-rc.1checks and installs registry updates for every installed bundle on the official Plugins page, complete with the DSH minimum floor gate and the remove/install/restore steps, and the aggregate had already stopped mounting theweb-ui-updaterow in0.4.14. This release deletespackages/dsh-updatetogether with the Russianupdatedictionary, six shared-module sync targets, and four gate baseline rows. The aggregate keeps the@linxin666/dsh-web-all/updatesubpath export,retiredPluginsentry, andshellNotesrow as a silent no-op tombstone so existing profiles continue to resolve cleanly, and@linxin666/dsh-update@0.4.15remains on npm.
Pending remote questions and approvals show on both sides, first answer wins: claiming a user question or an approval indsh-remote-bridgepreviously never callednext(), hiding the card on the desktop browser panel whenever a phone held the claim. Both claims now pass the request to the host's answerer chain immediately so the desktop panel and paired phones hold the card at the same time and the first answer settles it: when the host panel answers first, the bridge broadcastsstate: "settled"to connections declaringquestions.v1orapprovals.v1and releases the claim; when a phone answers first, the bridge resolves with the phone's answer and ignores the host chain's later completion; a host chain rejection or defaultunavailableis not treated as a verdict, leaving the claim answerable on the phone. APNs pushes are suppressed whilectx.typertGateway.hasLiveClient()is true, and the 10-minute offline exclusive claim window (OFFLINE_QUESTION_CLAIM_TTL_MSandDSH_REMOTE_BRIDGE_OFFLINE_CLAIM_TTL_MS) is retired so an away-phone claim lives until answered, expired by the host deadline, or unloaded.
Workshop relay normalizes undeclared wire encodings and polls secret propagation (issue #2030): a tunneled DSH host compresses some responses regardless of request headers without settingContent-Encoding, causing the Cloudflare edge to compress the gzip body a second time and leaving mobile clients with mojibake after decoding one layer.market/worker/src/relay-encoding.jsnow inspects the first chunk of responses lackingContent-Encoding, decompresses gzip streams (1f 8b 08) into identity bytes, and attachesCache-Control: no-transformacross both quick and bridge relay paths;scripts/deploy-marketalso polls the secret list after updatingTURNSTILE_SECRETandASSET_ATTEST_SECRETto wait out the deployment version propagation race.
Task board fails closed when the forced dispatcher preset cannot orchestrate (issue #2031): a card with unfinished subtasks is forced under theliangshenpreset, whose R0.5 compatibility gate stops and waits for a human reply on deployments running the legacy Agent Teams generation (spawn_teammate), leaving unattended or scheduled runs stuck in therunningcolumn forever.dsh-task-boardnow inspects the agent tool registry at launch, refuses the run before any session is created whenspawn_teammateis present, and renders a localized explanation in the reader's language (zh/en/ru).
Browser view replaces closed CDP sessions and splits connect and command budgets: a real-browser session indsh-browser-viewpreviously reused its 5-second connect deadline for every subsequent command and returned a closed transport forever after a browser restart. The 5-second external connect bound and the 30-second command timeout (CDP_COMMAND_TIMEOUT_MS) are now separate knobs, and the next tool call on a closed transport disposes the stale session (detaching an external browser without closing it, or stopping and relaunching an exited isolated Chromium) and opens a single replacement shared across concurrent callers.
Skill explorer admission, mobile drawer hit-testing, squad session bridges, and archive protection previews:dsh-skill-explorerconsults the optional hostconnectionservice so reverse-proxy requests admitted via--trusted-hostor a signed browser session pass straight into/api/dsh-skill-explorer/*(issues #2025, #2026);dsh-web-allanddsh-remote-web-uimark the mobile sidebar drawerz-index: 1100 !importantand set the aggregate mask topointer-events: none, preventing the runtime-injected official layout stylesheet from winning the equal-specificity tie and burying the open drawer beneath its own mask (issues #2012, #2013, #2014);dsh-agentsbridgesuiWorkspaceandsessionsper instance viactx.injectso providers mounting after the plugin enable session entry points dynamically while deployments without them keep the buttons visibly disabled with an explanation; anddsh-session-archiveships host-sideattachedandin-flightprotection reasons and merges them underin-flight > current > attached > runningso row delete buttons, fully protected batch selections, and confirmation skip counts match the host's authoritative plan (issue #2022).
LiangShen catalog admission and fact folding, diagram URL sanitization, and Windows UnicodeHOME:dsh-liangshenreads the step tool surface fromtools.schemas(agent, context.toolSet)and pages viactx.tools.restrict(), fixing false no-tools assertions in seeded child sessions on SDK 2.0.22+ (issue #2016), and updatesfoldFactLedgerto replay bothtool/ptc-dispatchandtool/callevents while ignoring errored dispatches so pinned facts reach[Working Context]under the defaultptcpresentation;dsh-diagramsparses attribute URLs before checking their scheme sojavascript:URLs split by TAB/LF/CR or prefixed with C0 control characters are stripped (issue #2017); anddsh-win-bashexplicitly suppliesHOME(base.HOME ?? homedir()) to the vendored MSYS bash so Windows profiles with non-ASCII characters are not corrupted by ANSI code-page derivation (issue #2028).
The four satellite repositories align to0.4.16: the skin center (dsh-skins) adds three new skins (equation-sea,pixel-whale, andmd3, expanding the catalog to 65 skins), convertsdiy-journalfonts to Woff2 and compresses artwork to shrink the package by 62%, covers floating-surface shadow and radius tokens and fixes three token names inmodel-dorm, improvesequation-searight-rail and market-card contrast, excludes the attachment rail from composer send-key rules across four skin templates, and restricts the opaque fullscreen-panel fill in the skin center to the opendata-sidebar-right-openstate; the pet plugin (dsh-pet) repaints the eight-framewhale-girl-refinedrunning rows to erase the stray far-arm cuff and hand at the waist and mirrorsrunning-leftpixel-for-pixel fromrunning-right; the community plugin index (dsh-community-plugins) retires 52 legacy entries whose host floor predates0.2.0, registersdsh-plugin-desktop-notify,@chendaleiq/dsh-plugin-auto-update,dsh-tutorloop,dsh-character-cards,dsh-power-menu-mac, anddsh-keenable, and restoresdsh-llm-verifierfor a catalog of 106 plugins; and the preset center (dsh-presets) aligns its version to0.4.16.
Upgrade Notes
- The DSH host floor remains
>=0.2.2-rc.1: this release does not raisedsh.engines.dshor the@deepseek-ai/dshpeer dependency floor; any host already running0.4.15can upgrade directly. @linxin666/dsh-updatepackage removal and profile compatibility: the standalone self-update package is removed from the repository and its release line ends here, with version checks and updates handled by the official Plugins page. The aggregate retains the@linxin666/dsh-web-all/updatesilent tombstone andretiredPluginsentry so existing aggregate profiles upgrade without manual edits; users who installed@linxin666/dsh-updatestandalone can still resolve0.4.15from npm and are advised to uninstall it in favor of the official Plugins page.- Retirement of the remote-bridge offline question claim TTL knob: pending questions in
dsh-remote-bridgenow appear on both the desktop browser panel and paired phones with first-answer-wins settlement, and the 10-minute exclusive offline claim window (along withDSH_REMOTE_BRIDGE_OFFLINE_CLAIM_TTL_MS) has been removed; setting that environment variable now has no effect. - Pre-launch fail-closed check for forced dispatcher presets on legacy Agent Teams: on deployments where the legacy official Agent Teams runtime (
spawn_teammate) is active, task board cards carrying unfinished subtasks are now refused before any session is created instead of spawning a session that hangs forever at the compatibility gate. Upgrade to the current Agent Teams generation or disable the legacy runtime and restart the host before running parent cards with subtasks. - Upgrade entry matrix: there is no Doctor pre-launch migration in this repository; the official Plugins page (or the plugin manager update task) remains the recommended upgrade entry with configuration backup,
--dump-configprecheck, and automatic rollback. Restartdsh weband refresh the browser after upgrading so host service and client bundle changes take effect. - Platform verification: this release passed the local gate suite and read-only verification on Linux (Ubuntu x86_64). Windows and macOS remain unverified on physical hardware — the explicit
HOMEinjection indsh-win-bashfor non-ASCII Windows user profiles (issue #2028) is covered by unit tests onshellEnvironment()without a physical Windows mount check.
New Features
- [remote-bridge] Show pending user questions and approvals on both the desktop browser panel and paired phones with first-answer-wins settlement, keeping offline question claims alive until answered, expired by the host, or unloaded
- [market] Add the
equation-sea,pixel-whale, andmd3skins to the Workshop (65 skins total) and shrink thediy-journalskin package by 62% - [market] Register the community plugins
dsh-plugin-desktop-notify,@chendaleiq/dsh-plugin-auto-update,dsh-tutorloop,dsh-character-cards,dsh-power-menu-mac, anddsh-keenablein the Workshop, and restoredsh-llm-verifier
Bug Fixes
- [remote-bridge] Pass claimed questions and approvals through to the host answerer chain immediately, notify the other surface on settlement, and suppress duplicate APNs pushes while a desktop browser client is live
- [market] Decompress undeclared gzip response streams from tunneled hosts and set
Cache-Control: no-transformso the edge does not double-compress pages into mojibake on mobile (#2030) - [task-board] Fail closed before creating a session when a card with unfinished subtasks is forced onto the LiangShen preset on a deployment running the legacy Agent Teams runtime (#2031)
- [win-bash] Explicitly supply
HOME(inheritingbase.HOMEor falling back to Nodehomedir()) to the vendored MSYS bash so Unicode user profiles are not corrupted by ANSI code-page derivation (#2028) - [skill-explorer] Admit requests accepted by the host
connectionservice (--trusted-hostand signed browser sessions) into/api/dsh-skill-explorer/*(#2025 #2026) - [browser-view] Replace closed CDP sessions automatically and split the 5-second external connect bound from the 30-second command timeout budget
- [session-archive] Ship host-side
attachedandin-flightprotection reasons and merge them by authoritative precedence so row delete buttons, fully protected batch selections, and confirmation skip counts match the host (#2022) - [agents] Bridge the optional
uiWorkspaceandsessionsservices per instance viactx.injectso late-mounting providers enable session openers while deployments without them keep the buttons visibly disabled with a reason - [web,remote-web-ui] Mark the mobile sidebar drawer
z-indexas!importantand setpointer-events: noneon the aggregate mask so the runtime-injected official layout sheet cannot bury the drawer beneath its mask (#2012 #2013 #2014) - [liangshen] Fold both
tool/ptc-dispatchandtool/callevents infoldFactLedgerwhile skipping errored PTC dispatches so pinned facts reach[Working Context]under the defaultptcpresentation - [liangshen] Read the step tool surface from
tools.schemas(agent, context.toolSet)and page viactx.tools.restrict()to prevent false no-tools assertions in seeded child sessions on SDK 2.0.22+ (#2016) - [diagrams] Parse attribute URLs before matching their scheme so
javascript:URLs split by TAB/LF/CR or prefixed with C0 control characters are stripped (#2017) - [pin] Map
@deepseek-ai/dsh-client-ui-slotsto the registry copy indsh-message-editanddsh-web-settingsand align the mutabledsh-user-questionsanswer signature indsh-remote-bridgeso localtypecheckandbuildpass under the host SDK pin - [market] Poll the secret list after refreshing
TURNSTILE_SECRETandASSET_ATTEST_SECRETindeploy-marketto wait out the version propagation race - [pet] Repaint
whale-girl-refinedleft and right running frames to erase the stray far-arm cuff and hand at the waist and refresh the Workshop spritesheet asset (#2021)
Other Changes
- [dsh-update] Remove the
@linxin666/dsh-updatefamily self-update package outright (sources, the Russianupdatedictionary, six shared-module sync targets, and four gate baseline rows) while keeping the@linxin666/dsh-web-all/updatesilent tombstone, handing plugin version checks and updates to the official Plugins page - [market] Retire 52 community plugin entries whose host floor predates
0.2.0and rebuildmarket/distacross the skin, plugin, and pet satellite updates (now 65 skins, 12 pets, 106 plugins, and 33 presets) - [satellites] Advance all four submodule gitlinks (
dsh-skins,dsh-pet,dsh-community-plugins,dsh-presets) to their0.4.16release commits, syncing the fullscreen-open qualifier and the intake decision records - [remote-bridge] Remove the retired offline question claim window from the bilingual READMEs to match dual-surface display and first-answer-wins settlement
- [readme] Align the root bilingual READMEs with the current plugin roster, catalog counts, and model configuration examples, and escape tilde ranges to prevent GFM strikethrough rendering
- [notes] Record decision notes on the host SDK pin local gate fix, the
dsh-updatepackage removal, mobile drawer hit-testing, and explicitHOMEinwin-bash