Skip to content

SN-5: Settings → AI says when Gecko Suite holds the keys, and links to it - #217

Merged
davior merged 1 commit into
mainfrom
claude/beautiful-wright-og4xur
Nov 4, 2026
Merged

davior merged 1 commit into
mainfrom
claude/beautiful-wright-og4xur

Conversation

@davior

@davior davior commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Summary

Closes the loop on SN-1/SN-2: with AI_BACKEND=suite, Settings → AI now tells people what moved to Gecko Suite, what still applies on the page, and links to the suite's page for it. Nothing changes in local mode.

  • GET /api/settings/ai-backend returns {backend, suite_url}. suite_url is the address a browser can open (SUITE_PUBLIC_URL, else SUITE_BASE_URL), because SUITE_BASE_URL may be an internal address in some deployments. It is null in local.
  • A note at the top of each tab (Providers, Assistant, Speech, Images, Usage), with links to the suite's Providers / Task routing / Search / Usage pages. The wording lives in utils/suiteNotice.ts and is written against what the backend really does, including what still runs on Notes' own keys (live transcription and voice mode use the Deepgram key saved here; the fal admin key still feeds the Images usage readouts; prompts and the summary prompt are still managed here).
  • Bug fix found while checking this in a browser: the UI gated read-aloud, dictation and the image form on a fal.ai key saved in Notes. In suite mode with no local key, the image modal showed "Set a fal.ai API key…" instead of the form and the read-aloud/dictation controls stayed hidden, even though the suite would have handled them. The speech and image settings now also report via_suite; the frontend treats that as "usable" (falKeyConfigured, the image modal, the "no key" hint). The literal has_fal_key / has_api_key are unchanged.
  • New store stores/aiBackend.ts (read once per session, reset on sign-out; a failed read means "local", so a page never claims the suite holds the keys because of an error).

Not done: the controls on the Speech tab (engine choice, fallback text) are still shown, though the note says they no longer apply; I did not grey them out. A provider added in Notes still has to be added in the suite too (the note says so); making that one step is a later piece.

Test plan

  • pytest -q in backend/: 1383 passed, 1 skipped (Python 3.13 locally; CI is 3.11). New: the endpoint (public address wins over the internal one, trailing slash dropped, fallback, null in local) and via_suite on both settings payloads.
  • Frontend: npm test 221 passed, npm run build (typechecks) passes. New tests for the wording/link module and the notice component (nothing in local mode or before the mode is known, links open in a new tab with rel="noopener noreferrer").
  • Looked at in a real browser (the built app with the API stubbed): the note and links render on Providers and Speech in suite mode, nothing in local mode, and the "No fal.ai key" warning on Speech is gone in suite mode. I did not click through the image modal or the Images/Usage tabs.

Deployment

Nothing changes unless AI_BACKEND=suite is set.

  • Configuration: optional SUITE_PUBLIC_URL (in .env.example and compose). Set it only if SUITE_BASE_URL is an internal address; otherwise leave it blank.
  • Services rebuilt: backend and frontend (docker compose up --build -d), then hard-refresh. Migrations, Caddy: none.
  • Verify: in suite mode open Settings → AI Services; each tab shows the note and the links open the suite's pages. With no fal key saved in Notes, the image modal shows its form and read-aloud/dictation controls appear.
  • Roll back: AI_BACKEND=local, or redeploy the previous commit.

Generated by Claude Code

GET /settings/ai-backend tells the browser the mode and the suite's public address
(SUITE_PUBLIC_URL, else SUITE_BASE_URL). Each Settings → AI tab shows a note in suite mode
saying what moved, what still applies, and linking to the suite's page for it.

Also fixes the UI gating on a local fal.ai key: the speech and image settings now report
via_suite, so read-aloud, dictation and the image form are not hidden when the suite holds
the key and none was ever saved in Notes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1geD2ELWgL2sDpxYbx3Aw
@davior
davior marked this pull request as ready for review November 4, 2026 10:13
@davior
davior merged commit 4b35684 into main Nov 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants