You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Backend already had GET /api/models proxying the endpoint's /v1/models;
the SPA was ignoring it and forcing users to type the full model name.
- api.ts: listModels({base_url, adapter, api_key_env}) returning
ModelInfo[] (id / owned_by / created).
- store.ts: availableModels / modelsLoading / modelsError / modelsKey
state plus loadModels() with module-level token cancellation so
rapid baseUrl edits don't race-write a stale list.
- connection-card.tsx:
- Mount-time + debounced (350ms) auto-fetch when baseUrl / adapter /
apiKeyEnv settle, gated on s.hydrated so the very first paint
hits the .env baseUrl rather than the static OpenAI default.
- <datalist id="evalbox-model-options"> populated with the live
list, attached via list= on the model input → native autocomplete
in Chrome/Edge/Safari/Firefox. Free typing still works for
gateways that don't expose /v1/models or that omit some served
models (proxies in front of vLLM commonly do).
- <ModelStatusPill> shows loading spinner / "{count} models" with
a refresh button / amber error pill when /v1/models is missing.
- i18n: ko + en strings for models_loading / models_count /
models_refresh / models_error.
Verified live against cliproxy.kch3dri4n.kr — 8 models discovered,
error pill renders when baseUrl is bogus, restoring the URL re-fetches.
0 commit comments