Skip to content

Align background-agent picker with Settings#4

Merged
hamzamerzic merged 3 commits into
mainfrom
feat/settings-default-model-picker-20260722
Jul 22, 2026
Merged

Align background-agent picker with Settings#4
hamzamerzic merged 3 commits into
mainfrom
feat/settings-default-model-picker-20260722

Conversation

@hamzamerzic

@hamzamerzic hamzamerzic commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • replace the split inherit/override controls with the same full-width model picker pattern used by Möbius Settings
  • wrap those choices in Settings-style draggable priority rows; pointer drag or keyboard arrows swaps primary and fallback
  • show “Default from settings” as the selected inherited row and switch to an app override when a model is chosen
  • keep News’ immediate durable-save, newest-wins, and rollback behavior
  • show effort as accessible Settings-style dots and expose selected rows to assistive technology
  • release News 1.14.11

Validation

  • npm test — 84/84 passed
  • platform validate-app.py — 0 errors, 0 warnings
  • git diff --check

@hamzamerzic

Copy link
Copy Markdown
Contributor Author

Independent exact-head review (fef458b422f608d88c288005eb82d301f867edb0): hold merge pending two fixes.

  1. ModelPicker renders its position:absolute; inset:0 backdrop inside .mobius-agent-priority-row (a positioned/transform stacking context). The backdrop is row-bounded and the sheet cannot reliably cover/dismiss across the app. Clean production already contains the missing follow-up: portal the sheet to document.body (1c3aa0f, with regression test 59e0dad). Please bring that fix here while retaining this PR's stronger triggerLabel and aria-pressed semantics.

  2. The reorder is not identity-preserving when either row inherits Settings. primary_agent_mode: system resolves system choice 0, while secondary_agent_mode: system resolves system choice 1. Example: [system primary A, app override C] is swapped by the UI into [app C, system secondary B], not [C, A]; [system A, system B] is a no-op. Because News persists the swap immediately, this can durably save a different agent set than the drag preview promises. Either materialize the resolved inherited choices when reordering, add a stable source/order contract, or disable/clarify reorder for inherited rows.

Follow-up quality: the drag handles are named only by ordinal (Move background agent priority 1/2), unlike Settings' provider-named handles, and there is no reorder announcement. Please include agent identity and an aria-live result if this remains draggable.

Verified: exact head is clean/mergeable with green CI; npm test 84/84; current platform validate-app.py 0 errors/0 warnings; manifest/version/source-file/bundle closure and git diff --check pass. News' immediate durable-write, superseded-response guard, rollback, and same-agent warning remain intact.

@hamzamerzic
hamzamerzic merged commit b10de1d into main Jul 22, 2026
1 check passed
@hamzamerzic

Copy link
Copy Markdown
Contributor Author

Post-merge exact-head closure: I rechecked final 517b7ced97fc38a511de701219f3ceb4baa9fad7 after the requested fixes. The picker is body-portaled; inherited rows cannot perform identity-changing reorder; and drag handles/live announcements identify the affected agents. News still preserves its immediate durable-write, superseded-response, rollback, and same-agent warning contracts. Final validation: 85 tests passed. The earlier hold is fully resolved.

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