Repository navigation
Face-to-face in the sidebar +, removed Bots stay gone, faster Friends' Bots panel (#92) - #100
Conversation
The owner meant the global + new-chat picker (next to Search), not
Friends' Bots + Add. A plugin slot flybot.new-chat.action adds
Face-to-face group beside Create group chat, using the same t() map.
A hide was forgotten on the next fetch: forgetHiddenIfGone ran on
legacy list_friends, failed, and partial results, wiping hiddenRemotes
to {}. Forget a hide only after two consecutive successful home
absences (or an explicit revoke). Hidden handles stay out of
flybot.remote.publish so persisted remote chats do not return in the
sidebar or 发给 picker; gone and home-level Friend rows are filtered
too. Owner labels match the sidebar.
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: 9c5b68fc5b
ℹ️ 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".
| "src/client/new-chat.js", | ||
| "src/client/palette.js", | ||
| "test/flybot-client.test.js", | ||
| "test/new-chat.test.js", |
There was a problem hiding this comment.
Regenerate 0003 with the new core test
At this reviewed tree, node scripts/ds-bot-patches.mjs check reports core/test/new-chat.test.js: committed but not produced by the patches: this topic now assigns the file to 0003, but 0003-flybot-api-client.patch has no diff for it. The required verify job therefore fails, and reconstructing core/ from the patch stack drops the new regression test; regenerate and commit 0003 with the test.
AGENTS.md reference: AGENTS.md:L68-L68
Useful? React with 👍 / 👎.
| const people = [ | ||
| ...roster.bots.filter(bot => matchesName(bot.name, bot.role)).map(bot => ({ | ||
| key: bot.id, avatar: h(BotAvatar, { bot, size: 24, badge: false, live: false }), title: bot.name, | ||
| ...roster.bots.filter(bot => isListedRemoteChat(bot) && matchesName(bot.name, bot.role, pickerBotLabel(bot))).map(bot => ({ |
There was a problem hiding this comment.
Keep hidden local Bots searchable
When a non-main local Bot is hidden via Settings / Hide from sidebar, isListedRemoteChat returns false solely because bot.hidden, so this new filter removes it from the command palette. The settings UI explicitly promises “Search still finds it,” and the unhide branch on line 56 can no longer be reached; restrict this remote-chat filter so ordinary hidden local Bots remain searchable.
Useful? React with 👍 / 👎.
| if (listedHomes) { | ||
| if (listedHomes.size === 0) continue | ||
| const homeKey = homeOfHiddenHandle(key) | ||
| if (homeKey && !listedHomes.has(homeKey)) continue |
There was a problem hiding this comment.
Clear hidden state when an entire home is revoked
When the hidden Bot is the only granted Bot from a home and the relationship or grant is revoked, a successful list_remote_bots response omits that entire home. This continue prevents absentFetches from ever advancing in that case, and repo-wide search shows clearHiddenRemote is not used by social.js; if the handle is later granted again it is still filtered forever instead of reappearing. Clear hides on confirmed revoke or otherwise distinguish a complete home absence from a partial result.
Useful? React with 👍 / 👎.
| function FriendsBots({ renderBot, remoteChats, actions } = {}) { | ||
| useStyles() | ||
| const [data, setData] = useState(null) | ||
| const [data, setData] = useState(() => readCachedRoster()) |
There was a problem hiding this comment.
Invalidate the roster cache after removing a Bot
After Remove this Bot succeeds, removeBot updates only component state with setData(result) and never rewrites this newly restored session cache. On a sidebar or client remount, readCachedRoster() therefore renders the removed Bot again until the fresh high-latency request finishes, or indefinitely if a restart refresh fails. Update or invalidate ROSTER_CACHE_KEY with the hide response so removed entries stay gone.
Useful? React with 👍 / 👎.
generate missed core/test/new-chat.test.js while it was untracked, so check reported it committed but not produced by the patches. Record it in 0003-flybot-api-client. Describe flybot.new-chat.action and listed remotes in ds-bot-core so the topics.json change has a subsystem doc. Co-authored-by: Danyang Chen <birfychen@gmail.com>
…Lab#107) Follow-up to ThinkFlowLab#100 (owner feedback). - Each Bot shows its own distinct avatar in the Face-to-face Bot picker and in the waiting room. - The waiting room is a wrapping tile grid (avatar on top, name below), no owner subtitle or heavy badge. - Leave and Enter chat share one footer row. - Tests updated; local verify passed. --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Follow-up to #96 / #93 / #91.
flybot.new-chat.actionslot (patch layer). It also stays in Friends' Bots + Add and works while the roster is loading.flybot.remote.publish, so persisted remote chats do not return in the sidebar, the send-to picker or mentions. Home-level rows are filtered the same way.