Hide inter-bot pair channels so only custom rooms list - #22
Hide inter-bot pair channels so only custom rooms list#22matthewhand wants to merge 321 commits into
Conversation
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
There was a problem hiding this comment.
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.
…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.
4f6061d to
66329e7
Compare
Specialist bots stay listed unless hide is on. Chief of Staff remains visible, and the same filter applies to the command palette.
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).
|
Superseded by squash commit 36a058e on |
feat: hide auto-created bot-to-bot channels from the sidebar
Draft against matthewhand/OpenMausBot
main. Branched from latestmilind-soni/OpenMausBotmain.Custom channels and agent-to-agent pair chats were the same sidebar list, so
Coder ⇄ Architectrooms looked like rooms you created. This keeps them apart.Behavior
Group.dm) stay hidden by default.Tests