You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
core: a read-only window's Settings → Bot still draws the Bot settings form and says nothing about why #2279
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: b6a91276fff145bc8794882516ac8098
Branch: dev/2-details-readonly-bot-settings
Base: 910f630
At: 2026-11-03T06:34:33Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
What is wrong
In a read-only window (roster.readOnly set, host refuses every write) the details drawer's
Settings view still draws the whole Bot settings form. core/src/client/details-drawer.js:270
passes { bot, roster, actions, run } to BotSettingsForm and nothing else; the file never
mentions readOnly at all (grep on live main 910f6302: zero hits). So the form's 9 write
controls (inputs, textarea, select, buttons) are drawn, and every one of them is refused by the
host — with no sentence anywhere saying the window is read-only.
core/dev/harness deliberately puts readOnly on the roster every screen receives; the sibling
screens (sidebar header, schedule rows, task board) already read it. This view is the one that
never asks.
Reproduction (live main 910f6302)
Read-only window, open a Bot's drawer → Settings:
write entries drawn: 9 (expected 0), and 0 explanations in the host's words;
a writable window draws the same 9 — so the difference is not drawn anywhere;
roster.readOnly empty or blank must stay on the writable path.
New test core/test/details-bot-settings-readonly.test.js on a clean 910f6302: not ok 1 … 9 !== 0 / ok 2 - a writable window still draws the Bot settings form
(# tests 2 / # pass 1 / # fail 1). The writable case is green before the fix, so the red is not
"both sides zero".
Expected behaviour
In a read-only window the Settings view draws no Bot settings form and one visible explanation
carrying the host's own sentence for roster.readOnly (role="status", word for word from hostText). The writable rendering tree is byte-identical before and after the fix (same fixture,
normalised tree: 10199 bytes / sha256 3b027710… both sides).
Scope
core/src/client/details-drawer.js (+5/−3): gate the Settings view on roster.readOnly.
core/src/client/schedules.js (+1/−1): export the existing lockedWindow predicate instead of
copying a sixth one.
core/test/details-bot-settings-readonly.test.js (new), docs/subsystems/core-client.md (one
row update for arch-docs).
Generated artifacts (core/client.js, patches/ds-bot/0001,0008,0012, patches/ds-bot/files/**)
are regenerated in the same commit; they are the bundle and are reviewed as generated output.
Duplicate check
Searched open and closed issues for "Bot settings read-only" / "BotSettingsForm": #2253 (Bot and
group menus), #2243 (task-board create entries) and #2276 (Memory panel) are different surfaces;
no issue covers the Settings → Bot form.
Activity
core: a read-only window draws no Memory, Bot settings or ask_user wr…
core: a read-only window draws no Memory, Bot settings or ask_user wr…
core: a read-only window's Memory panel still offers its writes and s…