Bug 1: hard-loading / while unauthenticated stayed stuck on "Loading..."
forever. Cause: the _authed layout short-circuits to the spinner when
status is anything other than 'authenticated', which means child routes
never mount. The redirect-on-anonymous useEffect lived only in the
home page (_authed/index.tsx), so it never fired — the layout's spinner
was the last thing rendered.
Fix: add a useEffect to the _authed layout component itself that
navigates to /login on the 'anonymous' transition. The layout's gate
is now: beforeLoad redirects on cold-known-anonymous, useEffect
redirects on post-mount transitions to anonymous (e.g. boot probe
resolves to anonymous after the route already rendered).
Bug 2: console warning that @tanstack/router-devtools moved to
@tanstack/react-router-devtools. Same package, renamed.
Fix: pnpm remove @tanstack/router-devtools && pnpm add -D
@tanstack/react-router-devtools; updated the lazy import in __root.tsx
to point at the new package name.
Plus: TRM_Design_System-handoff/ added to .prettierignore — those files
are immutable source material from claude.ai/design and shouldn't be
reformatted.
CI runners configure pnpm with --store-dir=.pnpm-store (project-local
CAS) for cross-run caching. Prettier and ESLint were scanning into it
and finding 333 unformatted JSON files.
Added to .prettierignore and eslint.config.js globalIgnores:
- .pnpm-store / .pnpm — pnpm content-addressable store variants
- coverage — future test runs (Vitest in Phase 3)
- .cache — generic build cache directory
Local Windows trees aren't affected (pnpm uses the global store at
~/.local/share/pnpm/store) but the rules cover both paths.