# ESP-IDF firmware build output firmware/build/ firmware/sdkconfig firmware/sdkconfig.old firmware/managed_components/ firmware/dependencies.lock # build_for_board.sh's per-board build dir + generated sdkconfig # (sdkconfig.xiao itself, the committed override fragment, is NOT # ignored -- only the *_local generated file and its build output). firmware/build_xiao/ firmware/sdkconfig.xiao_local firmware/sdkconfig.xiao_local.old firmware/build_ee02/ firmware/sdkconfig.ee02_local firmware/sdkconfig.ee02_local.old # Python server server/__pycache__/ server/**/__pycache__/ server/.venv/ server/*.egg-info/ server/data/ server/.pytest_cache/ # render-service/ (whiteboard mode's Node sidecar) -- installed fresh # inside the Docker image, never committed. No package-lock.json exists # yet either (no Node/npm available in this project's dev environment to # generate one -- see render-service/README.md); if one's added later, do # NOT ignore it, lockfiles belong in git. server/render-service/node_modules/ # Real deploy config, copied from docker-compose.yml.example -- holds the # Immich API key, must never be committed. server/docker-compose.yml .env # Editor / OS cruft .vscode/ .idea/ *.swp .DS_Store .claude/* # ...except Claude Code skills (e.g. agent-run instructions for this # app) -- those are project tooling worth sharing, not personal/local # state like settings.local.json or worktrees/. !.claude/skills/