本次发布把连神行(liangshen)行改为随 bundle 默认启用,并补齐它的调度器身份与子模型选择;任务看板获得原生的一次性定时执行与带次数上限的周期执行,验收门禁进一步收紧;工坊新增「安装全部缺失项」的批量动作。使用量的 Token 银行改为由显式路由白名单铸造,插件管理器改为从自身 manifest 读取正在运行的 DSH,SSH 死链退役端口转发隧道而不再拖垮宿主。宿主下限与 0.4.5 一致,仍为 >=0.2.0-rc.2,本版本没有需要手工迁移的改动。四个卫星仓(皮肤中心、宠物、社区插件索引、预设中心)已先发布 0.4.6,本仓随后打 tag,聚合包按 semver 消费它们。
重要变更(宿主下限不变,仍为
>=0.2.0-rc.2):本版本没有上移家族包声明的dsh.engines.dsh下限,它自0.4.5起就是>=0.2.0-rc.2,同名 host peer 一并保持一致,因此宿主不需要为本次更新做任何准备。dsh-web-settings退役了0.1.7时代的孤立 section 修复路径(legacy-import.ts及其规格一并删除):若某部署仍依赖该自动修复处理0.1.7前后遗留的设置文档,建议自行核对设置文档,其余场景不受影响;设置文档读取器本身保留。除此之外没有重命名任何已持久化的标识符、线协议字段或 profile 格式,任务看板新增的调度与验收字段在缺省时按既有行为执行。
新功能
- [dsh-web-all] 连神行行随 bundle 默认启用
- [liangshen] 交付调度器身份,并修正守卫默认值
- [task-board] 原生一次性定时执行,以及带次数上限的周期执行
- [task-board] 验收门禁拒绝无证据否决、约束验收详情、把 /goal 开关收敛为全局
- [task-board-github] 仓库列表可折叠,每行按两行显示
- [usage] Token 银行由显式路由白名单铸造 (#1831)
- [market] 新增「安装全部缺失项」批量动作,只出一份汇总报告
修复
- [liangshen] 派生子代理的行加入子模型选择 (#1833)
- [task-board] 区分「门禁从未被触发」与「交付被否决」 (#1837 #1838)
- [task-board] 判题异常时挂起验收周期,并支持记录外部判定结果 (#1828 #1826)
- [task-board] 读取时约束验收详情长度,并给清理过的尝试命名
- [task-board] 终态原因标明「仅含非法项」的验收
- [task-board] /goal 选择项默认关闭,卡片开关保持可用
- [task-board] 退还会话尚未创建即启动失败的定时执行名额
- [task-board] 空闲宿主不再轮询会话名册
- [task-board] agent preset 名册改由 Remote 命名空间到达时填充
- [task-board] 轮询节奏文案与已发布的门禁对齐
- [task-board-github] GitHub 工具结果保持无损 JSON
- [ssh] SSH 死链退役其端口转发隧道,不再拖垮宿主 (#1840)
- [remote-web-ui] 启动恢复推迟到页面加载完成之后 (#1845)
- [remote-web-ui] 竖屏下悬浮控件留在输入行内 (#1829)
- [remote-web-ui] 输入框尾行收在卡片内
- [session-archive] 归档卡片文案改由 locale 服务解析 (#1830)
- [plugin-manager] 从自身 manifest 读取正在运行的 DSH,并拆分「未验证」判定
- [plugin-manager] set-enabled 的 patch 写入脱离 HMR 事务
- [market] 安装全部的 gateway 覆盖项按卡片自有 prop 定型
- [scripts] 物化市场夹具时跳过包管理器缓存
其他改动
- [settings,market] 退役旧家族设置导入路径;工坊 worker 的 HTTP API 收敛为一份描述权威(18 条路由,含此前两份文档都未覆盖的 4 条)
- [market] 商店产物随 miku 边框修复与 macOS 侧栏修复重建,皮肤中心内容跟随四个卫星仓的
0.4.6一起刷新 - [satellites] 四个卫星仓的 gitlink 迁移到各自的发布提交;皮肤与宠物的开发者技能迁入对应卫星仓
- [perf] TypeScript 程序改为增量编译;git-graph 状态探测收敛为三个进程;session-archive 在一次 pass 内复用投影缓存索引解析与会话根遍历;覆盖率门禁的包运行改为有界并发
- [refactor] 合并单消费者的共享模块;任务看板从 state() 发放一级任务副本;sync-shared 的假树改由 manifest 派生
- [lib] 重建聚合包 bundle 并刷新其 sourcemap 与记录指纹
- [docs] 记录 #1816/#1818 的处置、一次性调度与验收规则,以及
0.4.5的发布验证快照
English
This release ships the liangshen row enabled by default and fills in its dispatcher identity and child-model selection, gives the task board native one-shot schedules with capped recurring runs and tightens its acceptance gate, and adds an install-all-missing bulk action to the Workshop. The usage Token Bank is now minted from an explicit route whitelist, the plugin manager reads the running DSH from its own manifest, and a dead SSH link retires its port-forward tunnel instead of taking the host down. The host floor is unchanged from 0.4.5 at >=0.2.0-rc.2, and no manual migration is needed. The four satellite repositories (skin center, pet, community plugin index, preset center) already published 0.4.6; this repository tags afterwards and the aggregate consumes them by semver.
Important change (the host floor is unchanged at
>=0.2.0-rc.2): this release does not move thedsh.engines.dshfloor the family packages declare, which has been>=0.2.0-rc.2since0.4.5, with the matching host peer kept in step, so no host preparation is needed for this update.dsh-web-settingsretires the0.1.7-era orphaned-section repair (legacy-import.tsand its spec are gone): a deployment still relying on that automatic repair over settings documents left behind around0.1.7should check those documents itself, and every other scenario is unaffected; the settings-document readers themselves stay. Otherwise no persisted identifier, wire-protocol field or profile format was renamed, and the task board's new scheduling and acceptance fields fall back to the previous behaviour when absent.
New Features
- [dsh-web-all] Ship the liangshen row enabled by default
- [liangshen] Deliver the dispatcher identity and fix the guard defaults
- [task-board] Native one-shot schedules and capped recurring runs
- [task-board] Reject evidence-free vetoes, bound acceptance detail and make the /goal switch global
- [task-board-github] Collapse the repository list and give each row two lines
- [usage] Mint the Token Bank from an explicit route whitelist (#1831)
- [market] Add an install-all-missing bulk action with one aggregated report
Bug Fixes
- [liangshen] Opt the spawn delegation row into child-model selection (#1833)
- [task-board] Tell a never-invoked acceptance gate apart from a rejected delivery (#1837 #1838)
- [task-board] Hold the acceptance cycle on judge anomalies and record external outcome verdicts (#1828 #1826)
- [task-board] Bound acceptance detail on read and name a cleaned attempt
- [task-board] Name the invalid-only acceptance in the terminal reason
- [task-board] Default the /goal opt-in to off and keep the card switch operable
- [task-board] Refund a scheduled run whose launch failed before any session
- [task-board] Stop the idle host from polling the session roster
- [task-board] Feed the agent-preset roster from the Remote namespace arrival
- [task-board] Align the poll-cadence copy with the shipped gate
- [task-board-github] Keep every GitHub tool result lossless JSON
- [ssh] A dead SSH link retires its port-forward tunnel instead of taking the host down (#1840)
- [remote-web-ui] Defer boot recovery until page load completes (#1845)
- [remote-web-ui] Keep the portrait composer floats on the composer row (#1829)
- [remote-web-ui] Contain the composer trailing line inside the card
- [session-archive] Resolve the archive card copy through the locale service (#1830)
- [plugin-manager] Read the running DSH from its own manifest and split the unverified verdict
- [plugin-manager] Detach the set-enabled patch write from the HMR transaction
- [market] Type the install-all gateway override as the card's own prop
- [scripts] Skip the package-manager cache when materializing the market fixture
Other Changes
- [settings,market] Retire the legacy family-settings import, and give the Workshop worker's HTTP API one description authority (18 routes, including the four neither document covered)
- [market] Rebuild the store artifacts for the miku chrome fix and the macOS sidebar fix, refreshing skin center content with the four satellites'
0.4.6 - [satellites] Move the four satellites' gitlinks to their release commits, and move the skin and pet developer skills into their own repositories
- [perf] Make the TypeScript programs incremental, cut the git-graph status spawn plan to three processes, reuse the session-archive projection-cache index parse and sessions-root walk within a pass, and run the coverage-gate packages with a bounded fleet
- [refactor] Consolidate single-consumer shared modules, hand out one-level task copies from state() and derive the sync-shared fake tree from the manifest
- [lib] Rebuild the aggregate bundles and refresh their sourcemaps and recorded fingerprints
- [docs] Record the #1816/#1818 resolutions, the one-shot scheduling and acceptance rules, and the
0.4.5release validation snapshot