Skip to content

fix(chat): keep one global model choice across conversations - #552

Merged
mssssss123 merged 4 commits into
OpenBMB:mainfrom
mssssss123:codex/fix-model-selection-consistency
Sep 5, 2026
Merged

fix(chat): keep one global model choice across conversations#552
mssssss123 merged 4 commits into
OpenBMB:mainfrom
mssssss123:codex/fix-model-selection-consistency

Conversation

@mssssss123

@mssssss123 mssssss123 commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

The Web composer now uses the configured default until the user manually chooses a model, then keeps that choice across projects, conversations, reloads, and browser tabs. Switching conversations no longer clears the picker or waits for model settings from that session. Each message uses the model and parameters captured when it was submitted, even if the user changes the global choice while uploading attachments or waiting in the queue.

  • Store one browser preference for the current site, including reasoning, temperature, speed, and explicit Auto. Only manual selections change it; session creation, input acknowledgements, completion, replay, and routed execution models cannot overwrite it. Existing project/session drafts do not participate in restoration because they have no reliable global ordering. This preference does not change system configuration or synchronize across browsers/devices.
  • Return the system default explicitly in a global model catalog. Remove project enumeration from catalog reads and remove session-model GET/PUT requests from the composer. Share catalog state and in-flight requests across composers; configuration reload and WebSocket reconnect invalidate the cache even while the composer is unmounted.
  • Keep unavailable choices visible and require a replacement instead of silently falling back. Untouched selections follow changes to the configured default. Registered built-in commands such as /config and /help remain usable without a ready model.
  • Carry exact submission snapshots through new conversations, queues, and edit/resend; record them with accepted input for replay. Explicit concrete models keep no-fallback behavior, while explicit Auto retains routing. Existing session-model and one-turn-override APIs remain compatible but do not determine the Web picker's global preference. Show each response's actual model name before its timestamp in the existing hover/focus action row. The composer has no execution banner, and the footer adds no provider prefix or model tooltip. Record actual request models with assistant messages so history reload preserves the attribution; older messages without a recorded model remain unlabeled.
  • Update the API and design documentation to describe the global catalog and browser preference.

Validation on Node 22.23.1:

  • Gateway/Web TypeScript checks, backend build, and Web production build passed.
  • Web CI command: all 1,177 tests across 148 files passed. After adding the streaming-model regression, all 60 tests in the streaming-store file passed as well.
  • 9 Chromium scenarios passed, including model defaults, cross-project and cross-tab preference reuse, built-in commands, and computed opacity checks for the response model footer before/after hover. Changing the next model leaves the prior response label unchanged.
  • 9 Gateway model/catalog tests passed, including actual streamed model names and different response models surviving transcript replay after restart.
  • All 102 model/Web projection tests passed. Provider requests in tests are mocked.
  • Browser assertions confirm that switching projects adds no catalog or session-model requests. After deploying the global preference change, the local model-list HTTP endpoint measured 3–7 ms across five samples.

The existing Web CI exclusion for streamSmoother.test.ts is unchanged.

@mssssss123 mssssss123 changed the title fix(chat): honor configured defaults and persist model choices fix(chat): keep one global model choice across conversations Sep 5, 2026
@mssssss123
mssssss123 merged commit 8ba2eb0 into OpenBMB:main Sep 5, 2026
3 checks passed
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.

2 participants