.venv/
venv/
backend/venv/
__pycache__/
node_modules/
.env
.env.local
# Every env file and backup of one (.env.bak-20261010-..., .env.production), anywhere;
# only the templates are tracked (S2S-9).
.env*
!.env.example
*.bak
*.bak-*
*.bak.*
.venv*/
*.whl
dist/
build/
build-testcdp/
*.pyc
.DS_Store
.vscode/
.pytest_cache/
htmlcov/
.coverage
coverage.xml
*.log
logs/
demo_data/
*.der

# One-off debug/migration scripts (may contain credentials)
backend/check_*.py
backend/fix_*.py
backend/query_*.py
backend/debug_*.py
# backend/scripts/*.py are ops scripts that docs and tests name: tracked (OBJ-ci-scan;
# test_backend_scripts_tracked.py). Their outputs and anything else there stay ignored.
backend/scripts/*
!backend/scripts/*.py

# E2E test screenshots (auto-generated, too large for git)
tests/e2e/screenshots/*.png
tests/e2e/reports/error_log.db

# Large video files - host on CDN instead
*.mp4
*.webm
*.mov

# Extractor binaries (downloaded from GitHub Releases or built locally)
backend/static/extractors/*.exe
backend/static/extractors/*.dll
backend/static/extractors/*.version
backend/static/extractors/opcua_extractor

# Frontend coverage output
frontend/coverage/

# Locally-generated dev/test artifacts (may contain tokens or env-specific IDs)
scripts/dev_login_oneliner.js.txt
scripts/stress_connector_ids.json
tests/e2e/_remotecfg_run/
tests/e2e/_e3pd_run/
tests/e2e/_fs2sp_run/

# Windows wrote a cache to a literal unexpanded-env folder when a child process lost SystemDrive (TOOLING-1016)
backend/%SystemDrive%/
**/%SystemDrive%/
tests/e2e/_fs2hist_run/
tests/e2e/_restart_gap_run/
tests/e2e/_resub_run/
simulators/opcua/large_55k_tags.json

# the 3D test harness's vite dependency cache (tests/e2e/test_model3d/harness)
tests/e2e/test_model3d/harness/.vite/
frontend/public/monaco/
