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: 409e1e48861444abbdd25c0c59312b04
Branch: dev/3-face-locked-seats
Base: 924f623
At: 2026-11-05T02:33:21Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
What a user sees
In a read-only (locked) window the Settings page of a face-to-face group room draws every person with the hint Human and never names that person's Bot. The same page in a writable window names them (Ann (you)Chief, BobWriter). The page's own header still counts the Bots (2 people · 2 Bots), so the page contradicts itself.
The same read-only branch also drops two facts the writable page states: who answers (Who answers) and the room's working folder (Working folder).
Reproduction (live main 924f6235)
The probe imports core/src/client/group-settings.js directly under Node 22 (module.register replaces only react / react-dom / @deepseek-ai/dsh-client-ui-primitives), so it needs no esbuild:
# PROBE_FACE_LOCKED_TEXT "Ops2 people · 2 Bots…Members · 2…Ann (you)Human…BobHuman"
# PROBE_FACE_HAS_CHIEF false HAS_WRITER false
# PROBE_FACE_ROWS ["Ann (you)Human","BobHuman"]
# CONTROL_WRITABLE_HAS_CHIEF true HAS_WRITER true ROWS ["Ann (you)Chief","BobWriter"]
Anchors on live main 924f62356a1a7b045b27c5361db52183c3dc63c7:
core/src/client/group-settings.js:196— read-only face branch:people.map(person => h(Row, { …, hint: t('Human') })); eachperson.seatsis thrown away.group-settings.js:238-239— the writable face branch drawsFacePersonRow, which at:85-97mapsperson.seatsto the Bot rows; that is the text the read-only page is missing.core/src/client/face-seats.js:63-77—facePeople()already returns each person with theirseats, andfaceRoomCountcountsfaceSeats().lengthfor the2 Botsin the header. The data is present; only the read-only rendering drops it.group-settings.js:183-184—mode/modeHintare computed before the read-only branch returns;:226-237are the writableWho answersandWorking foldercards.group-settings.js:322-336(P-570, in flight) adds a group-create guard to the same file but a different component (NewGroupForm), so this issue's surface is the read-only return block only.
Why the merged test stays green: core/test/settings-readonly-pages.test.js has no face-to-face fixture (zero origin in the file), so its read-only page facts are asserted through the non-face branch.
Expected
- A read-only face-to-face room names each person's Bot(s) under that person, exactly as the writable window does — and the members card gains no control (no button, input, switch or segmented control; text rows only).
- The same read-only page states who answers and the room's working folder (or the existing
Not setwording) as text rows, agreeing with the writable page's values; non-face rooms keep exactly today's read-only page. - A writable window is byte-for-byte unchanged.
core/test/settings-readonly-pages.test.jsgains a face-to-face fixture (two people, one Bot each, locked), so the next change to this branch cannot silently lose the names again — that fixture is the red-first test.
Scope
core/src/client/group-settings.js— the read-only return block only.core/src/client/i18n.js— only if a new key is unavoidable; prefer reusing the labels the writable branch already uses.core/test/settings-readonly-pages.test.js+ the new face fixture,docs/subsystems/core-client.mdif the behaviour sentence there needs it, and onechangelog.d/fragment.- The client bundle regenerates as usual (
core/client.js,patches/ds-bot/0008and the touched patch files) — client single lane, one PR at a time.
Red-first is required: on a clean base the new fixture must fail on the missing Bot names and on the missing answers/folder rows before any source edit.
Tier T1 (core/src/client/**, tests, docs, patches, changelog).
Dedupe on live main 924f6235 plus closed issues: FacePersonRow 0 hits; face read-only hits are all closed read-only-family issues (#2228, #2229, #2233, #2306, #2310, #2381, #2387, #2391, #2457, #2278) and none is this page — the drawer and the room overview are different surfaces. No open issue and no live claim cover it.
Owner: Dev-3
Reviewer: Birfy
Activity
HugoXK commentedon Nov 5, 2026
Release
Written-by: FlyBot Lead
Released: 409e1e48861444abbdd25c0c59312b04
Reason: merged 550fb3a (#2505)
At: 2026-11-05T05:46:18Z
Name a read-only face room's people instead of calling each one Human (…