# ── Python ────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
.venv/
.uv/
*.egg-info/
.pytest_cache/
.mypy_cache/
.ruff_cache/
dist/
build/
dist-sidecar/

# ── Node / frontend ───────────────────────────────────────────────────
node_modules/
frontend/dist/
*.tsbuildinfo

# ── Tauri / desktop ───────────────────────────────────────────────────
src-tauri/target/

# ── Local-only research corpus (never commit instrument data) ─────────
tests/realdata/
**/*.dat
**/*.xrdml
**/*.raw
# Exception: small committed golden-corpus fixtures (inline comments are
# NOT supported in .gitignore, so this note must be on its own line).
!tests/fixtures/**

# ── OS / editor ───────────────────────────────────────────────────────
.DS_Store
Thumbs.db
.idea/
.vscode/

# ── Claude private working area (per-machine, not shared) ─────────────
.claude/
CLAUDE.local.md

# NOTE: plans/ is TRACKED in this repo for now (founding design docs).
# Once active development starts we may adopt the sibling-repo convention
# (gitignore plans/, track a BACKLOG.md dashboard) — see CLAUDE.md.

# Built SPA (vite build output, served by FastAPI in prod)
src/quantized/web/

# Beautiful-defaults audit renders (tools/audit_defaults.py) -- regenerate
# locally, never commit the PNG grid
tools/audit_defaults_out/

# OneDrive conflict copies — when two machines edit the same file, OneDrive
# saves a duplicate named "<file>-<Device>.<ext>". Never commit these.
*MacBook*
*-DESKTOP-*

# OneDrive sync-conflict copies ("<name>-<machine>.<ext>") — never commit
*MacBook Air*
