Skip to content

Tracer: Channel sidebar shell + 两个内置 entry(group 成员 / DM 事项) #156

Closed

Description

@DoodleBears

Parent

What to build

把 Bot mode 的右侧区域实现为 Channel sidebar(ADR-0053):一个 scope-aware、entry 可折叠的容器,替代现在写死的右侧面板(DM 显示事项、group 显示成员)。首个切片交付 shell 与两个真实 entry(group:成员;DM:事项),证明注册 seam 与跨 scope 行为,且不依赖任何未完成的 Host 侧工作。

具体范围:

  • Channel sidebar 容器:scope 跟随当前选中的实体(group Channel / PersonaBot DM);宽屏始终可见且可整体收起,窄屏默认隐藏、由 Channel header 的按钮以 overlay 唤出;不做 rail(rail 归属折叠后的 App Sidebar)。宽度/断点/过渡几何按 dsh-ui 的 measure-the-shell 流程确定。
  • entry 注册 seam:BotHarness 客户端 Cordis service(provide/inject,slot-like:id / label / order / scope / render),BotHarness 自己注册内置 entry;跨 client bundle 可用;未注册、无权限或为空时不显示,渲染占位。
  • 折叠语义:entry 独立 toggle(非 accordion)、默认折叠、展开状态 per-Channel/PersonaBot 存 client-local;键盘可达;reduce-motion 生效。
  • 迁移现有内容:把「成员」与「事项」迁成 entry,读取权威不变(仍走现有 bridge 读模型)。

Acceptance criteria

  • 真实 DSH 中:group Channel 的 Channel sidebar 可折叠展开「成员」;DM 的可折叠展开「事项」;切换 Channel/PersonaBot 时展开状态与内容正确。
  • entry 只通过统一 seam 注册,顺序由 descriptor 的 order 决定;shell 不 import 任何 entry 实现代码;移除注册后 entry 消失且不留占位。
  • 宽屏整体收起、窄屏 overlay 唤出可用;键盘可达;reduce-motion 下无位移动画。
  • 展开状态按 Channel/PersonaBot 持久在客户端本地,不进入 Host authority 或 Soul。
  • 遵守 ADR-0053:不占用、不 shadow DSH 原生 rightbar / sidebar.right.*。
  • 停在 Human 可实机操作的验收点,并附证据(截图或录屏)。

Blocked by

  • None (can start immediately).

Activity

  1. added this to the v1.0 milestone on Sep 21, 2026
  2. self-assigned this
    on Sep 21, 2026
  3. DoodleBears commented on Sep 21, 2026

    @DoodleBears
    ContributorAuthor

    实现已提交于 PR #161(未合并,停在 Human 实机验收点)。

    无头 Chrome 实测(指向本分支构建的 web-dev 实例,端口 3082):

    1. DM(Ada,默认态):右侧 Channel sidebar 显示「事项」header + 计数 0,body 默认折叠 —— 符合 ADR「entry 默认折叠」。
    2. 点击「事项」后展开,显示空态文案 —— 折叠/展开交互可用。
    3. 切到 group Channel(Team):scope 切换为「成员」,展开后列出 2 个成员(Ada、Bob)—— 跨 scope 与 entry 过滤正确。
    4. 点击 Channel header 的切换按钮:整个 Channel sidebar 收起,Channel body 占满宽度,切换按钮保留 —— 整体收起 + client-local 记忆可用。

    自动化:pnpm test 全量 493 passed;新增 registry(排序/scope/引用稳定/dispose/重复 id)、prefs(roundtrip/通知/坏存储)、layout(dock/overlay/hidden)与 entry 渲染(展开/折叠/aria)覆盖;pnpm lint、pnpm typecheck、pnpm format、pnpm build 全绿。

    Human 验收入口:http://127.0.0.1:3082/?token=w47XKjL3G-cNVQbuJmpkPVcVfu4sl3QNcmGFr6mcEPE (独立 DSH_HOME=~/.dsh-bh156,重启会换 token)。验收动作:进 BOT 模式 → 点 Ada(DM)看「事项」折叠/展开 → 点 Team(群聊)看「成员」→ 点右上角面板按钮整体收起/展开;切换不同 DM/Channel 确认各自的展开状态是分开记的。

  4. added a commit that references this issue on Sep 21, 2026
  5. DoodleBears commented on Sep 21, 2026

    @DoodleBears
    ContributorAuthor

    已交付并合并:PR #161。

    • Channel sidebar shell 按 ADR-0053 落地:一个 shell + 统一注册 seam(客户端 Cordis service,slot-like:id/label/order/scope/component/badge),BotHarness 内置 group「成员」与 DM「事项」两个 entry,shell 不 import entry 实现。
    • 折叠:entry 独立 toggle、默认折叠、展开状态 per-Channel/PersonaBot 存 client-local;整个 Channel sidebar 宽屏可收起、窄屏 overlay 唤出(Esc/遮罩关闭),不做 rail,不占用 DSH 原生 rightbar。
    • 按验收反馈调整:折叠按钮移入 Channel sidebar header 右上角,收起后保持同一屏幕坐标(实测三态 x:1404, y:13 一致);移除 Channel body header 的【私聊/群聊】;两个 header 共享 53px 高度,下边框对齐。
    • 覆盖:registry(排序/scope/引用稳定/dispose/重复 id)、prefs(roundtrip/通知/坏存储)、layout(dock/overlay/hidden)、entry 展开/折叠与 aria 渲染;全量测试 493 passed(client 216),lint/typecheck/format/build 全绿;无头 Chrome 四态实测截图确认。

    后续:Computer TB1 从 shell.overlay 迁入 entry(#150);Bot Inbox entry #152 等 #47;shell 的 measure-the-shell 几何细化可随时补。

  6. moved this from Todo to Done in Roadmapon Sep 21, 2026
  7. added
    V1.0Milestone v1.0; mirrors the GitHub milestone
    on Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

V1.0Milestone v1.0; mirrors the GitHub milestoneenhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

Type

No type

Projects

  • Status
    Done

Relationships

None yet

Development

No branches or pull requests

Issue actions