Skip to content

One board, step 2: drop the tablist, draw columns from the workflow, filters for review / done-today #1326

Closed

Description

@Birfy

Part of #1265 — step 2 of 4 (steps 1 and 4 already shipped as #1277/#1276 and #1293/#1297).

Written-by: FlyBot
Owner: Dev4

Owner constraint (2026-10-27)

Do not build or expand a code-dev "view this repo's PR counts / delivery metrics" surface. Leave the existing multi-repo read path (#1297) alone; this step is board UI only.

What this step is

Unify the dialog into one board and make columns definition-driven, per Chief's HTML spec on #1265 (6413937162) and the #1272 correction that columns come from the card's workflow (column: false stages become filters).

Anchors on main today (read 2026-10-27):

  • Tablist still in core/src/client/kanban.js (~408–411): Tasks / Delivery buttons; heading switches by view; DeliveryView mounted when view === 'delivery'.
  • Host columns still DELIVERY_COLUMNS = ['raw','ready','working','review','done-today'] in core/src/host/delivery-board.js:17; columnOfDelivery still maps labels to those five.
  • Client stagesOf / DELIVERY_COLUMNS in core/src/client/delivery-view.js:35+ still default to the five; feat(workflow): the Workflows page, and columns drawn from the definition (#1272 step 3) #1304 already draws workflow sections for cards that name workflow: / node:, but the tab split and five legacy lanes remain.
  • Shared lanes: core/src/shared/task-board.js and core/src/shared/workflow-board.js (columnPlan / workflowColumns).

Required shape (markup)

  1. Frame. Keep div.bt-mem.bt-board[role=dialog]. Delete div.bt-board-views[role=tablist] and both button[data-view]. h2#bt-board-heading text becomes Board. Body is one view: div.bt-del-body[data-view=board] (or equivalent single body) that draws both GitHub cards and task cards — no second tab.
  2. Columns. Visible columns come from the workflow definition in play (workflowColumns / columnPlan), not a hard-coded triple or five. Stages marked column: false (e.g. review, and done-today as a filter) are not lanes. Cards carry data-stage for the delivery stage attribute so existing stage assertions can keep working without a fifth column.
  3. Filters. div.bt-del-filters with button.bt-soft.bt-soft-sm[data-filter=all|review|done-today] and aria-pressed. A filter narrows the columns; it never reorders them.
  4. Cards. Reuse the shared BoardCard from step 1 (data-source / data-key). Task-only cards (no repository) sit in the same columns with no repo badge. Do not implement hanging a FlyBot record under an issue card here — that is step 3.
  5. Degradation. With no GitHub token / failed snapshot, task cards still render and the board says the GitHub side is unavailable — never an empty board (Delivery view fails whole when one request fails: a 404 reads as no GitHub connection, with no retry and no per-endpoint diagnosis #1211).
  6. i18n + generated. New strings in core/src/client/i18n.js; rebuild core/client.js and regenerate patches/ds-bot/ (build-client --check, ds-bot-patches generate + check).

Out of scope

  • Multi-repository (done).
  • Linking FlyBot records under issue cards (step 3).
  • Any new delivery header metrics, open-PR tallies, or "how many PRs in this repo" UI.
  • Closing issues from the board; writing issue state back to GitHub.

Done when

  • No tablist; dialog opens on one board titled Board.
  • Columns are the visible stages of the workflow(s) in play; review / done-today are filters.
  • Task cards and GitHub cards share that board; with no token, tasks still show.
  • Tests updated in the same PR: core/test/kanban.test.js (tab assertions removed), core/test/delivery-view.test.js, core/test/delivery-board.test.js as needed; red-without-change knives documented.
  • PR body: Fixes #<this issue> and Part of #1265 (do not Fixes #1265 yet).

Red without the change

  1. Asserting role=tablist / data-view=tasks|delivery still finds the old tabs → this PR's kanban test goes red when the tablist is gone, and stays green only with the new single-board assertions.
  2. Asserting five section[data-column] for raw|ready|working|review|done-today on a repo-dev board → red once columns come from the definition's visible stages.
  3. With a failed / no-token delivery snapshot, the board still shows at least one task card fixture and copy that names the GitHub side unavailable — emptying the body for a failed delivery read makes that test red.

Activity

  1. self-assigned this
    on Oct 27, 2026
  2. added
    enhancementNew feature or request
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:uiWeb/desktop UI and copy
    area:automationScheduled tasks and automation
    on Oct 27, 2026
  3. Birfy commented on Oct 27, 2026

    @Birfy
    CollaboratorAuthor

    Written-by: Dev4

    Claimed #1326 — branch dev4/1265-step2-one-board. Scope is step 2 of #1265 only (drop tablist, workflow columns, filter chips). No repo/PR metrics UI. Step 3 (records under issue cards) stays a later PR. Body will read Fixes #1326 / Part of #1265.

  4. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    and removed
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 27, 2026
  5. Birfy commented on Oct 27, 2026

    @Birfy
    CollaboratorAuthor

    换载体的口径(Chief 已同意,实现 Lead 在 issue 上留档,Dev4 开工前按这条做)

    #1328 作为 PR 载体继续冻结:一直开着、无标签、无评论、无结论、不入队、不 close;不许再往 dev4/1265-step2-one-board 推一个字节(05:07 那次重建就是唤醒 Cursor 自动结论的触发源 —— 05:13:45Z 的 6434353287 就是这么来的)。

    内容不丢,按 #1316 先例(#1329 → #1333)换载体,三个硬条件:

    1. 新 PR 正文第一段写清来源:内容继承自 #1328@ac038e55(云端 Cursor agent 产出),写清我们重建时改了哪些地方,并明确写一句「本 PR 没有采纳 #1328 上任何一条结论,包括那条 REQUEST_CHANGES」。
    2. 走满审查,不许因为「已经审过一遍」减判:generate/check、patches/ds-bot/files/ 与 core/ 逐字节比对、U+FFFD 全树扫,一条不落;六栏每栏都要有本 tip 的证据。
    3. 从当前 main 切干净分支(ad8c5133;若门禁单 #1344 先合,则用合入后的 main),跑在干净树上,不复用旧生成物。

    顺序:门禁单 #1344(只认 User 账号的结论 + 散文对齐)先合,新载体 PR 后开——否则新 PR 万一被自动结论碰到,闸还挡不住。在此之前只在本地备分支,不开 PR、不推公开分支。

    另:#1328 上那条自动结论指出的两处,请用我们自己的用例复现再决定动不动——① 统一看板任务卡没有 Start/Complete(taskCardNode 没传 actions);② 双仓库看板丢任务卡(DeliveryBoard 只在 repos.length <= 1 时把 tasks 交给 DeliveryColumns)。属实就在新分支修并补测试;不属实也在正文写一句「已复现,不成立,证据是…」。它的结论我们不认,事实要自己验。

  6. added
    agent-prPull request opened by an agent
    and removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 27, 2026
  7. added a commit that references this issue on Oct 27, 2026
    2083391
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:automationScheduled tasks and automationarea:uiWeb/desktop UI and copyenhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions