Skip to content

fix(desktop): disclose sticky model overrides - #62072

Closed
embwl0x wants to merge 1 commit into
NousResearch:mainfrom
embwl0x:agent/desktop-model-override-indicator
Closed

embwl0x wants to merge 1 commit into
NousResearch:mainfrom
embwl0x:agent/desktop-model-override-indicator

Conversation

@embwl0x

@embwl0x embwl0x commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • keep a memory-only mirror of the profile default even when a sticky composer selection survives startup
  • show a compact warning icon and explanatory tooltip when a new-chat composer model differs from Settings
  • refresh the mirror immediately after Settings changes while leaving active-session model state unlabelled

Current-main proof

On d37090ac3, a persisted composer model makes refreshCurrentModel() return before getGlobalModelInfo(). The regression failed with:

expected getGlobalModelInfo to be called once, but got 0 times

The fixed path reads the profile default without clobbering the sticky selection, so the UI can disclose the override before session.create sends it.

Validation

  • 42 affected Desktop model, session-store, menu, and localization tests passed
  • focused ESLint passed
  • npx tsc -b --pretty false passed
  • full npm run build passed
  • git diff --check passed
  • publish gate and pushed-range gitleaks passed

Fixes #62055

@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists comp/desktop Electron desktop app (apps/desktop/*) area/config Config system, migrations, profiles area/billing Account usage, credit usage, billing (cross-cutting) labels Jul 10, 2026
@teknium1 teknium1 added the sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform label Jul 11, 2026
@embwl0x

embwl0x commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

Closing this branch to avoid parallel work with the earlier canonical implementation in #58527 and its CI-enabled replacement #62486.

Those branches correctly distinguish picker-originated state from stale/default-derived state. This PR's additional warning for an intentional manual override remains complementary, so I documented that tested invariant on #58527 for maintainers to retain if useful. I am not force-pushing the local conflict resolution around the duplicate-preflight block.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/billing Account usage, credit usage, billing (cross-cutting) area/config Config system, migrations, profiles comp/desktop Electron desktop app (apps/desktop/*) P2 Medium — degraded but workaround exists sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Desktop: composer model picker silently overrides Settings default — unexpected model & billing

3 participants