Skip to content

A held outgoing Bot Social message is invisible when the friend's chat is hidden; the sender's chat shows it as sent #371

Closed

Description

@Birfy

Problem

A Bot Social hold (pending_approval) on an outgoing message is invisible to its owner when the chat it is addressed to is not in the list. Found on a Mac (a Bot, 测试工程师, replying to a friend home's Chief):

  • Bot Social held the reply (its DLP flagged "commitment language", see DLP commitment regex is too broad for Chinese: bare 保证 / 一定会 hold ordinary replies Birfy/bot-social#13). flybot/approvals is [], because a Bot Social hold is not a FlyBot approval.
  • The social plugin's dock (chatApprovals.setProvider / ChatApprovalDock) shows a hold only in the chat of the remote Bot it is addressed to (matched on bot.remote.handle). That friend's Chief chat is hidden in the roster, so there is no chat to hold the card.
  • A local Bot's hold is shown in its own chat only when no friend chat exists (approvalsForOpenChat: !friendChatOf(roster, item.to)), but a hidden or gone friend chat still counts as "exists". And a Bot Social hold carries no local Bot id at all (only local FlyBot holds set fromId).
  • The "waiting for the owner" note is suppressed for 1:1 chats (postChatNote(..., { chats: false }), Chat shows raw 'Tool removed: ask_user_question' cell (remainder of #140; DSH core cell) #140).
  • The sender's own chat shows the reply as if it was sent.

Result: the reply never leaves, nothing says why, and there is nothing to click.

Expected

Related: #254, #258, #278, #336 (inbound refusal is silent). Bot Social side: Birfy/bot-social#13.

Activity

  1. Birfy commented on Oct 18, 2026

    @Birfy
    CollaboratorAuthor

    Status on main 082563a (2026-10-19 00:25 Asia/Shanghai): #372 landed the main part. A Bot Social hold on a local Bot's outgoing message now shows its card in the sender Bot's chat whenever the friend's chat is hidden, gone, home-level or absent (still one place per approval, #278), the sender's row gets the wait dot, and the card says why it is held (Held for your approval: contains commitment language). The held text stays on the card. Bot Social no longer runs a keyword commitment scan (Birfy/bot-social#14), so this kind of hold should also be rarer.

    Left open for one choice: #372 puts the "held" note on the card in the sender's chat, not as a separate chat line, because there is no host API to post one for a local Bot and anything written there is read by the Bot's model. If the card is enough, this issue can be closed; if a real chat line is wanted, it needs a small host API first.

  2. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Maintenance check on main 0e72bb8 (2026-10-19): still a valid open decision. #372 covered the main case (held card in the sender Bot's chat when the friend's chat is hidden). Remaining product choices (held-message visibility / approval-card placement when multiple chats exist, and any further UX) still need an owner decision before more code. Not implementing further without clear expected behavior.

  3. Birfy commented on Oct 19, 2026

    @Birfy
    CollaboratorAuthor

    Closing as completed by #372. The approval card in the sender Bot's chat is enough for held-message visibility; no separate chat line, since a chat line would be read by the model.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions