Scope
Task
Remove the preset rail and the visual preset selection flow from the Backend view.
A backend should not behave like a model in the UI. In the default case, a backend has no preset assigned. However, a backend may optionally receive a preset through the global preset management flow.
The assignment should happen in the global Presets view, where a preset can be assigned not only to a model, but also to a backend.
Expected behavior
Backend view
The Backend view should focus on backend configuration and backend status only.
The following should be removed from the Backend view:
- preset rail
- visual preset picker
- model-like preset selection UI
A backend should not appear as if it always requires or owns a preset.
If a backend has no preset assigned, this is the normal default state.
If a backend has a preset assigned, the Backend view should show preset name and icon like currently, but only affected backends and the preset assignment itself should not happen there.
Global preset assignment
Preset assignment should be handled centrally in the global Presets view.
In that view, users should be able to assign a preset to:
- a model (already there)
- a backend
When assigning a preset to a backend, the UI must make it clear that this assignment is global.
Example wording:
This preset applies globally to all models using this backend.
This is important because backend presets are not model-specific. Once assigned to a backend, the preset affects every model that uses that backend.
Backend preset semantics
A backend has no preset by default.
A backend preset is optional and is mainly intended for backend/runtime argument defaults.
Since every model already has a model preset, conflicts are likely when a backend preset is also assigned. This is expected and should be handled through the argument merging behavior supported in main.
The UI should therefore avoid presenting backend presets as an alternative to model presets.
Instead, the mental model should be:
- model preset = model-specific defaults
- backend preset = global backend/runtime defaults
- effective runtime arguments = merged result
Argument merging
Backend preset assignment is specifically intended to work with the argument merging support in main.
When both a model preset and a backend preset exist, their arguments should be merged into the effective configuration.
The UI should make this relationship clear and should not imply that selecting a backend preset replaces the model preset.
The final precedence and conflict handling should follow the existing argument merging behavior in main.
Acceptance criteria
Tracked by Squad. Assigned: @squad:mattingly (UI/Frontend), QA: Haise, review: Lovell.
Scope
prototype/ui-redesign/feat/gui3-forms-icons-a11yGrouped by component to avoid merge conflicts.
Task
Remove the preset rail and the visual preset selection flow from the Backend view.
A backend should not behave like a model in the UI. In the default case, a backend has no preset assigned. However, a backend may optionally receive a preset through the global preset management flow.
The assignment should happen in the global Presets view, where a preset can be assigned not only to a model, but also to a backend.
Expected behavior
Backend view
The Backend view should focus on backend configuration and backend status only.
The following should be removed from the Backend view:
A backend should not appear as if it always requires or owns a preset.
If a backend has no preset assigned, this is the normal default state.
If a backend has a preset assigned, the Backend view should show preset name and icon like currently, but only affected backends and the preset assignment itself should not happen there.
Global preset assignment
Preset assignment should be handled centrally in the global Presets view.
In that view, users should be able to assign a preset to:
When assigning a preset to a backend, the UI must make it clear that this assignment is global.
Example wording:
This is important because backend presets are not model-specific. Once assigned to a backend, the preset affects every model that uses that backend.
Backend preset semantics
A backend has no preset by default.
A backend preset is optional and is mainly intended for backend/runtime argument defaults.
Since every model already has a model preset, conflicts are likely when a backend preset is also assigned. This is expected and should be handled through the argument merging behavior supported in
main.The UI should therefore avoid presenting backend presets as an alternative to model presets.
Instead, the mental model should be:
Argument merging
Backend preset assignment is specifically intended to work with the argument merging support in
main.When both a model preset and a backend preset exist, their arguments should be merged into the effective configuration.
The UI should make this relationship clear and should not imply that selecting a backend preset replaces the model preset.
The final precedence and conflict handling should follow the existing argument merging behavior in
main.Acceptance criteria
The Backend view no longer shows the preset rail
The Backend view no longer shows the visual preset picker
Backends do not appear to require a preset by default
A backend can exist without any assigned preset
Backend preset assignment is moved to the global Presets view
The global Presets view allows assigning a preset to a backend
The global Presets view allows assigning a preset to a model
The UI clearly communicates that backend preset assignment is global
The UI clearly communicates that a backend preset applies to all models using that backend
Backend presets are treated as optional global backend/runtime defaults
Model presets remain model-specific
Backend preset assignment does not replace the model preset
Model preset arguments and backend preset arguments are merged using the argument merging behavior supported in
mainConflict behavior follows the existing argument merging semantics in
mainProgrammatic semantics verified for screen readers:
Keyboard operability verified where applicable
Playwright/axe-core a11y tests cover the change
All tests pass with
npm testProgress and challenges recorded as comments on this issue
PR opened against
kpoin/ui-testingTracked by Squad. Assigned: @squad:mattingly (UI/Frontend), QA: Haise, review: Lovell.