diff --git a/.gitignore b/.gitignore index c979337e..1950c2b8 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,17 @@ scripts/remotion/out/ # Artifacts that should not be tracked test-results/ tmp/ -public +# Root `public` (a symlink to scripts/remotion/public — local artifact). ANCHORED +# with a leading slash so it does NOT also match src/web/public (a bare `public` +# would swallow the whole web UI source dir and silently un-stage any new asset +# added there). No trailing slash so it still matches the symlink, not just dirs. +/public + +# Opt-in gesture overlay runtime assets: large MediaPipe wasm + model (~27 MB) +# fetched at build/install by scripts/fetch-gesture-assets.mjs, kept out of git. +# (The gesture bundle itself, gesture-codeman.js, IS tracked.) +src/web/public/gesture/wasm/ +src/web/public/gesture/*.task # Claude Code plan tracking plan.json diff --git a/CLAUDE.md b/CLAUDE.md index 56aa9fda..65bd5904 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,7 +30,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co 2. **Frontend changes**: Use Playwright to load the page and assert the UI renders correctly. Use `waitUntil: 'domcontentloaded'` (not `networkidle` — SSE keeps the connection open). Wait 3-4s for polling/async data to populate, then check element visibility, text content, and CSS values 3. **Only after verification passes**, proceed with COM -The production server caches static files for 1 year, `immutable` (`maxAge: '1y'` in `server.ts`). To avoid stale frontend after a deploy, `renderIndexHtml` runs `cacheBustAssets(html)` — it appends `?v=` to **every same-origin `.js`/`.css`** reference (re-stat'd per render; external/already-versioned/missing refs untouched). Because `index.html` is served `no-cache`, a **normal reload now picks up edited modules/styles — no hard refresh needed** (the gesture bundle is injected separately with its own `?v=`). If you add an asset referenced by an *absolute* URL or from JS rather than a `