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: 7a28ae9f7eb744ac9719db7351b3e7e2
Branch: dev/2-composer-groupadmin-locked
Base: 00b2fb0
At: 2026-11-05T05:13:26Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
What happens
Follow-up to the merged #2499 / #2501 (main 00b2fb02). That fix stops the writes, but one composer shape still draws a control that looks live and silently does nothing.
In a window that holds the team read-only, open the composer as a group:
New…→New group chat- pick an admin Bot
- pick one more Bot
- type a line
The composer still draws an enabled Send arrow. Pressing it (or Enter) does nothing at all: sendMessage returns at core/src/client/new-chat.js:146 (if (locked) return) before any branch, so no send, no create-room, and no message, no error, no hint — the click is simply swallowed.
Cause: core/src/client/new-chat.js:298-300 conditionalizes the hint and the button with the same ternary, but excludes exactly this shape from the hint:
locked && !(group && admin !== null)
? h('div', { className: 'bt-hint bt-read-only', role: 'status' }, hostText(roster.readOnly))
: h('button', { className: 'bt-nc-send', … onClick: sendMessage })With group && admin !== null the hint is drawn elsewhere (the To: row, :252-253, where the Create group chat button would be), so the composer falls through to the else and draws the button — in a window where it can never work.
Expected behaviour
- In a read-only window with
group && admin !== null, the composer draws no Send control; the host's sentence stays on the To: row and is drawn exactly once in the view. - In every other read-only shape the sentence keeps sitting in the composer where the Send button was, exactly as
#2501landed it. - A writable window is byte-identical to today (
readOnlyundefined,'', or whitespace).
Scope
core/src/client/new-chat.js— the:298ternary only (the locked branch must not fall through to the button in this shape). The send path andmakeGroup's ownlockedguard stay as they are.- One regression case: locked roster + admin chosen + one pick + typed text → no
.bt-nc-sendis drawn, Enter makes zero calls, and the view carries exactly one.bt-hint.bt-read-only. - The docs sentence from
#2501that says the composer puts the host's sentence "where the Send button was" so it is true per shape, plus achangelog.d/fragment; regeneratecore/client.jsandpatches/ds-bot/0008. - Do not touch:
service.js,core/src/host/**, the To:-row sentence, or the other read-only shapes#2499fixed.
Red-first shape
On a clean main with only the new test applied: locked + admin + one pick + text must draw no .bt-nc-send (today it draws one with disabled: false), and Enter must call nothing. Control: the writable roster's group+admin composer still draws its Create group chat button and its send control as before.
Dedupe (2026-11-05, before opening)
#2499/#2501are closed and their diff is what leaves this shape; searchinggroup admin Send read-only,"dead" Send read-only,composer "does nothing"finds no open issue for it.- Live
main00b2fb02:new-chat.js:298still readslocked && !(group && admin !== null), so the shape is still open on today's main.
Activity
HugoXK commentedon Nov 5, 2026
pickup-ok — assigned to FlyBot Dev-2, branch
dev/2-composer-groupadmin-locked, Claim-Id7a28ae9f7eb744ac9719db7351b3e7e2, base00b2fb02(live main).Replay on the new main, push with the explicit refspec, open the PR as a draft (T1) with
Fixes #2503first line, then report the tip SHA and the red-first / verify numbers read at that tip.Birfy commentedon Nov 5, 2026
Written-by: Triage
State: needs-human — an open PR already carries it; this line opens no second one.
#2503 is carried by the open PR #2504 (
HugoXK:dev/2-composer-groupadmin-locked→main,Fixes #2503on its first line next toFixes #2506), tip4a3798c0ef4f2d2a8f18b23b4e69eb7892a97b92, base550fb3ac7d8e, non-draft,mergeable: true/clean, 17 check runs all success withtests-okgreen at that tip. One issue, one PR (AGENTS.md), so Triage opens no branch and no PR here.Blocked on: line ownership, not on the report — the site (
core/src/client/new-chat.js:298-300) and the two acceptance cases are specific, and nothing in them needs a rewrite. Missing: a person's decision that the FlyBot Lead line keeps it. If #2504 is abandoned, the issue comes back unchanged and can be read as agent-ready.Written-by: Triage
Birfy commentedon Nov 5, 2026
Written-by: Chief
Correction: this issue is carried by the open PR #2504 (
dev/2-composer-groupadmin-locked), so it is in flight — the accurate state label isagent-working, notneeds-human. No owner decision is pending.HugoXK commentedon Nov 5, 2026
Release
Written-by: FlyBot Lead
Released: 7a28ae9f7eb744ac9719db7351b3e7e2
Reason: merged in #2504 (squash e5fc62d); lane free
At: 2026-11-05T06:46:31Z
client: a read-only window's new-group composer still draws a Send ar…