Repository navigation
fix(ui,host): stable tool mask, one Main Bot term, own Bots only as Main Bot, short typed-line header, display name in People with access - #292
Conversation
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: 2689bc1ae0
ℹ️ 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".
| className: 'bt-select', 'aria-label': t('Main Bot'), value: first?.id ?? '', | ||
| onChange: event => run(actions.setMain(event.target.value, true, first ? { replace: first.id } : {})), | ||
| }, first ? null : h('option', { value: '' }, t('Choose a Bot…')), roster.bots.map(bot => h('option', { key: bot.id, value: bot.id }, bot.name)))), | ||
| }, first ? null : h('option', { value: '' }, t('Choose a Bot…')), own.map(bot => h('option', { key: bot.id, value: bot.id }, bot.name)))), |
There was a problem hiding this comment.
Reconcile existing remote Main Bots before filtering options
For an upgraded team that selected a friend's Bot as the first Main Bot through the old unfiltered select, the persisted remote ID still becomes first (the store migration only drops nonexistent Bots), but this option list no longer contains first.id. The controlled select therefore cannot show the actual first Main Bot while that remote record remains in mainBotIds with Main privileges; reconcile persisted remote Main entries, or at least render and allow removal of the selected one, before filtering the list.
AGENTS.md reference: AGENTS.md:L58-L58
Useful? React with 👍 / 👎.
| return { bot, member, name, handle, carrier, chatId: chat ? currentPart(chat) : undefined } | ||
| } | ||
|
|
||
| const cleanCarrier = value => (typeof value === 'string' && value.trim() && !/[@()]/.test(value) ? value.trim() : '') |
There was a problem hiding this comment.
Preserve punctuation in known carrier Bot names
When a known friend's Bot has a valid customized name containing parentheses, such as Research (EU), this predicate returns '' even though chat or member matched. Parentheses are allowed by the Bot-name validation and survive remote publication, so every attested owner-typed line from that Bot loses the intended via <Bot> attribution; distinguish the model-generated decoration by source or pattern instead of rejecting punctuation in a known name.
AGENTS.md reference: AGENTS.md:L61-L61
Useful? React with 👍 / 👎.
|
Maintainer review (2026-10-18 maintenance): Design OK — stable tool mask, one Main Bot term, own Bots only as Main Bot candidates, short typed-line header, display name in People with access. Leaves #276 item 4 and #275 sticky NEW open as noted. Will rebase onto latest main and squash-merge after #286. |
…own Bots only as Main Bot, short typed-line header, display name in People with access (ThinkFlowLab#276 ThinkFlowLab#275)
Part of #276 (items 1–3) and part of #275 (header and People with access). Both issues stay open for the rest (see below).
#276
hidePluginToolscomputed the known tools fromctx.tools.schemas(agent), which lists only what the Agent sees, so a tool its own mask hid dropped out and the next resolve lifted the mask (Tool added), the one after set it again (Tool removed). Tools the current mask hides now count as known; the mask is set once.You are the Main Bot(was "(Chief of Staff)") and says to use that term, the one the UI shows.#275
via <Bot>only when this home knows the carrying Bot (its plain name). The model-facing sender label (X (typed via @…, Bot Social)) and the handle-derived· owner's Botno longer reach the header.grantPersonViewno longer treats its ownName (@home)label as a handle when the grant is synced again (the existing test that expectedbob (@bob.home)now expectsBob (@bob.home)).Left open: #276 item 4 (gear on own Bot rows, a UI addition) and #275's sticky NEW divider (needs a live repro).
Ran at tip:
TZ=UTC ARCH_DOCS_BASE=upstream/main npm run verify(green). New tests fail without the fixes (tool mask). Docs: plugin-runtime.md, core-client.md, core-host.md, social.md. Changelog fragment added. Nothing deployed.