Skip to content

Add multi-agent tabs, context snapshots, and tab UX - #2

Merged
DevMando merged 1 commit into
mainfrom
feature/multi-agent-tabs-and-snapshots
Jul 10, 2026
Merged

Add multi-agent tabs, context snapshots, and tab UX#2
DevMando merged 1 commit into
mainfrom
feature/multi-agent-tabs-and-snapshots

Conversation

@DevMando

Copy link
Copy Markdown
Owner

Multiple concurrent agents, one per tab — each with its own conversation, project folder, model, and settings. The on-disk config becomes the defaults a new agent starts on; "Make Default for New Agents" is the only path that writes it.

  • Per-agent object graph (AgentSession) mixing app-wide singletons with fresh per-tab instances; SessionManager owns the set. The three approval services are per-agent for correctness: the "don't ask again" bypass set, the SemaphoreSlim(1,1) prompt gate, and the single-assignment approval delegates each corrupt other tabs when shared.
  • ConfigCoordinator is the sole caller of MandoCodeConfig.Save(), enforced by the MANDO001 build guard; config clones are a JSON round-trip followed by a mandatory ValidateAndClamp() (rebuilds McpServers with the case-insensitive comparer System.Text.Json drops).
  • McpCoordinator owns the single McpClientManager on a host config with MCP always enabled; the per-agent flag controls tool attachment; /mcp-reload fans out to every agent's kernel.
  • Context snapshots: capture the conversation the instant before a model switch clears it (and on demand via a tab's options menu), managed from a global left-rail panel; Import arms the active agent's next message. HistorySummarizer ports the harness's private compaction summary via the public GetHistoryAsync(); full history is stored for a future LLM-enhanced recap.
  • Tabs named Agent 1/2/...; per-tab options menu (rename / snapshot / export / close, close greyed on the last agent); header model quick-switch dropdown; session status and events render as themed status chips (green = healthy, grey = event, gold = soft warning).

Fixes over the single-agent baseline: cross-agent approval isolation, WebView2 disposal on tab/window close, NRE on tab open/close (symmetric event handling), and accessibility names on icon-only buttons. Docs: CHANGELOG [Unreleased] and README updated.

Multiple concurrent agents, one per tab — each with its own conversation,
project folder, model, and settings. The on-disk config becomes the defaults
a new agent starts on; "Make Default for New Agents" is the only path that
writes it.

- Per-agent object graph (AgentSession) mixing app-wide singletons with fresh
  per-tab instances; SessionManager owns the set. The three approval services
  are per-agent for correctness: the "don't ask again" bypass set, the
  SemaphoreSlim(1,1) prompt gate, and the single-assignment approval delegates
  each corrupt other tabs when shared.
- ConfigCoordinator is the sole caller of MandoCodeConfig.Save(), enforced by
  the MANDO001 build guard; config clones are a JSON round-trip followed by a
  mandatory ValidateAndClamp() (rebuilds McpServers with the case-insensitive
  comparer System.Text.Json drops).
- McpCoordinator owns the single McpClientManager on a host config with MCP
  always enabled; the per-agent flag controls tool attachment; /mcp-reload fans
  out to every agent's kernel.
- Context snapshots: capture the conversation the instant before a model switch
  clears it (and on demand via a tab's options menu), managed from a global
  left-rail panel; Import arms the active agent's next message. HistorySummarizer
  ports the harness's private compaction summary via the public GetHistoryAsync();
  full history is stored for a future LLM-enhanced recap.
- Tabs named Agent 1/2/...; per-tab options menu (rename / snapshot / export /
  close, close greyed on the last agent); header model quick-switch dropdown;
  session status and events render as themed status chips (green = healthy,
  grey = event, gold = soft warning).

Fixes over the single-agent baseline: cross-agent approval isolation, WebView2
disposal on tab/window close, NRE on tab open/close (symmetric event handling),
and accessibility names on icon-only buttons. Docs: CHANGELOG [Unreleased] and
README updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@DevMando
DevMando merged commit f9e4c4e into main Jul 10, 2026
1 check passed
@DevMando
DevMando deleted the feature/multi-agent-tabs-and-snapshots branch July 10, 2026 23:48
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