Repository navigation
A room-line approval card says "the room": name the room it belongs to #991
Copy link
Copy link
Closed
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copybugSomething isn't workingSomething isn't working
Description
Symptom
A held line for a face-to-face room draws its approval card with the destination literally "the room": SelfTest's own reading on the bench was Waiting for approval / Chief (SelfTest B2) → the room (holdReason: face_room_auto_send_off, quoted on #977). With two rooms open that card cannot say which room the line belongs to, and the decision (Approve / Reject) sends it into a room the owner cannot identify. The room is known where the card is built — it is just thrown away.
Where (main 0553ba1e, plugins/social/src/social.js)
approvalView():152-195builds the card's fields.:179is the literal:toName: cleanText(to?.display_name) || (kind === 'face_room_message' ? 'the room' : undefined).:180already putsroomIdon the view (item.room_id || item.face_room_id || item.message?.room_id).- The approvals listing
:2960-2984is the place that knows the live room::2977fills a missingroomIdfromholdRooms()[id].roomId,:2978drops a card whose room is not live (faceHoldLive(item.roomId)—faceHoldLiveat:2936). So every surviving card has a room id and a live room. - The room's number is on hand as
settings.faceRooms[roomId]?.joinCode(used this way at:3398and:3656);faceRoomTitle(...)builds the human title from the same inputs. - Two renderers print
item.toNameand each has the same bare fallback:plugins/social/client.js:593and:1937(readableParty(item.toName) || (item.kind === 'face_room_message' ? 'the room' : ...)).
Expected
A room-line card names its room — the number the owner typed (the room 482913), or the room title — so two open rooms produce two distinguishable cards. Anything the owner can match to the room he sees is enough; the bare "the room" cannot be.
Acceptance
- Red test first: two live face rooms (two
settings.faceRoomsentries with differentjoinCodes) each holding one line → each card names its own room; neither reads a barethe room. Fails at0553ba1e, passes after. - A single open room still names it (not "only when ambiguous"): the number is there in the one-room case too.
- A legacy hold with no
roomId, or a room that is no longer live, keeps today's rule: no card anywhere (:2977-2978unchanged). toNamestays a plain string andapprovalViewkeeps a fallback, so neither renderer (client.js:593,:1937) can printundefinedfor a card built by an older shape.- Docs and changelog:
docs/subsystems/social.md's sentence about the card naming the recipient (Friend's Bot named four ways in one DM; approval card reads 'Chief → Chief (SelfB1233)' after reload but 'Chief → SelfB1233' before; pick one person-first format #498) also says the room is named, andchangelog.d/has a fragment (the owner sees the difference). plugins/socialsuite green, and no change to the approve / reject path or tofaceHoldLive's liveness rule.
Out of scope
- The approval flow itself: The room-line approval card has never been proven through the room input box (only through the API, which cannot make one) #977 verifies it end to end (room input box, approve → the line enters the room, reject → nothing delivered). This issue is only the name on the card; closing The room-line approval card has never been proven through the room input box (only through the API, which cannot make one) #977 is not implied by this.
- The social dock and overlay wording outside these two fallbacks.
- Any shell change.
Metadata
Metadata
Assignees
Labels
area:socialFriends, invites, grants, Bot SocialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copyWeb/desktop UI and copybugSomething isn't workingSomething isn't working
Activity
Birfy commentedon Oct 24, 2026
Owner: Dev2 (Triage, assigned by Chief 2026-10-24 as the next real code target).
Reviewer: Reviewer
Line numbers read at main
0553ba1e. The observed card text is SelfTest's own reading, quoted on #977 (→ the room,holdReason: face_room_auto_send_off).Birfy commentedon Oct 24, 2026
Claiming: branch
dev2/fix/991-name-the-room, base maind2578496.Plan: red test first — two live
settings.faceRoomsentries with differentjoinCodes, one held line each → each card names its own room; a single room still names it; a legacy hold with noroomId/ a dead room stays cardless. Fix at the place that already knows the live room (social.js:2960-2984), keepingapprovalView's fallback so neither renderer printsundefined.Owner: Dev2
Name the room on a held room-line card (#991)
Name the room on a held room-line card (#991)
Name the room on a held room-line approval card (ThinkFlowLab#991) (T…
Read a room number only when it is exactly six digits, and keep two c…