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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a templatearea: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