Repository navigation
dsh-coding-sidebar 1.0.32
dsh-coding-sidebar 1.0.32
修复 0.1.7-rc.1 下「任务管理」页恒显「加载中…」:子代理目录与作业名册两条
0.1.6 数据缝被上游移除后,改为按 0.1.7 新契约读取。
现象
- 0.1.7-rc.1 宿主下,「任务管理」页把整棵拓扑渲染成一列 disabled 行、每行都写
「加载中…」(现场:36 个子代理全如此),且永不恢复;控制台零报错。
根因(逐行闭合)
SubagentView仍在读 0.1.6 时代的列表快照字段,而 0.1.7 已移除:list.subagentsByParent(子代理目录)——运行时产物命中数 43 → 0list.jobsBySession(作业名册)——44 → 0
- 两者都是可选链调用(
setSubagentCatalogOpen?.()等):缺失时静默 no-op,
于是catalogs = {}→rootCatalog === undefined→
summaryBackedLoading = (rootCatalog === undefined) && directChildren(byId).length > 0
恒真 → 走CatalogLoadingRows,按摘要镜像逐个子会话渲染aria-disabled
占位行、标签固定t('loading')。既不报错也不自愈。 - 教训:这类回归里「控制台 0 error」是无效证据——判定要看 DOM
(aria-disabled行数)与产物字段命中数。
迁移(按上游 0.1.7 契约)
- 目录:改读
projectionsBySession[parentId].values.subagentCatalog(标准逐
Session 投影值),按上游参考消费者ui-subagent/SubagentHeaderLineage.tsx
的派生方式还原 state / error / entries;行活动态取 Session 摘要;hasChildren
由子会话自身目录得出。未打开的目录分支用refreshProjections(sessionId)
显式读取——它取代了 0.1.6 的setSubagentCatalogOpen/refreshSubagents对
(无 un-observe 对端,故清理半边删除)。依据上游决策记录
.agents/notes/implemented/simplification/2026-09-08-web-subagent-catalog-projections.md。 - 作业:改用
ctx.get('jobs')(api-job-controller 客户端半)的state
快照 + 按会话watchRows(sessionId);行形状与旧镜像一致,派生逻辑未动、只换
数据源。用ctx.get而非硬 inject,保留「运行时缺该半则整段不显示」的降级姿态。 - 同 bug 类第三处:
TeamView.openTeammate也在调已消失的refreshSubagents
(打开成员前刷新名册),改为refreshProjections。
新增
src/client/subagent-catalogs.ts—— 投影 → 页面既有 catalog 形状的纯派生;src/client/use-jobs-rows.ts—— 作业名册订阅(watchRows集合随树/会话变化释放)。
兼容性说明(重要)
- 本版数据缝为 0.1.7 单线:
projectionsBySession/refreshProjections/
jobs客户端服务均为 0.1.7 才有的面。实证:0.1.6-alpha.2 宿主 runtime
(KCoder 内置 runtime)中projectionsBySession与refreshProjections命中
均为 0,且不存在 job-controller 包。 - 0.1.6 系宿主请继续使用 1.0.30(含 0.1.6 数据缝与 1.0.28 的任务管理导航修复);
在 0.1.6 上安装本版会让「任务管理」页退回「加载中…」占位行。 package.json的 peer 范围目前仍声明^0.1.6-alpha.2,与实现的 0.1.7 单线
存在口径差——建议后续把 peer 收口到^0.1.7-alpha.1,或补 0.1.6 回退分支。
验证
- 独立复核(发布前在 HEAD 上重跑):typecheck exit 0;
testsALL PASS;
smoke通过;check:artifacts174 文件字节可复现。 - 产物缝核对:
subagentsByParent/setSubagentCatalogOpen/refreshSubagents
均 0 命中;projectionsBySession/refreshProjections/watchRows在位。 - 作者 rc.1 dev 实机验证(隔离实例 + 同 dev home,打开 36 子代理会话):
修复前 36 个role=treeitem[aria-disabled=true]全「加载中…」;修复后
36 个 treeitem、aria-disabled0,显示真实条目,页面「加载中…」计数 0。
遗留
- 作业缝的在线验证未做:新起的侧车作业注册表为空(作业是进程内的),
该半已做代码 / 产物 / 类型三重核对,待现场有活作业时确认。