Gary branding pass: identity strings, metadata, and visual assets

Commit `9d868c4` finishes the Mike-to-Gary rename across every user-facing surface - app shell, AI-identity prompts, DOCX tracked-change author, Open Graph cards, and a new test suite that will catch future regressions. zgbrenner flags this as no new functionality, and the diff confirms it.

brandingcompliance

The rename sweeps are thorough. The backend chat system prompt and the Review Table assistant prompt now identify as Gary, so the model's self-description matches the branding. The tracked-change author name and change-ID prefix in exported Word documents also switch, which matters if downstream systems parse those fields. Leftover "tabular review" strings in user-facing copy are cleaned up here as well.

On metadata, frontend/src/app/layout.tsx gets a full rewrite: title becomes "Gary - Open-source legal AI for U.S. lawyers," Open Graph and Twitter card properties are set, and metadataBase moves from the hard-coded mikeoss.com domain to NEXT_PUBLIC_SITE_URL. That last change is worth importing on its own - hard-coding a production hostname into metadata is a common oversight that breaks staging and preview environments.

New assets added: social-preview SVG and PNG, logo lockup, standalone monogram SVGs, and an apple-touch-icon that fixes a previously broken reference. The old link-image.jpg (orphaned MikeOSS asset) is removed.

The branding.test.ts file (210 lines) asserts that metadata uses Gary copy, avoids unsubstantiated claims (no accuracy guarantee, no bar-compliance assertion), renders the right wordmark, and that the README preserves its attribution section. That test pattern - asserting the absence of upstream-brand strings - is a practical regression guard for any fork that has done a rename.

Internal identifiers, package names, and two specific database columns were deliberately left unrenamed; zgbrenner's rationale was that those changes add migration risk with no user-visible benefit.

So what The env-driven `metadataBase` fix is useful regardless of fork context. The `branding.test.ts` approach (assert no stray upstream strings) is a clean pattern if you maintain your own rename. The rest is identity work specific to the Gary fork.

View this fork on GitHub →

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

Commits in this thread

2 commits from zgbrenner/gary, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
b270b9aa Merge pull request #3 from foolish-bandit/claude/gary-us-simplification-AjDDT Zack Brenner 2026-05-19 ↗ GitHub
Gary branding, metadata, and public-readiness polish
9d868c45 chore: Gary branding, metadata, and public-readiness polish Claude 2026-05-19 ↗ GitHub
commit body
Make Gary feel like a coherent, intentional open-source product rather
than a lightly renamed fork. No new functionality.

Branding / user-facing copy:
- App-shell wordmark, global-error page title, and the built-in
  Saved Legal Task author label now read "Gary" instead of "Mike".
- Backend AI identity prompts (chat system prompt, Review Table
  assistant prompt) and the DOCX tracked-change author now say "Gary".
- Column-prompt placeholders, the support form, and the backend
  startup log say "Gary".
- Remaining "tabular review" wording in user-facing/LLM-facing strings
  updated to "Review Table" / "document review model".

App metadata (frontend/src/app/layout.tsx):
- Title "Gary - Open-source legal AI for U.S. lawyers" and a factual
  description across the page, Open Graph, and Twitter cards.
- metadataBase now reads NEXT_PUBLIC_SITE_URL (documented in
  .env.local.example) instead of a hard-coded mikeoss.com domain.
- Avoids unsupported claims (no accuracy guarantee, not bar-compliant).

Visual assets:
- Add Gary social preview (SVG + rasterized PNG, 1200x630), a Gary
  wordmark/monogram logo, a standalone G mark, and a generated
  apple-touch-icon. Remove the orphaned MikeOSS link-image.jpg.
- The favicon (abstract aperture) is intentionally kept - it carries
  no Mike branding and doubles as the in-app loading spinner.

Documentation:
- Rewrite the root README: plain-English intro, who it's for, what it
  does, the 7-step product flow, bring-your-own-key explanation, how
  Gary differs from MikeOSS, features, limitations, roadmap, and a
  License & attribution section preserving the AGPL-3.0 / MikeOSS
  credit. Developer setup moved below the product overview.
- Add docs/README.md as a documentation index linking the setup
  guide, legal disclaimer, terminology map, and safe-testing doc.
- Point the CONTRIBUTING.md security link at the Gary repo.
- Update safe-local-testing.md to say Gary.

Tests:
- Add frontend/src/lib/branding.test.ts: metadata uses Gary and avoids
  unsupported claims, wordmark renders Gary, README credits MikeOSS
  and lists features + product flow, docs index links key docs, and
  the Gary visual assets exist.

Intentionally left unchanged (internal, renaming would add risk):
package names ("mike" / "mike-backend"), code identifiers (MikeProject,
MikeIcon, mikeApi, MikeLayout, etc.), the tabular_reviews /
organisation database columns, and the signup Terms/Privacy links
(no Gary-hosted legal pages exist yet - self-hosters substitute their
own).

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-533.md from inside the repo you want the changes in.

⬇ Download capture-thread-533.md