Empty, loading, and error strings rewritten for a practitioner audience
foolish-bandit swept 25 frontend files to replace generic placeholder strings - "No chats yet", "An error occurred", "Processing..." - with action-oriented copy that names what the user should do next. +93/-79, no backend touched.
The scope is broad. Empty states across sidebars, project and workflow listings, the tabular-review surface, document cards, the chat panel, and the project drop zone all get revised copy. Error boundaries got a structural fix alongside the copy: the top-level error.tsx and global-error.tsx now wire Next's reset callback into a "Try Again" primary CTA with "Return Home" as a secondary option. The 404 page was softened to match.
A few specific changes show the register shift. The tabular reviews empty state drops its generic heading and gains "No reviews yet" plus a plain description of what the feature does - "Gary fills a table with parties, dates, key terms, risks, and anything else you ask for." Loading strings on uploads and auth flows pick up first-person framing: "Reading the document...", "Uploading your document...", "Taking you to Gary...".
Developer-facing strings were deliberately left technical. console.error calls, thrown internal errors, and hook misuse messages are unchanged. The API-key settings page, the missing-key modal, and the model toggle keep their existing provider labels. Feature navigation names ("Tabular Review", "Workflows") were also left alone.
The PR opened and merged within five minutes on 2026-05-07. Lint count dropped by one. tsc --noEmit was clean. The local build failure was a known sandbox network issue, deferred to the Cloudflare Workers build.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?