feat(web): Redesign setup as an editable roster with a policy compare - #118
Merged
Merged
Conversation
The setup page asked for a Keep/Change choice per role and free-text harness:model fields, and showed the orchestrator policy as selects. Replace it with a roster table where each role row opens a searchable model picker with harness icons, plus an inline effort meter. Show the orchestrator policy as a comparison of the presets next to an editable Custom column, with icons per choice. Policy, effort, sandbox and autocompact changes animate in place, and reduced motion turns the animation off. Saving now goes through a review drawer that runs the dry run, shows a diff of the config keys Setup manages, and asks for confirmation of off-catalog models inside the page instead of a native confirm dialog. Co-Authored-By: Claude <noreply@anthropic.com>
While setup state loads, the page showed "Loading" text in every model button and placeholder controls. Render shimmer skeletons shaped like the loaded content instead, and fade the real values in once they arrive. Show the catalog name of a model (for example "Claude Opus 5.5") as the main label in the role buttons, the picker, and the undo hint, with the model id the harness receives shown muted beside it. Co-Authored-By: Claude <noreply@anthropic.com>
The refresh icon spun around a lopsided arrow, so it looked off axis. Swap it for a symmetric arc while the catalog refreshes, and show a progress bar under the status that sweeps across the discovery timeout. A failed refresh printed the raw discovery error after the catalog age. Say what happened first, for example "Refresh timed out after 12 s. Showing models from 1 h ago." Also compare keys with localeCompare in the review diff, as Sonar asks. Co-Authored-By: Claude <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.



mise ~/.config/mise/config.toml tools: gh@2.101.0
Rebuilds the
/setuppage around a roster table. Each role row opens a searchable model picker grouped by harness, with harness icons, and has an inline effort meter. Models show their catalog name (for example "Claude Opus 5.5") with the id the harness receives muted beside it. The orchestrator policy is shown as the three presets side by side next to an editable Custom column, with an icon for each choice. Sandbox and autocompact become a segmented control and a switch.The previous page asked for a Keep/Change choice per role, took free-text
harness:modelvalues, and hid what each policy preset actually does behind a select. That made the current setup hard to read and a mistyped model easy.Saving now goes through a review drawer. It runs the dry run, shows the checks, and shows a diff of the config keys Setup manages, built from the state response and the
proposta. An off-catalog model is confirmed with a checkbox inside the drawer instead of the nativeconfirm()dialog. The dry-run route never accepts off-catalog models, so a 422 whose only failures are models the user can confirm still counts as reviewable, and any other failure keeps Save disabled. Apply sendsoffCatalogConfirmedas before.Policy, effort, sandbox and autocompact changes animate in place: the column highlight slides, the Custom picks and the policy fingerprint move, and changed labels fade in. While state loads, the page renders skeletons shaped like the final content and fades the values in. Nothing slides on first load, and
prefers-reduced-motionturns the motion off.The catalog refresh button spins a symmetric arc and shows a progress bar that sweeps across the discovery timeout. A failed refresh now reads as "Refresh timed out after 12 s. Showing models from 1 h ago." instead of the raw discovery error.
Things worth a careful look:
buildSetupSelectionand the setup API are unchanged. The controller keeps a draft and derives the old form values from it inreadForm(). A role is skipped unless its model or effort changed. Sandbox and autocompact are sent only when they differ from the saved value..toString(), so every helper it uses lives insidecreateSetupPageController.src/web/setup-icons.tsas an inline SVG sprite, with no new dependencies..specs/features/web-setup-roster/spec.mdholds the requirements, and the olderweb-setup-redesignspec now notes which parts it replaces.