# === Secrets — never commit ===
*.p12
*.pem
*.key
*.keystore
*.jks
.env
.env.*
!.env.example
secrets/
config/credentials/*.key
config/master.key
*openrouter*key*
*hf_token*

# === Call data (PII — never commit) ===
recordings/
*.wav
*.flac
*.m4a
*.ogg
*.opus
transcripts-private/

# === Ruby backend (bundler / runtime artifacts, if any) ===
components/backend/tmp/
components/backend/log/
components/backend/.bundle/
components/backend/vendor/bundle/

# === Android / Dialer patch build artifacts ===
components/dialer-patch/**/build/
*.apk
*.aab
.gradle/
local.properties

# === GrapheneOS / AOSP source (huge — fetched via script, never committed) ===
resources/aosp/
resources/grapheneos/
out/

# === Python (transcription worker) ===
**/.venv/
**/__pycache__/
*.pyc

# === OS / editor ===
.DS_Store
*.swp
.idea/
.vscode/
components/backend/wiki/wiki_index.json
components/backend/wiki/wiki_fulltext.txt

# local backend runtime env (secrets)
.claude/env.local

# Transcription A/B corpus and its cached output: real call recordings and transcripts are caller PII
# and must never be committed. Keep the recordings on the dev box only.
components/transcription-worker/bench/corpus/
components/transcription-worker/bench/out/
