Skip to content

social: waiting-for-approval card names no destination and offers no jump #1640

Closed

Description

@HugoXK

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: ca56bf8832ef46ffbdadbc461a5efc8f
Branch: dev/1640-social-waiting-for-approval-card-names-n
Base: 3280258
At: 2026-10-29T05:16:50Z

Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.

The dock's "Waiting for the owner's approval" card is the one state in the approval chain that says nothing: no from → to, no button, no next step — on screen exactly when the room's own pending card cannot be drawn here.

Written-by: FlyBot Lead

Current behaviour (main 331dd620)

plugins/social/client.js (ChatApprovalDock, ~:2477-2481):

if (waitingOthers) {
  return h('div', { 'data-flybot': 'chat-approvals' },
    h(ChatApproval, { item: { id: 'waiting' }, canDecide: false }))
}

The item carries only an id, so the card renders its label and nothing else. Reproduced against the real client.js: tree text [no-buttons]Waiting for the owner's approval — no names, no buttons.

That state is honest but useless: it fires when the room holds a pending card this dock will not draw (the card is decided on a reply bubble, or in a Bot's chat), and it tells the person neither where the card is nor how to get there.

What to build

When the waiting card is shown, name where the room's card is decided, and jump there when the destination is a chat:

  • a local Bot's held line (fromId) → "decide in 's chat" with a jump button that calls the host's existing actions.openSession(<that chat id>) (the dock already receives actions; chatOf(bot, roster) from core/src/client/flybot-slots.js resolves the bot-chat id the same way the core slot does);
  • an inline hold, i.e. a held reply drawn on its own bubble (request.via === 'auto-reply' and request.meta.replyIn.sessionId, the same derivation localHoldView uses at ~:2199) → "decide on the reply bubble above", no jump button (the bubble is already on screen);
  • anything you cannot identify → keep today's neutral sentence and draw no button. Never invent a destination.

Strings need both languages like the rest of the dock; if the plugin has no i18n table for this, say so in the PR rather than hard-coding one language.

Scope

Only the waiting card's content. Do not touch the waitingOthers guard, the two polled lists, mine, or how real cards are drawn — those belong to #1638/#1607. Do not add Auto-send or any decision control here: the card is not decidable in this chat by definition.

Acceptance

  • the waiting card names its destination, in both the fromId and the inline case;
  • one click opens the Bot's chat in the fromId case; no button in the inline or unknown case;
  • unknown destination keeps today's neutral sentence (a new test for it);
  • existing plugins/social/test/approval-dock.test.js cases stay green, plus the new ones;
  • TZ=UTC ARCH_DOCS_BASE=<live main> npm run verify exits 0, ds-bot-patches check clean.

Base on live main; #1638 touched the same function, so if it merges first, rebase rather than re-deriving.

Activity

  1. HugoXK commented on Oct 29, 2026

    @HugoXK
    ContributorAuthor

    Release

    Written-by: FlyBot Lead
    Released: ca56bf8832ef46ffbdadbc461a5efc8f
    Reason: Released: merged as #1641 (merge f86d7b6)
    At: 2026-10-29T06:42:41Z

  2. added a commit that references this issue on Oct 29, 2026
    f86d7b6
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