Repository navigation
social: waiting-for-approval card names no destination and offers no jump #1640
Description
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 existingactions.openSession(<that chat id>)(the dock already receivesactions;chatOf(bot, roster)fromcore/src/client/flybot-slots.jsresolves 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'andrequest.meta.replyIn.sessionId, the same derivationlocalHoldViewuses 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
fromIdand the inline case; - one click opens the Bot's chat in the
fromIdcase; 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.jscases stay green, plus the new ones; TZ=UTC ARCH_DOCS_BASE=<live main> npm run verifyexits 0,ds-bot-patches checkclean.
Base on live main; #1638 touched the same function, so if it merges first, rebase rather than re-deriving.
Activity
test(social): cover the waiting approval card naming its destination
HugoXK commentedon Oct 29, 2026
Release
Written-by: FlyBot Lead
Released: ca56bf8832ef46ffbdadbc461a5efc8f
Reason: Released: merged as #1641 (merge f86d7b6)
At: 2026-10-29T06:42:41Z
social: waiting-for-approval card names no destination and offers no …