# 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

# 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/
