# Local research notes — not part of the shipped site
*-RESEARCH.md

# Local research / reverse-engineering scratch - not shipped, not tracked.
# Also holds research/stats-backup/ (tools/backup-stats.mjs snapshots).
research/
research2/

# Python bytecode cache (tools/serve.py) - generated locally, never shipped
__pycache__/

# Wrangler local cache / temp (generated by `wrangler dev` / `wrangler deploy`)
.wrangler/
# Local Worker secrets for `wrangler dev` (e.g. IP_SALT) - never commit
.dev.vars*
!.dev.vars.example
.env*
!.env.example

# Standalone minimal build - destined to be its own repo
minimal/
nul

# Local docs work-order / planning note - not shipped, not tracked
DOCS_PLAN.md

.codex/

# Claude Code: skills and project settings ARE checked in (they document the
# repo's workflows); only the machine-specific local settings stay out.
.claude/settings.local.json

# README media staging - scratch working folder, not shipped
README TEMP/
graphify-out/

# Electron desktop shell: the source in desktop/ IS tracked, but its
# dependencies (Electron + electron-builder, hundreds of MB) and its build
# output are not. desktop/build/icon.png is tracked - it is an input, not output.
desktop/node_modules/
desktop/dist/

# Android shell (Capacitor): the source in mobile/ IS tracked, including the
# android/ project and its Java. Its npm dependencies, the staged copy of web/,
# and the FFmpeg build tree are not. mobile/android/.gitignore covers the
# Gradle output and the assets `cap sync` and stage-web.mjs write.
mobile/node_modules/
mobile/www/
mobile/ffmpeg/out/
mobile/ffmpeg/work/

# npm: exists only so tsc can build src/*.ts -> web/assets/js/*.js.
# The compiled output IS committed (like web/formats/ and web/docs/) so the
# Cloudflare deploy stays a pure static upload of web/ with no build step.
node_modules/
