Add eye toggle button for all API key input fields so users can verify their keys before saving.
Changes:
- BaseProviderForm: wrap single API key field (Gemini/Codex/Claude/Vertex) with passwordField + toggle button
- BaseProviderForm: wrap per-entry API key fields (OpenAI-compatible) with passwordField + toggle button
- BaseProviderForm: extract applyRawApiKey helper to populate apiKey from resource.raw in edit mode
- BaseProviderForm: sync initialFormSignature with applyRawApiKey to prevent false isDirty
- sharedForm.module.scss: add .passwordField, .passwordInput, .passwordToggle styles
- i18n: add showApiKey/hideApiKey keys to en, zh-CN, zh-TW, ru locale files
- accessibility: add aria-label and title attributes on both toggle buttons
fix(provider): update button icon styles in ProviderHeaderCard
style(provider): enhance layout and typography in ProviderHeaderCard and ProviderResourcePanel
fix(provider): update status styles in ProviderResourceTable and sharedForm
- New useModelDiscovery hook fans out to modelsApi.fetchGemini /
fetchV1 / fetchClaude / fetchModels based on brand and surfaces
loading, error and the normalized model list
- New ModelDiscoveryPanel renders an inline search, select-all and
per-model checkboxes with an Already added marker for entries that
already exist in form.models
- BaseProviderForm: show a Fetch from endpoint button at the top of
the models section for the supported brands, with apply merging
the picked names into form.models while skipping duplicates and
replacing the empty placeholder row
- Add i18n keys (en/zh-CN/zh-TW/ru) for the discovery toolbar, list
states and apply count
- Introduce useConnectivityTest hook that drives per-key and bulk tests
via apiCallApi against the chat-completions / messages endpoints, with
signature-based status reset
- OpenAI form: each API key entry header now shows a status icon plus a
per-key Test button, and the entries section gains a Test all button
- Claude form: enable the Test model field and add a Test button with
inline status; falls back to the persisted apiKey when the edit form
field is left blank
- Add ConnectivityStatusIcon, related styles (spin keyframes, buttons,
error banner), and i18n keys (en/zh-CN/zh-TW/ru) for the test labels
and validation messages
- Deleted AiProvidersVertexEditPage and its associated routes.
- Consolidated AI provider routes under ProvidersWorkbenchPage.
- Removed Claude and OpenAI draft stores as they are no longer in use.
- Updated theme styles to include new workbench tokens for UI consistency.