# Personal
dashboard.html
/tools/

# Python
__pycache__/
*.pyc
*.pyo
*.pyd
.venv/
venv/
.pytest_cache/
*.egg-info/
dist/
build/
*.egg

# Coverage
.coverage
.coverage.*
htmlcov/
coverage.xml

# Data / artifacts
data/*
*.db
*.sqlite3
MagicMock/

# AD-742b: face-embedding enrollment (privacy — never commit). Already
# covered by data/* but listed explicitly for grep-discoverability.
data/captain_identity.json

# AD-721: avatars dir is shipped (with .gitkeep), but VRM binaries are not.
!data/avatars/
data/avatars/*.vrm
# AD-721i: drafts subtree + base_meshes operator-supplied subtree.
data/avatars/**/*.vrm
data/avatars/**/*.blend
data/avatars/**/*.fbx
data/avatars/**/*.glb
data/avatars/**/*.dsl.yaml
data/avatars/**/*.dsl.json
# AD-721e: skeletal animation clips (operator-fetched via scripts/animations-fetch.ps1).
data/avatars/animations/

# AD-720: attachments dir is shipped (with .gitkeep), but image blobs are not.
!data/attachments/
data/attachments/*
!data/attachments/.gitkeep

# Environment
.env
.env.*
.env.local

# Node / UI
node_modules/
ui/dist/
ui/coverage/

# IDE / Workspace
.idea/
.vscode/
.claude/
*.code-workspace
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db
Desktop.ini

# Logs
*.log

# MkDocs build output
site/

meta.inf


prompts/wave-orchestrator-state.json

# AD-721i-1: operator-fetched avatar assets (license-audited per data/avatar-assets/MANIFEST.md)
!data/avatar-assets/
data/avatar-assets/*
!data/avatar-assets/MANIFEST.md
data/avatar-assets/_base_meshes/
data/avatar-assets/_hair/
data/avatar-assets/_outfits/
data/avatar-assets/_materials/
data/avatar-assets/ATTRIBUTION.txt