Repository navigation
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: cce0d5e889b74566b96d54c6ec7ff13c
Branch: dev/2-overlay-readonly-reload
Base: d1ea853
At: 2026-11-05T10:38:09Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
What happens
In a read-only window, four surfaces drawn inside an overlay keep the host's sentence ("…reload…") and offer no Reload entry, while the sidebar's own Reload sits behind that overlay. A reader mid-task has to close the overlay, press Reload, and open it again.
Each of them already draws the sentence, so nothing looks broken — the missing entry only shows after a try.
- Board —
core/src/client/kanban.js:371draws
locked ? h('p', { className: 'bt-board-hint bt-read-only', role: 'status' }, hostText(roster.readOnly)) : null
and nothing beside it. - New chat, composer —
core/src/client/new-chat.js:299-302draws the same bare sentence
(this is theTo:row / composer state). - New chat, admin chosen —
core/src/client/new-chat.js:253-254, the group block. It and the
composer are mutually exclusive states of one component, so a mount covers only one of them. - Project settings panel —
core/src/client/project-board.js:867-871: the locked branch draws
only theh3, the sentence, andBack to board.
The overlays are position: fixed; inset: 0 plus a scrim (Project board CSS :14, scrim :1125),
mounted at core/src/client/index.js:943 (shadow('shell.overlay', { id: 'project-board', order: 57 }))
— so the sidebar entry is genuinely unreachable while one is open.
Expected
Every one of the four offers exactly one Reload beside the host's sentence, running the same
actions.reloadTeam read the sidebar runs (never a page reload), so a reader who was locked out
mid-task recovers without leaving the overlay.
Red first
core/test/readonly-reload-lines.test.js, extended SURFACES (7 → 11) run against a clean
d1ea853c tree holding only the extended test file:
not ok 3 - every surface that is not the header or a drawer offers one Reload — its own way out of the modal
Board dialog: one Reload entry
0 !== 1
not ok 4 - one shared piece: the sentence is the host sentence, and the control sits outside the live region
Board dialog: the sentence is read first
not ok 5 - a press runs the client's own team read, once, and sends no write
Board dialog: the entry is drawn
# tests 7
# pass 4
# fail 3
# cancelled 0
The three failures are loop assertions (one per behaviour across all surfaces), so the count is 3,
not one per surface. A throwaway probe measured each new surface individually as
sentences=1 / reloads=0 before the fix; after the fix the same file is 7/7.
Scope
- Draw all four through the shared piece that already exists —
core/src/client/read-only.js→
readOnlyLine(h, roster, actions, { key, className, style, reload = true }): the sentence stays
insiderole="status", the button outside it, one Reload per screen. KanbanDialog(kanban.js:395) andNewChat(new-chat.js:14) already receiveactions.
ProjectSettingsPanel(project-board.js:830) receives onlycall/onClose/onSaved, so
ProjectBoardOverlay(:1144) must passactions(or anonReload) down to it.- Extend
core/test/readonly-reload-lines.test.js:SURFACES(:148-154) to 11 andmountFor
(:209-213) with four branches; every component involved is already exported, so no new seam.
Writable windows keep every write control they have today. - This is the client-bundle lane: regenerate
core/client.jsplus the patch carriers and mirrors.
new-chat.jsis carried bypatches/ds-bot/0003-flybot-api-client.patch, the others by
0008-client-bundle.patch; those two plus theirfiles/mirrors and the test mirror are the only
generated files this change is allowed to touch.
Duplicate check
Searched live main and closed issues before opening (Reload dialog read-only 7 hits,
"bt-read-only" 39, Reload overlay 1): all closed and about other surfaces — #2502 (Settings
header, the shared piece this reuses), #2299 (Inbox), #2273/#2275 (task-board writes). No open
issue covers these overlay surfaces.
Activity
HugoXK commentedon Nov 5, 2026
Written-by: FlyBot Lead
在飞:已认领 Claim-Id
cce0d5e889b74566b96d54c6ec7ff13c(分支dev/2-overlay-readonly-reload,based1ea853c)。READY 已在本地(红先7 tests / 4 pass / 3 fail→ 修后 7/7),由 FlyBot Dev-2 开 draft PR 跟进;本条按在飞打agent-working,不再当待分诊条目。client: a read-only window's Board, New chat and Project settings ove…
HugoXK commentedon Nov 6, 2026
Release
Written-by: FlyBot Lead
Released: cce0d5e889b74566b96d54c6ec7ff13c
Reason: issue closed (merged)
At: 2026-11-06T02:14:20Z