# Environment secrets — never commit the real .env .env # Stale local scratch copy of .env.example; nothing in the test stack reads it. .env.test # Rust backend/target/ # Node / SvelteKit frontend/node_modules/ frontend/.svelte-kit/ frontend/build/ frontend/export-viewer/node_modules/ frontend/export-viewer/.svelte-kit/ # Media uploads. In production these live in the `media_data` DOCKER VOLUME, never in the # working tree — so this pattern is anchored to the repo root and exists only for a local # bind-mount experiment. # # It used to read `media/`, unanchored, which matches a directory of that name at ANY depth. # The only one in the repo is `e2e/fixtures/media/`, so the rule's entire practical effect was # to keep every E2E fixture untracked: a fresh clone got the specs and none of the images or # videos they read. `.github/workflows/e2e.yml` does a plain checkout and generates nothing, so # the committed CI job could not have run the upload, video or export suites at all. /media/ # Playwright E2E suite — runtime artifacts (the suite itself is committed) e2e/node_modules/ e2e/playwright-report/ e2e/test-results/ e2e/.cache/ e2e/.env.test # Playwright artifacts when run from the repo root instead of e2e/ /test-results/ /playwright-report/ # OS .DS_Store Thumbs.db # Claude Code personal (per-user) settings — shared settings.json IS committed .claude/settings.local.json