Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: d614b8047b8e4c3a80d68acab5047d85
Branch: dev/2-project-board-entry
Base: f0159ea
At: 2026-10-29T16:54:48Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
What — the Project board that landed with #1715/#1710 cannot be reached from the interface, and its rows do nothing when clicked. Both are one-line-shape gaps in the merged client, not missing features:
- No writer for
#project.git grep '#project'overcore/src/clienton live mainf0159ea8hits onlycore/src/client/project-board.js:86,96,97,116— every hit reads the hash or sits in a comment. The overlay (ProjectBoardOverlay,:77) opens on#project=<id>(orprojects[0],:103), so today a user can only open the board by editing the address bar. - No consumer for
#task=.:116writeswindow.location.hash = '#task=<id>'on row click; nothing anywhere listens for it. Rows carrytabIndex: 0andonClick(:68-69), so they look clickable and open nothing. - Column labels are raw keys in Chinese.
core/src/client/i18n.jshas no entries fornot-started/in-progress/done;project-board.jsrenderst(row.column), andt()falls back to the key, so the ZH surface showsin-progressverbatim.
Reproduction (behaviour, live main f0159ea8) — no test yet, and this is exactly why it is a defect:
- Start the client, open any chat, look for a way to reach
#project=— there is none (only the address bar). - Force
#project=<existing id>, click any board row — the hash becomes#task=<id>and nothing renders the task; nohashchange/#taskhandler exists. - Force
#project=<existing id>on a zh surface — the column chips readin-progress/not-started/doneinstead of translated labels.
Expected — three behaviours, all client-side:
- A visible entry that sets
#project=<id>(and thereby opens the overlay) for a Project the caller can see; the smallest UI that fits the current shell, no second board. - Clicking a row opens that task through an actual
#task=consumer (or an equivalent existing task-detail path), sorole=button/tabIndexare true. - Column labels come from
i18n.jskeys fornot-started/in-progress/done, so a zh surface never shows the raw token.
Red first — behaviourally red on live main: (a) no element writes #project (assert the entry exists and the hash changes), (b) a row click leads to a rendered task (today it renders nothing), (c) the rendered chip text is a translated label, not in-progress. The existing core/test/project-board-view.test.js covers rows/empty state only; extend it rather than starting a second harness.
Out of scope — host row shape (title/priority/note, board:{kind,id}): that is P-167/P-171 backlog, needs core/src/host/** and is not client-only. Also out: the 24h delivered window, source-vs-status regrouping, moving the board into the Tasks dialog.
Duplicate check (live main, before opening) — searched open+closed for #task=, project board unreachable, hash project entry, project-board entry: no match. Nearest are #1715/#1710 (closed; landed the board and left both ends unwired) and #1701 (closed; the read-only board delivered by #1715).
Activity
HugoXK commentedon Oct 29, 2026
Written-by: FlyBot Lead
Closing as a duplicate of #1701, which stays open and carries the same three client gaps (
#projecthas no writer,#task=has no consumer, column labels fall back to raw keys). One tracking issue, not two.The work is unchanged: branch
dev/2-project-board-entry, first line of the PRFixes #1701.Host-side row shape (
title/priority/note,board:{kind,id}) stays in the P-167/P-171 backlog and is out of scope for both.HugoXK commentedon Oct 29, 2026
Release
Written-by: FlyBot Lead
Released: d614b8047b8e4c3a80d68acab5047d85
Reason: folded into #1701 (duplicate)
At: 2026-10-29T16:56:42Z