foolish-bandit/gary: shadcn/ui primitives, Inter font, and Explain This page
PR #15 lands a combined change: seven shadcn/ui component primitives, a self-hosted Inter font replacing `next/font/google`, a new `/explain` page built on those primitives, and a set of UX fixes across the draft/review flows and sidebar.
The component layer lives in frontend/src/components/ui/ and covers alert, card, label, separator, skeleton, tabs, and textarea. These are standard shadcn copies backed by Radix UI. The explain/page.tsx built in this commit uses Card, CardContent, Button, Input, Textarea, Label, Alert, AlertDescription, and Separator from those imports -- so the new primitives and the new page were developed together.
Font handling moves from next/font/google to @fontsource/inter (^5.2.8). The CSS variables are retargeted so the serif utility still resolves; practically this means the font files are bundled rather than fetched from Google at runtime, which matters on Workers where external fetch constraints apply.
The UX fixes in this batch: draft and review error paths now show a consistent "This will be available once GaryOSS is connected to the backend." message. Upload errors on the initial view become first-class state with a visible uploadError display. The desktop sidebar open/closed state is routed through a single variable rather than a separate flag (the bug was that the state could disagree with itself on navigation). The sidebar's assistant link is relabelled "Ask Gary". Login and signup screens show a dev auth bypass banner when NEXT_PUBLIC_GARY_SKIP_AUTH is set.
The commit history shows 58ef971c (the component + font + fixes), an intermediate ad2c41de merge resolving main-branch churn while the branch was open, and 98f33256 merging to main via PR #15. The PR was produced by a Codex cloud task and merged quickly.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?