# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual Environment
.venv/
venv/
ENV/
env/
external/

# Node / Frontend
node_modules/
*.tsbuildinfo
dist-ssr/
*.local

# IDEs & Editors
.vscode/
.idea/
.cursor/
*.swp
*.swo
*~

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

# Database
*.db
*.sqlite
*.sqlite3

# Logs
*.log
logs/
.logs/

# OS
.DS_Store
Thumbs.db
ehthumbs.db
Desktop.ini

# Testing
.pytest_cache/
.pytest-tmp/
.pytest_tmp/
pytest-cache-files-*/
.coverage
.coverage.*
htmlcov/
.xsafeclaw/

# Downloaded Agent Valley map skins (Map1 and Map_demo are bundled source assets)
frontend/public/Map-opensorce/Map[2-5].png
src/xsafeclaw/static/Map-opensorce/Map[2-5].png

# MyPy / type checkers
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/

# Compressed / archives
*.gz
*.tar
*.zip

# Debug notes (dev-only, not needed in repo)
debug/

# Local dev helpers
start.sh
release_work/
.release_main_pypi/

# Optional downloaded map skins (fetched at runtime, not shipped in repo)
src/xsafeclaw/static/Map-opensorce/Map[2-9].png
frontend/public/Map-opensorce/Map[2-9].png

# ── Frontend build artifacts (§44) ────────────────────────────────────────
# These are produced by `cd frontend && npm run build` (vite outputs to
# ../src/xsafeclaw/static per vite.config.ts L9-17). Both setup.sh L44-45
# and start.sh L80-83 regenerate them on demand, so the repo doesn't need
# to ship them.
#
# Tracking them used to bite us via CRLF/LF: the build writes LF on Linux
# but the repo's .gitattributes normalises text → on every clone Windows
# users (and CRLF-tainted blobs from older commits) saw spurious "modified"
# entries that blocked `git checkout other-branch` with "your local changes
# would be overwritten" — see §43 epilogue and the bench cluster incident.
#
# Only text-like outputs are ignored here. The PNG/MP3 assets vite copies
# from frontend/public/ are tracked as canonical sources (binary, no EOL
# normalisation, so they never trigger the same conflict).
src/xsafeclaw/static/index.html
src/xsafeclaw/static/agent-town.html
src/xsafeclaw/static/agent-valley.html
src/xsafeclaw/static/assets/
