Telemetry off
Documentation

Documentation

31. v0.15.0 — Live AI model discovery

Created
Sep 9, 2026
Updated
Sep 9, 2026

Release candidate prepared 2026-09-09. This release stops the AI assistant's model picker from being a hand-maintained list: each provider is asked what it currently serves, the answer is cached in your browser for a day, and the built-in list becomes a seed that renders instantly and carries the picker when a provider cannot be reached. Follows v0.14.0.

Added

  • Live model lists. The model picker in the AI assistant settings now shows what your provider actually offers. A model released today can be selected without waiting for an app update, and the list reflects the entitlements of the key you pasted.
  • Browser-direct discovery for OpenAI, Anthropic, and Google. All three expose a list endpoint the browser can call with your own key, so discovery uses the same trust boundary as chat: the key never leaves your browser except to that provider. OpenAI returns every model on the account with no names, so the list is filtered to chat families (gpt-*, o*, chatgpt-*), other modalities are dropped, and a date-pinned snapshot is hidden when its rolling alias is also listed.
  • Server-side discovery for AWS Bedrock and Google Vertex AI. New POST /api/ai/bedrock/models and POST /api/ai/vertex/models routes list Bedrock inference profiles filtered to text models invocable from the selected region, and Vertex publisher models from the google and anthropic publishers. Both catalogues are entitlement-sensitive: an inference-only Bedrock API key and an AI Studio Express Vertex project cannot list at all. The routes report that as a reason instead of failing, and the client keeps every built-in entry alongside what comes back, because such projects can often invoke a model they are not allowed to list.
  • Refresh with an answer. A refresh button next to the model picker re-queries the provider immediately and always reports the outcome: how many models are available, or the provider's own reason when the list did not change (an invalid key, a permission denial, an offline provider). Background refreshes stay silent.

Changed

  • The built-in catalog is a seed, not a gate. It still supplies readable names where a provider returns none and it always includes each provider's default model, but it no longer has to be complete.
  • Stored model selections survive. Choosing a discovered model and reloading used to reset the pick to the provider default, because the stored id was validated against the built-in list. Any non-empty stored id is now kept; known legacy ids are still migrated to their current counterparts and only an empty or malformed value falls back to the default.
  • Cache follows the credential. Discovered lists are cached for 24 hours per provider, fingerprinted by the key they were fetched with, so pasting a different key re-queries and clearing a key drops its cached list. Bedrock re-queries when the region changes.
  • The google-auth-library package is now a direct dependency, used by the Vertex catalogue route to exchange the service-account JSON for an access token. It was already installed transitively at the same version.

Verification

  • A frozen dependency install, the complete automated suite (378 files / 3,127 tests), TypeScript, the zero-warning ESLint baseline, and the optimized production build (123/123 static pages) passed during release preparation.
  • New regressions cover the discovery module (cache versioning, credential fingerprinting, staleness, abort handling, error reporting, per-provider parsing and filtering for Anthropic pagination, OpenAI snapshot hiding, Gemini generation-method filtering, and the proxy contract), the picker hook (curated first paint, debounce, superseded queries, refresh, cross-picker cache adoption, unmount abort), the Bedrock and Vertex catalogue helpers (denied listings, geo-prefix filtering, context-window variants, launch stages, version pinning), upstream error unwrapping, and the relaxed stored-selection resolution.
  • Verified in a running workspace: the Google picker populated from the live Gemini catalogue with a model not present in the seed, the refresh control reported its result, and no new console errors appeared.

Next steps

Set up a provider and pick a model: Setting Up an AI Provider.

Next: Release Notes