foolish-bandit makes Gary stop sounding like a dev tool

A frontend copy pass rewrites the developer vocabulary out of GaryOSS so the app reads like a private legal AI workspace.

brandingchat-ui

The change is purely cosmetic, but pointed. "Models & API Keys" becomes "AI configuration". "Model Preferences" becomes "Default assistant". "API key required" becomes "GaryOSS isn't configured yet". Across tooltips, modals, and buttons, "model" is now "assistant" and "API key" is now "key" or "service key". Vendor names like Anthropic (Claude) and Google (Gemini) stay on the key-entry fields, because a lawyer pasting a key still needs to know which service the key belongs to.

The discipline is what stands out. foolish-bandit deliberately left every internal name, file, stored preference, and backend contract alone - renaming any of them would either break the app or quietly wipe each user's saved assistant choice. The technical settings page is still reachable; it just no longer greets the user in API-vendor language.

So what Worth a glance for anyone shipping a lawyer-facing AI product on top of a developer-flavoured codebase - it's a clean example of how far you can go on copy alone before you have to touch the wiring.

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