Gary branding, metadata, and public-readiness polish
From the PR description
Summary
A polish / branding / documentation pass to make Gary feel like a coherent, intentional open-source product rather than a lightly renamed fork. No new functionality.
Branding audit - user-facing copy
Replaced lingering "Mike" branding with "Gary" in everything a user (or the AI) actually sees:
- App shell: site-logo wordmark
Mike→Gary; global-error page<title>. - AI identity: backend chat system prompt and Review Table assistant prompt now say "You are Gary...".
- DOCX output: tracked-change author defaults
Mike→Gary(visible in exported Word docs); internal change-id prefixmike-→gary-. - In-app copy: built-in Saved Legal Task author badge, column-prompt placeholders (Add Column / Edit Column), the support form's question option, and the backend startup log.
- Terminology: remaining "tabular review" wording in user-facing / LLM-facing strings → "Review Table" (and the missing-key error → "document review model").
- Product-name code comments (
storage.ts,types.ts,PeopleModal.tsx,AssistantMessage.tsx).
App metadata
frontend/src/app/layout.tsx:
- Title: "Gary - Open-source legal AI for U.S. lawyers"
- Description: "Gary is a simplified, self-hostable legal AI workspace for U.S. lawyers. Create matters, review documents, run Saved Legal Tasks, and export attorney-review drafts." - applied to the page, Open Graph, and Twitter cards.
metadataBasenow readsNEXT_PUBLIC_SITE_URL(documented in.env.local.example, defaults tolocalhost:3000) instead of a hard-codedapp.mikeoss.com.- OG/Twitter image points at the new Gary social preview.
- No unsupported claims - no accuracy guarantee, no "bar-compliant", no "replaces legal research".
Visual assets
public/social-preview.svg+ rasterizedsocial-preview.png(1200×630) - dark neutral card, Gary wordmark, G monogram, subtle legal-document grid motif.public/gary-logo.svg- Gary logo lockup (self-contained dark card so it reads on light and dark README themes).public/gary-mark.svg- standalone G monogram tile.public/apple-touch-icon.png- generated from the G mark; fixes a previously-brokenappleicon reference.- Removed the orphaned MikeOSS social image
link-image.jpg(a Monet painting captioned "Mike"). - The favicon (
icon.svg/favicon.ico, an abstract aperture) is intentionally kept - it carries no Mike branding and doubles as the in-app loading spinner, so replacing it would desync the spinner.
README + docs
- Root README fully rewritten: plain-English intro, who Gary is for, what it does, a 7-step product flow (connect → create matter → upload → Review Table → Saved Legal Task → export → review), a "bring your own API key" explanation, a "How Gary differs from MikeOSS" section, feature table, current limitations, roadmap, and a License and attribution section preserving the AGPL-3.0 license and MikeOSS credit. Developer setup moved below the product overview.
docs/README.mdadded - a documentation index linking the setup guide, legal disclaimer, terminology map, and safe-testing doc.CONTRIBUTING.mdsecurity link repointed to the Gary repo.safe-local-testing.mdupdated to say Gary.
Attribution
The README's "How Gary differs from MikeOSS" and "License and attribution" sections credit MikeOSS by Will Chen, note both projects are AGPL-3.0, and state Gary is independent and unaffiliated. The LICENSE file (AGPL-3.0) is unchanged. There is no NOTICE file in the repo, so none was created.
Terminology regression check
Confirmed user-facing copy does not reintroduce "Workflow Template", "Tabular Review", "Model Provider", "Environment Variables", organisation/authorised/analyse, solicitor/barrister, "England and Wales", or "Landlord and Tenant Act 1954". The only matches are intentional: the US_TERMINOLOGY_MAP.md mapping table and the test files that assert against the old terms.
Intentionally left unchanged (internal - renaming adds risk, not value)
- Package names
mike/mike-backend("private": true; renaming churns lockfiles for no user benefit). - Code identifiers:
MikeProject,MikeDocument,MikeIcon,mikeApi.ts,MikeLayout, etc. - internal types/imports/filenames. - Database columns
tabular_reviewsandorganisation- renaming needs a migration; the API already mapsorganisation→organizationin responses. - Signup Terms/Privacy links still point to
mikeoss.com- Gary has no hosted Terms/Privacy pages, and repointing a legal-agreement link somewhere that isn't actually those documents would mislead users. Self-hosters should substitute their own. Flagged as a follow-up.
Tests
frontend/src/lib/branding.test.ts(new, 10 checks) - metadata uses Gary branding and avoids unsupported claims; app-shell wordmark renders "Gary"; global-error title; README opens with the Gary positioning line, credits MikeOSS, links the upstream repo, preserves the AGPL note, lists the feature bullets, and includes the product flow; docs index links the three key docs; no bare "Mike" in app-shell files; Gary visual assets exist. All 10 pass.- Existing
matterReviewTable.test.ts,builtinWorkflows.test.ts,exportDraft.test.tsstill pass.
Validation
- Backend:
bun run build- clean. - Frontend:
bun run build- TypeScript compilation succeeds (Compiled successfully in 19.8s, Finished TypeScript in 12.3s). The Next.js static prerender of/account/modelsfails withError: supabaseUrl is required.- the expected codespace failure mode (no Supabase env vars configured here); unrelated to these changes. - Frontend:
bun run lint- error count unchanged (43 before and after); no new lint issues.
Recommended next PR
- Provide Gary-owned Terms of Use / Privacy templates (or make the signup links configurable) so deployments stop pointing at
mikeoss.com. - Optionally rename the
tabular_reviews/organisationDB columns behind a migration for full internal consistency. - Replace the placeholder social preview / logo with professionally designed assets before a public launch.
Test plan
- Browser tab and link-preview show "Gary - Open-source legal AI for U.S. lawyers".
- App-shell logo reads "Gary".
- Trigger an assistant reply and an error - the AI identifies as Gary; the error icon comment/label is Gary.
- Export a tracked-change DOCX - the change author is "Gary".
-
bun run frontend/src/lib/branding.test.ts→ 10/10 pass. - README renders correctly on GitHub (logo legible on light and dark themes).
https://claude.ai/code/session_01LNzU9cGoR4SsYXon8H7aJZ
Generated by Claude Code
Our analysis
Rebrand the Mike fork as Gary with a public-readiness polish — read the full analysis →
Think the analysis missed something the PR description covers?
Commits in this PR (1)
| SHA | Subject | Author | Date | |
|---|---|---|---|---|
9d868c45 | chore: Gary branding, metadata, and public-readiness polish | Claude | 2026-05-19 | ↗ GitHub |
commit bodyMake 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 PR into my fork
Download a Markdown prompt that tells Claude how to port every
commit in this PR into your working tree. Run it via
claude -p < capture-pull-3.md from
inside the repo you want the changes in.