Skip to content

Hide inter-bot pair channels so only custom rooms list - #22

Closed
matthewhand wants to merge 321 commits into
mainfrom
feat/hide-interbot-channels
Closed

Hide inter-bot pair channels so only custom rooms list#22
matthewhand wants to merge 321 commits into
mainfrom
feat/hide-interbot-channels

Conversation

@matthewhand

Copy link
Copy Markdown
Owner

feat: hide auto-created bot-to-bot channels from the sidebar

Draft against matthewhand/OpenMausBot main. Branched from latest milind-soni/OpenMausBot main.

Custom channels and agent-to-agent pair chats were the same sidebar list, so Coder ⇄ Architect rooms looked like rooms you created. This keeps them apart.

Behavior

  • Pair channels (Group.dm) stay hidden by default.
  • Custom rooms stay under Channels (and Work/Personal/etc.).
  • Hidden pairs become a single N inter-bot channels hidden row. Click it (or the eye on Inter-bot) to show them in their own section.
  • App Settings → General → Inter-bot channels is the same switch.
  • Command palette (⌘K) follows the same filter.
  • Transcript chips for bot-to-bot turns are unchanged.

Tests

pnpm exec vitest run src/lib/sidebar-groups.test.ts src/state/store.test.ts

milind-soni and others added 30 commits August 25, 2026 15:23
polar: supamaus in FUNDING.yml puts the Sponsor button on the repo,
with the direct checkout link (one-time pay-what-you-want or monthly)
as the custom entry. The README section says the quiet part out loud:
nothing ever sits behind a paywall.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add Polar funding: Sponsor button + README support section
…companion-awake

feat(computer): add secure VPS parity and companion uptime
…on-computer-tools

fix(drivers): scope local-computer approvals to real desktop-control tools only
Same for-the-badge style and 40px height as the download row, heart
front and center, one click to the Polar checkout. (Re-lands the badge
commit that missed the milind-soni#460 merge.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Big support badge under the download buttons
…soni#573)

* fix(browser): harden built-in browser isolation and takeover

* test(browser): make hardening checks cross-platform

* test(browser): isolate Windows LPAC runner setup

* test(browser): keep macOS fixture sandboxed

* docs(browser): clarify headless Electron fixture

* test(browser): preserve renderer sandbox on Windows

* docs(browser): describe Windows fixture scope precisely

* fix(browser): close review hardening gaps

* test(browser): preserve Windows Electron sandbox

* test(browser): mirror Chromium Windows sandbox setup

* test(browser): avoid Windows runner GPU regression

* test(browser): avoid GPU process in headless Windows fixture

* test(browser): isolate Windows runner regression

* test(browser): use Windows desktop sandbox runner

* fix(browser): close remaining isolation gaps

* test(browser): strengthen nested secret regression

* fix(browser): close final isolation gaps

* test(browser): handle Windows child termination

* test(browser): allocate isolated server ports safely
* feat(gemini): let bots coordinate with teammates

* test(gemini): complete MCP client handshake

@amazon-q-developer amazon-q-developer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The implementation correctly adds functionality to hide inter-bot pair channels from the sidebar and command palette. The code follows proper patterns with localStorage persistence, error handling, and consistent state management across components. All changes function as intended with no blocking issues identified.


You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.


⚠️ This PR contains more than 30 files. Amazon Q is better at reviewing smaller PRs, and may miss issues in larger changesets.

milind-soni and others added 20 commits August 30, 2026 12:05
…r your next message

In computer/browser modes every turn ends with a screen capture that runs
AFTER the bot goes idle (a real screenshot round trip). A fast follow-up
send — or the steer-queue drain — landed first, and the frame then chained
onto the new leaf, stranding the user's message ABOVE the screenshot. In
browser mode this reproduced on nearly every send.

The fold now anchors the frame to the turn's actual last message before the
capture starts, and the store gains insertMessageAfter: when the anchor is
no longer the leaf, the artifact is inserted mid-chain and the anchor's
children are re-parented onto it, so the transcript reads
turn → screenshot → follow-up and the leaf stays with the user's message.
The renderer adopts a new message as the leaf only when it actually chains
onto the current one, matching the server rule.

Room threads keep the old append (their order is array-based, not chained);
called out in the fold comment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-ordering

fix(chat): settle screenshots chain-insert at the turn instead of after your next message
…orking indicators

Mid-turn 1:1 sends wait in the server steer queue and stay off the
transcript until drain (they must never become the active leaf). Render
that queue as ghost rows at the transcript tail — dashed bubbles in send
order, each with its own cancel — instead of only a composer chip. The
chip remains for rooms, whose queue is composer-local.

Long-lived indicators stop repainting every vsync: new steps()-eased
status-pulse keyframes drive a three-dot WorkingDots cluster replacing
the header/tool/provisioning spinners and the timeline pulse, and the
working row gains a self-ticking elapsed timer that mutates its own text
node instead of committing through React. Scrollbar grabs and ArrowUp
outside inputs now break bottom-follow like wheel-up already did;
overscroll-y-contain stops trackpad chaining. Drops the dead
message.queued caption (the server no longer sets that flag).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Queued sends as ghost transcript rows + duty-cycled working indicators
…erimental-settings

Codex/promote experimental settings
Ask bot A to make a routine for bot B and it scheduled the routine on
itself: the tool had no way to name a target and the API hard-bound the
card and routine to the sender. propose_routine now takes an optional
flat for_bot_id (id from list_bots; omitted = self, unchanged). The
route resolves and authorizes the target with teaching errors (unknown
id, different section), the target rides inside the card's fingerprinted
operation so a shown card cannot be redirected, and on confirm the
routine is created with the target's botId so runs use that bot's
engine and permissions. The target is re-authorized at confirm time —
the card can sit open while the target bot is deleted or moved — and a
refusal lands on the card as held text. Card authority, quotas, and
propose_routine_action stay with the proposing bot.

Part 1 of milind-soni#583.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d-ending

A busy target returned a flat busy bounce ('try again after it
finishes') — a mid-turn dead-end that models rarely act on, so the
exchange evaporated. Both bounce points (initial check and the
post-approval re-check) now demote the synchronous ask into a durable
delegation through the existing ledger: bounded busy retries, receipts,
restart-safe, drains when the peer's blocking turn settles. The asker's
reply carries the task id with check_delegation/wait_delegation
guidance and the standard 'Delegated to @b: asked while busy' chip
lands on its thread. If the ledger refuses (cap/depth), the plain busy
bounce is returned. The busy check also moved below sender validation
so unknown senders get their 403 first.

Part 2 of milind-soni#583.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…omputer

feat(ios): support multiple paired computers
…ueue

ask_bot to a busy peer queues a delegation instead of dead-ending
Routines proposed for another bot now schedule on that bot
…er-delivery

Make queued bot replies return reliably
Auto-created bot-to-bot DMs no longer mix with custom rooms. They
live under a separate Inter-bot heading, stay hidden unless shown,
and the same filter applies to the command palette.
@matthewhand
matthewhand force-pushed the feat/hide-interbot-channels branch from 4f6061d to 66329e7 Compare August 30, 2026 20:16
Specialist bots stay listed unless hide is on. Chief of Staff remains visible, and the same filter applies to the command palette.
matthewhand added a commit that referenced this pull request Sep 2, 2026
Squash of matthewhand/OpenMausBot review PRs:

- #11 LAN loopback viewer

- #12 agent comm popups

- #14 OpenAI-compatible TTS

- #15 custom HTTP/SSE MCP servers

- #16 LAN Bearer auth

- #17 Windows NSSM service

- #21 Web Speech fallback for LAN/Windows calls

- #22 hide inter-bot channels and specialist bots

Plus tool-call inspector popup and the 8800/8802 review harness.

Not included: #18 review-only (do not merge), #20 upstream sync (this commit is the consolidation), #24 per-item hide (conflicts with #22 sidebar hide).
@matthewhand

Copy link
Copy Markdown
Owner Author

Superseded by squash commit 36a058e on main (combined review: LAN auth, MCP, TTS, comms popups, loopback viewer, Windows service, Web Speech, sidebar hide).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.