Skip to content

Pick the browser profile a chat works in (GODM-27) - #25

Merged
danielehrhardt merged 4 commits into
mainfrom
agent/c-pro/659809e90eaf
Sep 29, 2026
Merged

danielehrhardt merged 4 commits into
mainfrom
agent/c-pro/659809e90eaf

Conversation

@danielehrhardt

Copy link
Copy Markdown
Contributor

What does this change?

Pick the browser profile a chat works in, right from the composer (GODM-27).

  • Composer chip (new chat + existing chat):
    • A quiet "Browser" button while the chat uses the default profile.
    • A pill with the profile's name once one is picked for the chat. It is dashed when the profile comes from the agent's pin or the workspace default, and shows a live dot while that browser runs.
    • The picker lists every profile with its scope, cookie count and running state. "New profile" creates one and selects it right away; "Manage" jumps to the Browser page.
    • The chip is hidden when the agent has no browser, and when the chat works in a VM (its browser then runs in the guest).
  • Resolution: the chat's profile, else the agent's pinned one, else the workspace default, else the global default. Stored in conversations.browser_profile_id (migration 11).
  • Runs: the browser lock, the browser-use MCP server, vault fills and missing-login detection all use the same profile, resolved once when the run starts. A chat waiting for a busy browser starts as soon as it's switched to a free profile.
  • Delegation: work for an agent without a pinned profile keeps the profile picked for the caller's chat, when that profile is global or in the target agent's workspace.
  • Live view: the side panel follows the chat's profile and its footer says "Picked for this chat". If you switch mid-run, the panel keeps showing the browser the agent is still driving; the new profile applies from your next message.
  • Deleting a profile sends its chats back to their default.
  • The composer's context tray now wraps instead of squashing chips on narrow windows.

How was it tested?

  • pnpm typecheck: clean.
  • bun test in packages/core: 650 pass, 0 fail. New tests cover:
    • a chat running in its own profile next to a busy default one
    • a waiting chat switched to a free profile starts
    • validation, and clearing on profile delete
    • delegation inherits the profile within reach, and not across workspaces
  • macOS, dashboard via vite + core on an isolated GODMODE_HOME:
    • picking and resetting a profile on the home page and in a chat
    • the dashed state for an agent-pinned profile
    • "New profile" from the picker
    • the side panel footer
    • the tray at 420–1440px wide

Screenshots are attached to GODM-27.

Checklist

  • pnpm typecheck and pnpm test pass
  • cargo clippy / cargo test pass (if apps/desktop/src-tauri changed) — not changed
  • API changes are reflected in packages/shared and apps/desktop/src/lib/api.ts
  • No secrets, tokens or personal data in code, fixtures, logs or screenshots
  • Docs updated where behaviour changed (docs/ARCHITECTURE.md)

# Conflicts:
#	docs/ARCHITECTURE.md
#	packages/core/src/db/migrations.ts
# Conflicts:
#	apps/desktop/src/pages/chat/chat-conversation.tsx
#	packages/core/src/mcp/tools.ts
#	packages/core/src/runner/mcpConfig.ts
#	packages/core/src/runner/runner.ts
@danielehrhardt
danielehrhardt merged commit 34a0b67 into main Sep 29, 2026
5 checks passed
@danielehrhardt danielehrhardt mentioned this pull request Oct 8, 2026
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.

1 participant