Developer terminology stripped from account settings and model picker copy

foolish-bandit ran a frontend-only copy pass replacing API-vendor language in the account settings, model picker, and key-prompt surfaces. "Models & API Keys" becomes "AI configuration", "API key required" becomes "GaryOSS isn't configured yet". No identifiers, no routes, no backend changes.

brandingchat-ui

Four files changed. In the account layout, the tab label flips from "Models & API Keys" to "AI configuration". On the models page, "Model Preferences" becomes "Default assistant", "Tabular review model" becomes "Assistant for tabular reviews", and the "API Keys" section becomes "AI service keys". The description copy drops the explicit API-vendor framing: instead of "You must provide your own API keys for the app to work", it now reads "GaryOSS connects to an outside AI service to answer questions."

The tooltip on locked model options changes from "Add a Claude API key to use this model" to "Add a Claude key in AI configuration to use this assistant". The ModelToggle fallback label switches from "Model" to "Assistant".

foolish-bandit held the line on a few things deliberately. Vendor names in the key-entry fields - "Anthropic (Claude) key", "Google (Gemini) key" - were kept because a lawyer pasting a credential still needs to recognise which service it came from. The /account/models route URL was left unchanged; a redirect is flagged as a separate PR. The assistant dropdown still shows real model names (claude-3-5-sonnet, etc.) because the model selector in active chat is out of scope.

The author ran a final grep sweep confirming no user-facing "API key", "Model", or "Mike" strings remain. Typecheck and lint baselines are identical before and after.

So what Worth pulling if your own fork serves non-technical users who shouldn't have to know what an API key is. The specific copy changes are Gary-branded, but the scope discipline - keep vendor names on credential fields, leave model names in the active chat selector, flag the URL redirect as separate work - is a usable template.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from foolish-bandit/gary, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
2ea104bd De-jargon user-facing model/API-key copy Claude 2026-05-07 ↗ GitHub
commit body
Frontend-only copy cleanup. No identifiers, file names, MIME types,
localStorage keys, env vars, or backend contracts were renamed -
those carry behavior and were intentionally left alone.

User-facing changes:
- Account settings tab "Models & API Keys" → "AI configuration".
- /account/models page:
  - "Model Preferences" → "Default assistant"
  - "Tabular review model" → "Assistant for tabular reviews"
  - "API Keys" → "AI service keys"
  - Body copy rewritten to plain English ("GaryOSS connects to an
    outside AI service to answer questions...").
  - "Anthropic (Claude) API Key" → "Anthropic (Claude) key"
  - "Google (Gemini) API Key" → "Google (Gemini) key"
  - Tooltip "Add a {vendor} API key to use this model" →
    "Add a {vendor} key in AI configuration to use this assistant"
  - Placeholder "Select a model" → "Select an assistant"
- ApiKeyMissingModal:
  - Title "API key required" → "GaryOSS isn't configured yet"
  - Body softened to "GaryOSS isn't connected to {service} yet.
    Open AI configuration to add a key."
  - CTA "Go to account settings" → "Open AI configuration"
- ModelToggle:
  - title "API key missing for selected model" → "No key set for
    this assistant"
  - title "Choose model" → "Choose assistant"
  - aria-label "API key missing" → "No key set"
  - Fallback label "Model" → "Assistant"

GaryOSS branding is already consistent in README, layouts, and
schema header. No backend files touched. License unchanged.

https://claude.ai/code/session_019pRkhcGDRKQWHjzAnV5yCL

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-270.md from inside the repo you want the changes in.

⬇ Download capture-thread-270.md