Skip to content

dsh-coding-sidebar 1.0.32

Choose a tag to compare

@kkutysllb kkutysllb released this 23 Sep 23:06
· 60 commits to main since this release

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 → 0
    • list.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;tests ALL PASS;
    smoke 通过;check:artifacts 174 文件字节可复现。
  • 产物缝核对:subagentsByParent / setSubagentCatalogOpen / refreshSubagents
    均 0 命中;projectionsBySession / refreshProjections / watchRows 在位。
  • 作者 rc.1 dev 实机验证(隔离实例 + 同 dev home,打开 36 子代理会话):
    修复前 36 个 role=treeitem[aria-disabled=true] 全「加载中…」;修复后
    36 个 treeitem、aria-disabled 0,显示真实条目,页面「加载中…」计数 0。

遗留

  • 作业缝的在线验证未做:新起的侧车作业注册表为空(作业是进程内的),
    该半已做代码 / 产物 / 类型三重核对,待现场有活作业时确认。