* fix(control-ui): recover auth-cold model pickers
Keep configured auth-cold models visible but disabled in chat and new-session, block submission, and link Model Setup. Fixes#123080.
* fix(control-ui): preserve rebased model picker behavior
* fix(ui): split composer model picker under the lint size cap
Repairs main's red check-lint caused by the #123090 restore.
* fix(ui): align auth-cold picker CI contracts
* fix(ui): restore the composer model picker dialog
Partial revert of #122964: the chat/new-session composer returns to the
rich searchable model picker dialog (provider groups, CLI-agent targets
folded inside). Settings pages keep the shared unified picker.
* test(ui): restore chat-model-picker in the Web Awesome ownership inventory
The restored composer picker legitimately owns its details-menu and ARIA
combobox usage; #122964 had removed it from both expected lists.
* test(ui): stop leaking pairing-prompt modals into document.body
view.pairing.test.ts mounted containers (including an open
openclaw-modal-dialog from the approve-prompt tests) into document.body
without cleanup, poisoning later dialog-owning test files in the same
worker. Surfaced by this branch's changed test scheduling in checks-ui;
input-dialog.test.ts then saw the leaked 'Approve DM access' dialog.
* fix(ui): keep a persisted model override selectable when the catalog drops it
Port #122964's synthesized-override row into the restored composer
picker: a session pinned to a retired/unavailable model gets its row in
the dialog so the selection stays visible and escapable. An entirely
empty catalog keeps its no-models state.
* fix(ui): reconcile #123085 with the restored composer picker
The rebase merged #123085's wa-select label-width mechanics into the
restored dialog picker: its chat/layout.css hunks dropped the old
trigger reservation while its tests asserted the new geometry, and its
new-session e2e block targeted a wa-select that no longer exists there.
Restore the pre-#122964 chat layout CSS and responsive test, and drop
the unified-picker label block from the new-session e2e. #123085's
shared select-picker fix stays for the settings surfaces that use it.
* fix(ui): unify channel pickers with icons
Preserve channel values and mutation ownership across Automations, pairing, setup, and Workboard while sharing accessible picker rendering and artwork.
* refactor(ui): unify model pickers
Share provider-aware model selection across chat, new sessions, Automations, Agents, model defaults, Session Observer, Talk, and Memory while preserving owner-specific values and locks.
* fix(ui): keep picker change callbacks value-only
Keep the Web Awesome element private to model-picker custom-mode handling while preserving one-argument callbacks for every picker consumer.
* fix(ui): satisfy model picker types
Keep custom sentinel options within the shared model option shape and guard optional Memory placeholder translation keys.
* refactor(ui): remove obsolete model option template import
Drop the Lit import after Agents model options became pure shared-picker data.
* fix(ui): satisfy picker lint gates
Use explicit model option mapping, remove stale E2E locals, and keep the Cron behavior suite within its enforced line budget.
* test(ui): target unified session model picker
* refactor(ui): remove fake token estimate
* feat(ui): split model picker into model and effort popovers
* fix(ui): hide filtered-out model rows under the flex option style
* fix(ui): drop unused model locator in cloud-startup e2e
* fix(ui): restore focus and expose active model option to assistive tech
* refactor(ui): add Web Awesome foundation
* refactor(ui): migrate shared menus and chat controls
* refactor(ui): migrate page controls to Web Awesome
* refactor(ui): migrate workboard controls to Web Awesome
* fix(ui): harden Web Awesome interactions
* test(ui): type Web Awesome dropdown state
* fix(ui): preserve menu focus and selection
* fix(ui): restore agent picker focus
* fix(ui): track keyboard menu dismissal
* fix(ui): ignore stale session menu closes
* fix(ui): complete Web Awesome keyboard migration
* fix(ui): repair Web Awesome lockfile graph
* docs(ui): keep release note in PR body
* fix(ui): satisfy Web Awesome migration gates
* perf(ui): keep Web Awesome theme in startup stylesheet
* fix(ui): replace reopened Web Awesome session menus
* fix(ui): keep replacement session menus open