Skip to content

feat(settings): expose per-user foreground fallback controls #5627

Description

@RaresKeY

Prerequisites

Area

UI / Frontend

Problem or Motivation

The replacement foreground fallback policy must be a per-user choice. A stored candidate list alone is not consent to switch providers, and the existing default_model_fallbacks editor writes legacy data that the replacement backend intentionally does not read.

Users need one clear control that says whether a selected Chat/Agent model may fall back, plus an ordered list of concrete endpoint/model candidates that is created under the new policy. The default must remain strict.

Proposed Solution

Update Settings to expose the new per-user foreground fallback policy from #5626:

  • add an Allow fallback when the selected model is unavailable toggle, off by default;
  • keep the ordered candidate editor disabled or hidden while the toggle is off;
  • save candidates to the new policy key, never to default_model_fallbacks;
  • do not prepopulate or migrate the new list from legacy fallback values;
  • explain that fallback is limited to availability failures and that authentication, request, and configuration errors are surfaced directly;
  • reuse the existing endpoint/model selector patterns and visual language;
  • preserve owner isolation so one user's choice and candidates do not affect another user;
  • remove or relabel the legacy foreground fallback editor so it cannot imply that stored legacy values remain active.

Parent Tracker

Part of #5625.

Depends On

Scope

In scope:

  • per-user Settings toggle;
  • new ordered concrete endpoint/model list editor;
  • load/save behavior for the new policy keys;
  • clear strict/off and explicit/on copy;
  • owner isolation;
  • existing-component reuse;
  • frontend source tests, API/settings tests, and browser validation with screenshots.

Out of scope:

  • inferred big/small model choices;
  • automatic migration from default_model_fallbacks;
  • Utility, Vision, Deep Research, task, teacher, image, embedding, or search-provider fallback controls;
  • per-message or composer-level overrides;
  • new provider discovery or model capability inference.

Acceptance Criteria

  • A new user's fallback toggle is off.
  • With the toggle off, the UI states that the selected foreground model is strict and no fallback candidate editor is active.
  • Turning the toggle on allows an ordered list of concrete endpoint/model candidates to be added, removed, and reordered.
  • Save/reload preserves the toggle and list only for the authenticated user.
  • Legacy default_model_fallbacks data is neither displayed as active nor copied into the new list.
  • Empty explicit lists are handled clearly and do not imply that automatic model selection will occur.
  • Existing Settings control and selector patterns are reused without new visual conventions.
  • Desktop and mobile browser checks confirm the control is readable and operable.
  • Frontend syntax, focused settings/model-route tests, and the stacked integration smoke test pass.

Alternatives Considered

  • Reuse the legacy editor and add a toggle beside it. Rejected because the legacy values must remain disconnected from the replacement policy.
  • Enable fallback automatically when a list is nonempty. Rejected because provider switching requires explicit per-user consent.
  • Add a Chat composer toggle. Deferred because per-message/session state would broaden the first UI slice.
  • Offer big/small profiles. Rejected in favor of explicit concrete models and order.

Prior Art / Related Issues

Are you willing to implement this?

Yes — this is the third branch in the stacked series.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready for reviewDescription complete — ready for maintainer review

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions