Repository navigation
fix: save the composer's model pick on the chat so every view names the next run's model - #640
Merged
Merged
Conversation
…he next run's model The composer's pick lived in browser storage until a send, so details, `ace info` and other clients named a different model. A pick now selects the chat's model and effort through a new `select` request; channels announce the change to watchers, and info names what Automatic resolves to, which a default model change moves. Why: apps/app/src/composer.tsx#function Composer | the chat holds the model and effort pick (select op); the composer must not keep its own browser copy, or details and the CLI disagree with it
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The composer, the details sidebar and
ace infonow name the same model for a chat's next run, after a default model change, Automatic, or a pick from another client.selectrequest, instead of waiting in browser storage until a send. Details,ace infoand other clients see it at once, and it survives reload because the chat holds it.agentevent to watchers that opt in when a chat's model or effort changes. The app reads info again on that event and when host settings change.ChannelInfo.automaticsays what Automatic resolves to. The composer showsAutomatic (claude-opus-5-5), details showclaude-opus-5-5 (Automatic)for a chat with no model yet, andace modelprintsAutomatic (anthropic/claude-opus-5-5).Smoke-tested on an isolated loopback host (own ACE_HOME, config, keychain service, port 4955), using a headless browser and the CLI with real Anthropic and OpenAI keys:
Automatic (claude-opus-5-5), detailsclaude-opus-5-5 (Automatic),ace infoautomatic: claude-opus-5-5.Automatic (claude-sonnet-5-5)without a reload, and so did details and the CLI.ace infoand a second client all showed claude-haiku-4-5.· Low. Automatic → all three showed claude-sonnet-5-5 · Low. After a reload they still matched.OK.Map: ^378, ^46, ^517, ^543.
Part of #618. Not covered here: grouping and key marks in Settings → Default model, a model on the Dashboard composer, and new channels starting on the last-used model.
Built in Ace
No. This was made from Claude Code as a fix-train worker, using a headless Chromium to drive an isolated source host. Ace has no way yet to run an agent-driven fix queue across several workers like this (#5).