Repository navigation
fix(social): face-to-face tile UI, message sync and simpler + menu (#124 #125 #126) - #127
Conversation
Face-room send posts a human line instead of a local bot prompt so the other FlyBot instance sees it. Waiting UI is a tile grid; leave after joining ends still goes to Past rooms; live rows stop stacking Open/Start/Leave. The sidebar + is a short menu, Add friend mints an invite, and in-chat holds use readable names. Fixes ThinkFlowLab#124 Fixes ThinkFlowLab#125 Fixes ThinkFlowLab#126 Co-authored-by: Danyang Chen <birfychen@gmail.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1dbadf3381
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const named = mentionSpans(text, bots).some(span => span.bot) | ||
| if (!named) return ok(true) |
There was a problem hiding this comment.
Treat @ALL as a local Bot mention
When a face-room owner sends @all (or another word from ALL_WORDS), mentionSpans returns a span with all: true, not bot, so named stays false and this branch returns without starting the local round. The line is displayed and fanned out, but none of the owner's local Bots answer even though group-chat mention semantics define @all as calling everyone; include span.all in this decision.
Useful? React with 👍 / 👎.
| actions.openSession(room.id) | ||
| close() | ||
| }) | ||
| const menuOnly = mode === 'new' && !compose && !group && picked.length === 0 && wanted === '' |
There was a problem hiding this comment.
Exclude Bot matches from the initial action menu
On the initial mode === 'new' render, wanted is empty, so matches contains every listed Bot. Although menuOnly hides the recipient field/composer and adds a New chat action, the unconditional loop at lines 133-135 still appends the whole roster, meaning the sidebar + opens a potentially long recipient picker rather than the intended short action-only menu (and the new unbounded menu styling can run past the pane for large teams). Suppress Bot matches until New chat switches compose on.
Useful? React with 👍 / 👎.
| const mint = () => run('Invite', async () => { | ||
| const botId = joiner || mine.find(bot => bot.isMain)?.id || mine[0]?.id | ||
| if (!botId) throw new Error('Choose one of your Bots to invite a friend to') | ||
| const invite = await call('social/create-invite', { botId }) |
There was a problem hiding this comment.
Preserve user activation before copying the invite
In browsers that require transient user activation for navigator.clipboard.writeText (notably Safari/Firefox), awaiting the network-backed social/create-invite call before invoking the clipboard API loses the click activation, so the new one-click Copy invite link action mints a single-use invite but consistently falls back to “Could not copy.” The existing InviteToBot.copy path later in this bundle explicitly performs the clipboard write directly from a click for this reason; this flow needs a second user-initiated copy step or a selectable link.
Useful? React with 👍 / 👎.
Fixes #124
Fixes #125
Fixes #126
Found in a two-instance cloud UI self-test on
87c6940.#124 Face-room human messages now go through the room post path (implicit owner when not signed in) with a quiet local notice, and skip the local Bot turn unless a local Bot is @mentioned. The other instance receives it via
FLYBOT-FACE-HUMAN.#125 The waiting screen is a tile grid (avatar above name, with owner), Leave and Enter chat on one row, live member count, and owner + Bot name in join lines. Leaving after the matching window ended moves the room to Past rooms. Past rows are unique with a single Open; live rows are click-to-open with Leave.
#126 The sidebar
+is a short action menu. Add friend has one-click Copy invite link. Hold approvals show asChief → the roominstead of raw ids, and the Friends' Bots column no longer stacks jump lists. Softened "matching window" and "Add Agent" wording in the social+.Deferred: grant-tied
briefAllowed; envelopewhois still taken from JSON rather than the sending member record; DSH core still says "Add DSH Agent" outside the social+.ARCH_DOCS_BASE=upstream/main npm run verifypasses. Smoke bench not run (no Harness checkout).