Skip to content

fix(app): group the default model list by provider, name the Dashboard's model, and start new channels on the last pick - #676

Merged
iamnbutler merged 3 commits into
mainfrom
fix-model-default
Oct 22, 2026
Merged

iamnbutler merged 3 commits into
mainfrom
fix-model-default

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Settings, the Dashboard and new channels now agree on which model a new channel starts on.

  • Settings → General → Default model lists models under an Anthropic and an OpenAI group. A provider without a key shows as OpenAI (no key) with a disabled "Add a key in Providers to use OpenAI models" row ((unavailable) when its key can't be read).
  • Dashboard composer has a model picker. Automatic names what it resolves to, such as Automatic (claude-opus-5-5), from a new automatic field on host settings (defaultModel resolved on the settled catalog, so it never waits on a keychain prompt). Changing the default in Settings updates it without a reload. The picker is hidden for Run in cloud, which uses the service's models.
  • New channels start on the last-used model. A pick in any chat's composer or on the Dashboard is kept per host in this client, and the app passes it as model when it creates a local channel (Dashboard send, New channel, palette, GitHub pages). Picking Automatic goes back to Automatic. A chat's composer still shows the chat's own model, never this copy.

Smoke-tested on an isolated loopback host (own ACE_HOME, config, keychain service, port 4968) from a headless Chromium, with a real Anthropic key:

  1. Dashboard picker read Automatic (claude-opus-5-5); picked claude-haiku-4-5, then New channel: the channel's composer showed claude-haiku-4-5 and ace ls listed it as anthropic/claude-haiku-4-5.
  2. Picked claude-sonnet-5-5 in that channel's composer; back on the Dashboard the picker read claude-sonnet-5-5.
  3. Picked haiku on the Dashboard and sent "Reply with just the word OK.": the new channel's reply was labeled claude-haiku-4-5 and said OK.
  4. Picked Automatic in a channel; the Dashboard went back to Automatic (claude-opus-5-5).
  5. With only the Anthropic key, Settings → Default model showed Automatic, [Anthropic: 16 models], [OpenAI (no key): Add a key in Providers to use OpenAI models]. Saving claude-sonnet-5-5 there changed the Dashboard to Automatic (claude-sonnet-5-5) without a reload.

Map: ^46, ^378.

Fixes #618 (with #640).

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).

…d's model, and start new channels on the last pick

Settings → Default model groups models under Anthropic and OpenAI and shows a provider without
a key as "OpenAI (no key)". The Dashboard composer gets a model picker that names what
Automatic resolves to, and a new local channel starts on the latest pick from any composer in
this client.

Why: apps/app/src/composer.tsx#function lastModel | the stored last pick only seeds new local channels; a chat's composer always shows the chat's own model, never this copy
@iamnbutler
iamnbutler merged commit 3fd265a into main Oct 22, 2026
1 check passed
@iamnbutler
iamnbutler deleted the fix-model-default branch October 22, 2026 22:41
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.

Composer, details sidebar and CLI disagree about which model a chat runs next

1 participant