Add multi-agent tabs, context snapshots, and tab UX - #2
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
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.