Skip to content

Face room: held Bot replies show as sent bubbles before approval and a rejected one stays; one Bot answers a single line twice #456

Closed

Description

@Birfy

Found by the product self-test on 2026-10-20 ~01:00 Asia/Shanghai (focus: Face-to-face room). Setup: ThinkFlowLab/FlyBot main 84a95a6, dsh 0.2.0-rc.2, two fresh homes A SelfA0056 (:3090, Bots Chief + Researcher) and B SelfB0056 (:3091, Bot Chief), not friends (two strangers meeting in person), Bot Social server https://47-80-69-220.sslip.io, Bots on ark/deepseek-v4-flash. Room 482915.

Problem

Held Bot replies in a Face-to-face room look sent before the owner decides, and a rejected one stays in the room.

  • On A, Researcher's reply bubble appeared in the room next to its "Waiting for approval" card (before Approve).
  • On B, both of Chief's replies appeared as normal bubbles before approval. I rejected one ("Line one from B: got it — noodles, budget 50, noted. What's next for the exchange?"). After "Rejected." it is still shown on B as a normal bubble, also after reload and in the read-only Past rooms view. (The other home correctly never received it.)
  • B's Chief answered A's single plain line twice ("Line one from B: got it…" and "Noodles it is…"), producing two approval cards. Expected at most one answer per Bot per line (Face rooms: a plain line should let every Bot in the room answer (one round, capped), not only the first (follow-up to #287) #295 rule).
  • Resolved cards leave empty stub boxes that only say "Approved" / "Rejected".
  • Card title is "Researcher → the room" (no person), unlike the person-first naming elsewhere.

Screenshots: B room with two Chief bubbles plus two approval cards; B room after Reject still showing the rejected text; empty "Rejected." stub.

Reproduce

  1. A and B in a started Face-to-face room (Auto-send off).
  2. A types a plain line; B types a 3-line message.
  3. Look at each home's own room while approval cards are pending; Reject one on B; reload.

Expected (in-chat approval design)

  • A held reply is shown only inside its approval card, visibly marked as not sent (e.g. dimmed draft inside the card), not as a normal room bubble.
  • Approve: the card collapses into the normal sent bubble. Reject: the draft disappears (or collapses to one small "Not sent" line), never a normal bubble; same after reload and in Past rooms.
  • Card names the person and Bot like the rest of the room ("Researcher (SelfA0056) wants to say:"), no empty stubs.
  • One reply per Bot per incoming line (find why B's Chief replied twice; hunch: the multi-line/queued delivery in the companion issue made the same line arrive twice, or a late reply ran a second round).

Related: closed #418 (same draft-looks-sent pattern in friend chats).

Scope

Face-room approval rendering in ds-bot/social client; test that a held then rejected room reply never appears as a sent bubble.

Activity

  1. added
    bugSomething isn't working
    area:socialFriends, invites, grants, Bot Social
    area:uiWeb/desktop UI and copy
    self-testFiled by the product self-test routine (issues only)
    on Oct 19, 2026
  2. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Maintenance triage (2026-10-20 01:58 Asia/Shanghai, main 84a95a6): bug, follows the in-chat approval design (Bot-sent messages approved by the owner via UI buttons only; nothing looks sent before Approve). Proposed: a held room reply lives only inside its approval card as a dimmed draft titled "Researcher (SelfA0056) wants to say:"; Approve collapses the card into the normal sent bubble; Reject collapses it to one small grey "Not sent" line (same after reload and in Past rooms); no empty Approved/Rejected stubs; at most one reply per Bot per incoming line (find the double delivery, likely tied to #455). Open question for the owner: on Reject, remove the draft entirely, or keep a one-line "Not sent" marker (recommended, so the owner can see a reply was suppressed). Marking needs-human.

  3. added
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 19, 2026
  4. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Owner decision (2026-10-20): Confirmed: a held reply shows only in the approval card (greyed) and becomes a bubble only after approval. On reject, collapse it to a grey 'Not sent' line (option a). Each Bot replies at most once per line.

  5. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 19, 2026
  6. self-assigned this
    on Oct 19, 2026
  7. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Claimed by the maintenance run at 2026-10-20 04:55 Asia/Shanghai. Working on branch Birfy/FlyBot:fix/456-face-held-replies per the Owner decision above.

  8. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    PR #461 fixes this, following the owner decision:

    • A held Bot reply shows only on its approval card (greyed) and becomes a room bubble after Approve.
    • Reject collapses it to one grey <Bot> · Not sent line. This is saved with the room, so it stays after a reload and in Past rooms.
    • Each Bot answers a person's line at most once. A second delivery or a late second answer is dropped.

    Minor details I decided:

    • A decided card leaves no Approved/Rejected stub.
    • The card title puts the person first: Researcher (Alice) → the room.
    • No "Rejected." note in face rooms.
    • A line still held when the room ends reads Not sent.
    • A stale send older than 60 s falls back to a normal bubble.

    Approval is still only via the Approve/Reject buttons.

  9. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 19, 2026
  10. removed
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:socialFriends, invites, grants, Bot Socialarea:uiWeb/desktop UI and copybugSomething isn't workingself-testFiled by the product self-test routine (issues only)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions