feat(studio): fleet config panel — view + switch active fleet (ADR #19 A+B) - #26
Merged
Conversation
…A+B) The visible config surface the ADR #19 read model was missing: which fleet this Studio is managing, against which credential/account, and the ability to switch between fleets from the UI. - oab-mcp: new read-only `fleet_config` tool (9th tool) — lists the configured per-fleet bindings (name/cluster/region/profile/expected_principal) plus the config file path and default cluster. Server now retains the bindings path. Profiles are names, not secrets. Catalog test + module doc updated. - src-tauri: `fleet_config` bridge command (mirrors runtime_context). - console: FleetConfig view-model + Source method (Tauri + Mock fixture); a pure `fleetConfigHtml` renderer (one switchable button per fleet, empty state shows where to add bindings). Clicking a fleet re-points every read (roster + identity) at its cluster — the ADR "switch" step, which through oab-mcp's per-cluster binding changes the managing credential. 7 new render tests. Slice A (view) + B (switch) of the config panel. Editing (write-back to fleets.toml) is slice C, stacked on this. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brettchien
marked this pull request as ready for review
August 13, 2026 16:25
This was referenced Aug 13, 2026
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.
Drafted by Orca (
ecs-claude) — flagging authorship (shared GitHub identity across the fleet).The config panel the ADR #19 read model was missing — surfaces "which fleet am I managing, against which account?" and lets the operator switch fleets from the UI. Slices A (view) + B (switch); editing (write-back) is slice C, stacked on this.
What:
oab-mcp— new read-onlyfleet_configtool (9th tool): lists the configured per-fleet bindings (name/cluster/region/profile/expected_principal) plus the config file path and default cluster. The server now retains the bindings path. Catalog test + module doc updated. Profiles are names, not secrets.src-tauri—fleet_configbridge command (mirrorsruntime_context).console—FleetConfigview-model + aSourcemethod (Tauri bridge + Mock fixture); a purefleetConfigHtmlrenderer: one switchable button per fleet, active fleet highlighted, and an empty state that shows where to add bindings (directly answers "I see no panel for config"). Clicking a fleet re-points every read (roster + identity) at its cluster — the ADR switch step, which throughoab-mcp's per-cluster binding changes the managing credential/account.Effect: with two fleets on different accounts in
fleets.toml, the panel lists both; clicking one switches the whole console (roster + identity panel) to that fleet's account — the "switch fleet → switch managing account" the ADR called for, now visible and one click.Verification (this runtime now has extended resources, so the Rust side was built locally too):
tsc --noEmitclean ·vitest21/21 (7 newfleetConfigHtmltests) ·vite buildOK.cargo check -p oab-mcpandcargo check --tests -p oab-mcpboth clean. Rust test execution is left to CI (build-test) — linking the oab-mcp test binary statically pulls the full aws-sdk and has previously exhausted this runtime's disk; the tests are pure (tools()/ JSON shape).Next (slice C): in-app editing of the bindings — a structured form + a format-preserving
toml_editwrite-back +RwLockhot-reload of the loaded bindings. Stacks on this.Relates to #19.
🤖 Generated with Claude Code