# ====================================
# THIS PROJECT
# ====================================
# Firmware binaries pulled from the speakers and packet captures: large, device-specific, never versioned
research/firmware/
research/captures/
# House-specific settings for the end-to-end tests (addresses are house data). Only the
# placeholder .env.example is tracked; see tests/e2e_config.py.
.env
.env.*
!.env.example
# This house's own values: every private override is named <anything>-rnhome.<ext> and lives
# beside the public default it overrides (config .d directories, tools/). Only the tracked
# *.example copies show their shape.
*-rnhome.*
!*-rnhome.*.example
# Measurements, plans and working records of this house: kept on the development machine only.
# An anonymized version of the research results is published when development is finished.
docs/measurements/
docs/plans/
research/REPORT.md
OPEN-WORK.md
handover.md
# uv resolves from pyproject on every bmk gate; a lock nothing installs from would only rot
uv.lock

# ====================================
# APP
# ====================================
website/build/
website/.docusaurus/
website/node_modules/
node_modules/
web-local-preview/
translation_app*.log
translation_web*.log
tmp_github_web_pages/
tmp_linkcheck_web_pages/
.eslintcache
.vitest/
npm-debug.log*
yarn-error.log*
pnpm-debug.log*
todo.md
tmp_*

# ====================================
# IDEs & Editors
# ====================================
# IntelliJ, PyCharm, etc.
.idea/
# VS Code workspace settings
.vscode/
*.code-workspace

# ====================================
# Python bytecode & caches
# ====================================
# __pycache__: compiled .pyc files at any depth
# *.py[cod]: catches .pyc, .pyo, .pyd
__pycache__/
*.py[cod]
*$py.class     # other compiled artifacts

# pytest, coverage, MyPy, Hypothesis
.pytest_cache/
.mypy_cache/
.pyright/
.coverage*
htmlcov/
nosetests.xml
coverage.xml
coverage.json
*.cover
.hypothesis/
.tox/
.nox/

# general cache directories (any project-level caching)
.cache/
.run/
.import_linter_cache/
.ruff_cache/

# ====================================
# Build & distribution artifacts
# ====================================
# source/package builds
build/
dist/
*.egg-info/    # metadata for pip installs
*.egg
*.whl
pip-wheel-metadata/
*.manifest     # PyInstaller metadata
*.spec         # PyInstaller spec files

# Eggs, parts, wheels, sdist, etc.
develop-eggs/
.eggs/
parts/
sdist/
wheels/
downloads/
var/

# pip logs & installer leftovers
pip-log.txt
pip-delete-this-directory.txt
.installed.cfg

# ====================================
# Virtual environments & secrets
# ====================================
# common venv folder names
env/
venv/
ENV/
.venv/
# backups, alternate names
env.bak/
venv.bak/
# Python virtual environments (managed by bmk)
.venv*/

# ====================================
# Project-specific & framework files
# ====================================
# Logs, except the recorded runs the sync_report tests read as fixtures
*.log
!tests/fixtures/*.log
local_settings.py

# Flask instance folder
instance/
.webassets-cache

# Scrapy cache
.scrapy

# Sphinx docs
docs/_build/

# PyBuilder output
target/

# Jupyter notebooks checkpoints
.ipynb_checkpoints

# pyenv Python version file
.python-version

# Celery beat schedule
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Spyder IDE
.spyderproject
.spyproject

# Rope IDE
.ropeproject

# MkDocs static site folder
/site

# ====================================
# OS-specific files
# ====================================
# macOS
.DS_Store
# Windows
Thumbs.db
ehthumbs.db

# Archives
*.zip

# ====================================
# Tool-specific extras
# ====================================
# Codecov uploader script (downloaded during local uploads)
codecov.sh
codecov.xml

# Nix build result symlink
result

# Optional lockfiles (for alternative managers)
poetry.lock
pdm.lock

.grimp_cache/
# Local, per-developer settings - never commit
*.local.json
