Operator on a fresh install was never prompted to pick a default model, and the dashboard later advertised "Continue Setup" at the AI Setup step even though they had finished the flow. availableModels was loaded once at mount and re-fetched only when a CUSTOM provider was added. On a fresh install nothing is connected at mount, so the list starts empty and the Default Model section renders its empty state — and after an OAuth login or an API-key save it was never refreshed, so it kept saying "No models available yet. Connect a provider above to see model options." while a provider sat connected right above it. Both connect paths now refresh the catalogue. Once a provider is connected and no model is chosen, the section retitles from "Default Model (Optional)" to "Choose your default model" and scrolls itself into view once — the moment it becomes actionable is exactly the moment it is off screen, below every provider card. It stays skippable. scrollIntoView is called only when it exists: JSDOM does not implement it, and a cosmetic nudge must never throw out of an effect and take the modal down (it did — 24 suites failed until guarded). Completion is additionally marked in a `finally`, so a failed default-model settings write cannot leave onboarding recorded as unfinished. That part is hardening, NOT a proven repro: a test written against it passed with and without the change, so it was removed rather than kept as false coverage, and the reason is recorded in the suite. Also folds in the container's default git identity, which the merge investigation needed (see the follow-up commit for the per-agent identity work). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
13 KiB
13 KiB