Skip to content

feat(studio): fleet config panel — view + switch active fleet (ADR #19 A+B) - #26

Merged
brettchien merged 1 commit into
mainfrom
feat/fleet-config-panel
Aug 13, 2026
Merged

feat(studio): fleet config panel — view + switch active fleet (ADR #19 A+B)#26
brettchien merged 1 commit into
mainfrom
feat/fleet-config-panel

Conversation

@brettchien

Copy link
Copy Markdown
Contributor

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-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. The server now retains the bindings path. Catalog test + module doc updated. Profiles are names, not secrets.
  • src-taurifleet_config bridge command (mirrors runtime_context).
  • consoleFleetConfig view-model + a Source method (Tauri bridge + Mock fixture); a pure fleetConfigHtml renderer: 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 through oab-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):

  • console: tsc --noEmit clean · vitest 21/21 (7 new fleetConfigHtml tests) · vite build OK.
  • backend: cargo check -p oab-mcp and cargo check --tests -p oab-mcp both 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_edit write-back + RwLock hot-reload of the loaded bindings. Stacks on this.

Relates to #19.

🤖 Generated with Claude Code

…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
brettchien marked this pull request as ready for review August 13, 2026 16:25
@brettchien
brettchien merged commit b72cb05 into main Aug 13, 2026
2 checks passed
@brettchien
brettchien deleted the feat/fleet-config-panel branch August 13, 2026 16:25
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