# --- Python ---
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
build/
dist/
.venv/
.python-version.local
.pytest_cache/
.ruff_cache/
.mypy_cache/
.pyright/
.hypothesis/
.coverage
.coverage.*
coverage.xml
htmlcov/

# --- Amber runtime state (never commit) ---
.amber/
examples/*/.amber/
examples/*/.outbox/
# compiled programs are build output of `make demo` / `make demo-offline` (their source
# recordings live in the gitignored .amber/)
examples/*/programs/
# @playwright/mcp writes page snapshots and console logs into the working directory
.playwright-mcp/
examples/*/.scenario
*.env
.env.*

# --- Obsidian: keep the root app config, ignore per-machine state anywhere ---
**/.obsidian/workspace.json
**/.obsidian/workspace-mobile.json
**/.obsidian/workspace/
**/.obsidian/cache/
**/.obsidian/plugins/*/data.json
**/.obsidian/hotkeys.json
# docs/ may be opened as its own vault; that config is personal
docs/.obsidian/

# --- Editors / OS ---
.claude/settings.local.json
.idea/
.vscode/
.DS_Store
Thumbs.db

# --- Node (price-watch uses npx only) ---
node_modules/
# scripts/demo.py workspace (a copy of examples/weekly-report with live recordings)
.demo/
