9a851de624
Ollama's /api/tags returns whatever casing was used at pull time (e.g. 'gemma3:12B' if the user ran 'ollama pull gemma3:12B'), but /api/chat rejects mixed-case tags with a 400. The two code paths are inconsistent, which surfaces the capitalized tag in the model dropdown and then silently kills every chat request against it. Lowercase on read (get_installed_models), on settings write (update_settings_route), and on ensure_model() input so a legacy mixed-case user setting can't trigger a spurious re-pull at startup. The dropdown and stored settings are now always in the form Ollama will actually accept. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>