No longer active. This fork has been removed from GitHub. The content below is preserved from MikeWatch's archive.

foolish-bandit/gary

A Mike fork reshaped for non-technical lawyers: simplified UX, guided workflows, and legal-practice terminology throughout.

Active product fork. Commits focus on UX layer changes - copy, terminology, guided shells, deployment configuration - rather than backend logic or AI behavior. foolish-bandit's stated audience pivot ("attorneys who are less tech savvy") is consistent throughout: every significant commit either removes developer-facing language, adds a simplified entry point, or documents how to deploy the product. Backend divergence from upstream is minimal; the core document pipeline, auth, and AI provider wiring are untouched.

View on GitHub →

foolish-bandit/gary is a product-focused fork of willchen96/mike targeting attorneys who won't configure API keys or manage infrastructure themselves. The bulk of the commit history is a layered UX simplification: Mike's developer-facing language stripped out, "Projects" renamed to "Matters", generic empty/loading/error strings replaced with practitioner-facing copy, and a simplified home screen with four action cards (Ask Gary, Upload Document, Review Contract, Draft Something) instead of a bare chat input.

On top of that baseline, foolish-bandit added three guided workflow shells - contract review at /review, "Explain This", and "Draft Something" - each built as a frontend-only wrapper over Mike's existing API routes. No new backend routes, no schema changes. The review shell hardcodes an eleven-topic review prompt (parties, dates, governing law, payment terms, termination, indemnity, confidentiality, assignment, dispute resolution, unusual clauses, missing clauses) and hands the result off to the standard chat thread.

Deployment work covers both frontend and backend: Cloudflare Workers via @opennextjs/cloudflare for the frontend, Railway/Render documentation for the backend, and a dev-auth bypass (NEXT_PUBLIC_GARY_SKIP_AUTH) for local testing without Supabase.

There is acknowledged follow-up debt: internal identifiers (MikeDocument, MikeProject, MikeIcon, the mike.selectedModel localStorage key) were deliberately left unrenamed to keep diffs manageable, and the /account/models route URL hasn't been redirected despite the tab label changing.

What's in it

Direction

brandingcontract-reviewdrafting

Activity

Themed changes and pull requests touching this fork, newest first. Themed changes that haven't been turned into a public post yet still appear — they're real work even without a published writeup.

✅ #19 Backend deployment prep for Railway +1 2mo ago self by foolish-bandit ↗ analysis ↗ GitHub
Summary: Prepares backend env documentation for Railway deployment readiness. The backend already uses npm commands, process.env.PORT, FRONTEND_URL CORS, unauthenticated /health, and nixpacks LibreOffice. Added NEXT_PUBL…
✅ #18 Cited-answer UI expectations +177 -13 2mo ago self by foolish-bandit ↗ analysis ↗ GitHub
Summary: Adds frontend copy and light citation/source display so Gary answers are framed as document-backed and checked against cited sources. Updates Ask Gary input guidance, assistant answer citation cards/warnings, ta…
📝 Prep backend env for Railway deployment 1 commit 2mo ago minor change
📝 "Projects" renamed to "Matters" across navigation and UI copy 2 commits 2mo ago brandingchat-ui draft
foolish-bandit swapped legal-practice terminology into Gary's UI - Projects become Matters, uploaded files are consistently Documents - while leaving every URL, API route, database field, and TypeScript type untouched. S…
Show 36 more
📝 Remove stray Bun lockfile so backend hosts pick npm 1 commit 2mo ago minor change
📝 Document backend deployment on Railway and Render 1 commit 2mo ago minor change
📝 Remove Bun lockfile so Cloudflare builds with npm 1 commit 2mo ago minor change

Threads of work (detailed view)

56 threads have been distilled into posts.

Backend deploy guide for Railway and Render

foolish-bandit documented the Express backend deployment in three commits: a 124-line `backend/DEPLOY.md` covering build settings, env vars, and host-specific steps, a removal of `backend/bun.lock` to stop Nixpacks from provisioning Bun, and a one-line fix adding `NEXT_PUBLIC_SUPABASE_URL` to `backend/.env.example` because Railway needs it.

Citation expectation copy and warning component added across guided shells

foolish-bandit tightened the citation framing across the three guided workflow shells and the main assistant. A new `CitationExpectationNote` component in `AssistantMessage.tsx` renders an amber "No source citation shown. Treat this answer as unverified." warning when citations are absent, and a citation card list when they're present.

Citation cards and uncited-answer warnings added across assistant surfaces

A copy-and-UI pass on the Gary fork tightens what users are told about citations across the assistant shell, Review, Draft, and Explain flows. A new `CitationExpectationNote` component renders clickable citation cards when citations exist and an amber "No source citation shown. Treat this answer as unverified." warning when they don't.

"Project" renamed to "Matter" in user-facing copy across 21 files

foolish-bandit renamed "Project"/"Projects" to "Matter"/"Matters" in user-visible strings across 21 frontend files. Route names, identifiers (`projectId`, `useProjects`, the `/projects` route), and backend contracts were left unchanged - this is a label-layer change only.

"Projects" renamed to "Matters" across navigation and UI copy

foolish-bandit swapped legal-practice terminology into Gary's UI - Projects become Matters, uploaded files are consistently Documents - while leaving every URL, API route, database field, and TypeScript type untouched. Surface vocabulary only.

NEXT_PUBLIC_GARY_SKIP_AUTH build-time flag bypasses Supabase login

A single commit adds a frontend-only Supabase auth bypass gated on `NEXT_PUBLIC_GARY_SKIP_AUTH=true`. When set, `AuthContext` skips the auth flow and seeds a fake demo user. An amber banner renders in the protected layout. Backend calls still 401 - the bypass is for UI inspection only.

NEXT_PUBLIC_GARY_SKIP_AUTH flag bypasses Supabase login for dev/demo

foolish-bandit added a build-time flag that lets the frontend run as a fake demo user without a real Supabase session. Set `NEXT_PUBLIC_GARY_SKIP_AUTH=true` at build time and `AuthContext` skips the auth flow entirely, seeding a fixed demo identity. An amber banner at the top of the protected layout makes the mode visible.

Model/API key config UX de-jargoned to assistant/service-key language

A single commit rewrites ~24 user-visible strings in the `/account/models` flow, swapping developer vocabulary for plainer terms: "Models & API Keys" becomes "AI configuration," "Model Preferences" becomes "Default assistant," "Tabular review model" becomes "Assistant for tabular reviews," and API key labels drop the "API Key" suffix to just "Anthropic (Claude) key." No behavior changes.

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.

foolish-bandit/gary: frontend drafting shell with 8 document types

Commit `7c520d4f` adds a `/draft` page that mirrors the `/review` shell: a guided two-step UI for drafting legal documents entirely on the frontend, with no backend changes. The home "Draft Something" card is rewired from `/workflows` to `/draft`.

foolish-bandit/gary: Draft Something shell reusing existing chat plumbing

Commit `7c520d4f` adds a `/draft` page with a two-step UI: choose one of eight document types, fill in description and optional audience/tone, optionally attach a document, then hand off to the existing assistant chat. No backend changes. The PR merged in minutes.

foolish-bandit/gary: frontend contract review shell at /review

Commit `16c7bffd` adds a 434-line `/review` page that gives lawyers a guided path to contract review -- pick or upload a document, confirm what the assistant will look for, then land in the chat with a pre-built prompt attached. No backend changes.

Contract review shell added as a guided frontend wrapper over existing chat

foolish-bandit built a two-step contract review flow at `/review` without touching any backend routes. Upload or select a contract, see what Gary will check, kick off the review - then land in the existing chat thread. The review prompt is baked into the frontend bundle.

Four action cards replace the bare empty state on the assistant home

foolish-bandit reworked the authenticated home view so a non-technical lawyer lands on four plain-English starting points instead of a bare chat input. All four wire into routes that already existed - no backend changes, no new APIs.

foolish-bandit/gary: four action cards replace the bare assistant home

Commit `d761a8da` replaces the empty-state "Hi, {name}" screen in `InitialView.tsx` with a 2x2 grid of lawyer-facing action cards. This is the seed of the guided-mode UX direction the fork builds out across the subsequent three workflow shells.

Next.js frontend onto Cloudflare Workers via @opennextjs/cloudflare

Four commits to get the Next.js frontend shipping to Cloudflare Workers: a `next` version bump to satisfy the peer range, a minimal `wrangler.jsonc`, explicit `cf:build`/`cf:deploy`/`cf:preview` npm scripts, and deletion of `frontend/bun.lock` to stop Cloudflare's auto-detection from picking Bun.

User-facing rebrand from Mike to Gary across 24 files

foolish-bandit renamed everything a user would see - page titles, the sidebar, system prompts, DOCX author attribution - while deliberately leaving all internal identifiers alone. Clean diff discipline with acknowledged follow-up debt.

Mike/MikeOSS renamed to Gary/GaryOSS in user-visible surfaces

The foundational soft-fork rename: HTML titles, sidebar, AI system prompts, DOCX tracked-changes author, the default R2 bucket name, and npm package names all swap from Mike to Gary. Internal identifiers are explicitly left in place.

Handoff docs, Explain flow, local font, and UI primitive expansion

A broad frontend pass adding a set of handoff/architecture/roadmap docs, a new Explain page alongside Review and Draft, a migration from runtime `next/font/google` to locally bundled `@fontsource/inter`, and a set of shadcn-style UI primitives (card, alert, label, separator, tabs, textarea, skeleton) adopted across pages.

foolish-bandit/gary: shadcn/ui component layer added to the frontend

Commit `58ef971c` introduces `frontend/src/components/ui/` with seven shadcn/ui primitives and wires them into the Explain This page, globals.css, and layout. This is the first structural divergence from upstream Mike's plain-Tailwind approach.

foolish-bandit/gary: /explain shell completes the guided-workflow trio

Commit `b3287856` adds a 159-line `/explain` page -- the third and last of foolish-bandit's guided workflow shells. Paste legal text, optionally provide context and goal, and the page assembles a structured prompt and routes to the chat.

Walkthrough polish pass fixes localStorage bug and softens unreachable-backend errors

foolish-bandit did a manual walkthrough of the new Gary flows and pushed a small cleanup: a localStorage desktop-sidebar bug fix, softened error messages for when the backend isn't reachable, a sidebar nav relabel, upload error surfacing in `InitialView`, and a dev-bypass notice on the login/signup pages.

Walkthrough polish: honest error messages, sidebar label fix, localStorage bug

A small cleanup pass after walking the authenticated Gary flow. Error strings that previously said "Could not start the draft. Try again." now say "This will be available once GaryOSS is connected to the backend." The sidebar's "Assistant" entry was renamed to "Ask Gary." A localStorage bug was fixed where the desktop sidebar state was being persisted using the wrong variable.

foolish-bandit/gary: Explain This flow and UX polish -- closed without merging

foolish-bandit proposed a batch of frontend changes centered on a new `/explain` page, unified backend-unavailable messaging, an "Ask Gary" sidebar rename, and a font strategy swap from `next/font/google` to `@fontsource/inter`. The PR was closed without merging; none of it landed in Gary's main branch.

Pull requests (detailed view)

20 PRs touch this fork — inbound (filed against it) or outbound (filed from it). State icons match the editorial dashboard.

✅ Merged (19)

Show 9 more merged

⛔ Closed without merge (1)