# ============================================================
# SECRETS — never commit these. OBS stores live credentials here.
# ============================================================

# Twitch (and other RTMP) stream keys — `settings.key` field.
# Path: basic/profiles/<profile>/service.json
**/service.json
**/service.json.bak

# obs-websocket server password (plugin_config/obs-websocket/config.json
# contains `server_password`). Block the whole dir defensively.
plugin_config/obs-websocket/

# Defensive blanket — anything obviously credential-shaped.
*.key
*.pem
*.secret
*.token
*credentials*
*.env
.env*

# ============================================================
# Machine-local generated data
# ============================================================

# Per-session rig data written by `php artisan rig:loading`, `rig:playlist`,
# `rig:telemetry`. Re-derived on demand from the live system + Twitch API.
webapp/storage/data/*.json

# OBS WebSocket connection details (port + password) — auto-generated by
# `php artisan rig:setup` from plugin_config/obs-websocket/config.json.
webapp/public/js/obs-config.js

# Album-art cache written by bridges/mpd-state.py on every track change —
# the music-box/cover overlay loads it through `/cover.jpg?v=<hash>`.
bridges/cover.jpg

# Audio files for the loading/music-box scenes (any format). Kept out of git
# regardless of how they got there (yt-dlp, manual copy, etc.).
/playlist/

# Local backups created during rig:telemetry review.
webapp/storage/data/*.manual

# Laravel-native ignores (composer deps, log + cache + session dirs).
/webapp/vendor/
/webapp/node_modules/
/webapp/storage/logs/*.log
/webapp/storage/framework/cache/data/
/webapp/storage/framework/sessions/
/webapp/storage/framework/views/
/webapp/bootstrap/cache/*.php

# archived/ — old machine-local generated files that came along when the
# legacy scene dirs were moved. The hand-authored HTML / JSON sources are
# tracked; only the script-generated wrappers and runtime state aren't.
archived/scenes/landing/telemetry.js
archived/scenes/landing/*.manual
archived/scenes/loading/loading.json
archived/scenes/loading/loading.js
archived/scenes/loading/playlist.json
archived/scenes/loading/playlist.js
archived/scenes/loading/cmd.js
archived/scenes/loading/*.manual
archived/scenes/loading/playlist/
archived/vendor/obs-config.js

# ============================================================
# OBS runtime / generated state — no value in version control
# ============================================================

# One log per launch; OBS rotates these itself (MaxLogs=10).
logs/

# Performance traces.
profiler_data/

# Running-instance lockfile.
.sentinel/

# Crash/safe-mode artefacts.
crashes/
safe_mode/

# ============================================================
# OBS-managed sidecars — OBS rewrites these on every save.
# Tracking them produces noisy diffs and they're not real history.
# Manual migration backups (.pre-*) are intentionally NOT ignored —
# they were created by hand and capture meaningful pre-change state.
# ============================================================
*.bak
*.json.v1

# ============================================================
# Editor / OS noise
# ============================================================
.DS_Store
Thumbs.db
*.swp
*.swo
*~
.idea/
.vscode/

# ============================================================
# Python bytecode (bridges/, twitch-bot/)
# ============================================================
__pycache__/
*.pyc
*.pyo
temp
.claude/
