| name | verify |
| description | Build, launch, and drive the Strut app to observe a change at runtime (browser SPA). Use before committing nontrivial editor/render/export changes. |
Verifying Strut (browser SPA + Rindle live-sync + Better-Auth)
Strut is a React SPA (TanStack Start + Vite) backed by a local Rindle daemon and a
guest-first Better-Auth session. Verification = drive the real editor in a headless
browser and capture pixels, not run tests.
Launch
pnpm dev
Auth env is REQUIRED for local dev (or every /api/auth/* 500s → no guest session →
canEdit is false → NO editing chrome at all: no slide toolbar, no inserters, no add-slide).
docs/AUTH_SETUP.md says plain pnpm dev 500s "by design," but server/auth.ts has a
better-sqlite3 node fallback (auth.db, auto-migrated) that works with just two vars in a
gitignored .env:
BETTER_AUTH_URL=http://localhost:3000
BETTER_AUTH_SECRET=<openssl rand -base64 32>
Restart pnpm dev after writing .env. Confirm no 4xx/5xx on load and the header shows
Undo/Redo/Theme (that means canEdit resolved true).
Drive (headless Chrome via puppeteer-core)
No browser driver ships in the repo. Install puppeteer-core in a scratch dir (NOT the repo —
npm fails in this pnpm repo) and point it at the system Chrome:
executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
Flow gotchas (learned the hard way)
- A deck is only editable in the
SAME session that created it (). To verify export/editing,
create AND drive the deck in one browser session, or reuse a .