# Python-generated files
__pycache__/
*.py[oc]
build/
dist/
wheels/
*.egg-info

# Virtual environments
.venv
venv/
ENV/
env/

# Testing and coverage
.coverage
.coverage.*
htmlcov/
.pytest_cache/
.tox/
.hypothesis/

# IDE and editors
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Ruff cache
.ruff_cache/

# MyPy/Pyright cache
.mypy_cache/
.pyright/
.dmypy.json

# Environment variables
.env
.env.*
!.env.example

# Logs
*.log

# Node.js
node_modules/

# Build artifacts
.build/
# Compiled helper binary — 97 MB, regenerated by scripts/build_macos_app.sh.
# Tracked historically but should not be in git; rebuilt on demand.
app/MdInjectApp/Resources/helper/mdinject-helper

# Database
*.db
*.sqlite
*.sqlite3

# Backup Files (added by gitignore audit)
# ============================================================================
*.backup
*.bak
/.backups/
/.backup/
.backups/
.backup/

# Bodai canonical runtime artifacts (added 2026-08-17 cleanup wave)
.crackerjack/
.crackerjack/outputs/
.crackerjack-state/
.crackerjack-hooks-updated/
.crackerjack-mcp/
.oneiric_cache/
*.bak2
*.backup.*
*.backup.json
.coverage*
coverage.json
*.pyc
*.pyo
*.pyd
example.mcp.json

# ============================================================================
# Bodai-wide gitignore patterns (added 2026-09-07; cross-repo cleanup sweep)
# ============================================================================
# Editor / pre-edit backups (foo.py.backup, foo.py.backup.json)
*.backup
*.backup.*
*.bak
*.tmpl
# XDG mistake dirs (env var expansion failed; literal names)
~
[{]HOME[}]
[{]XDG_DATA_HOME:-$HOME
# pytest-benchmark autosave cache (sibling of the tracked `benchmarks/` test suite)
.benchmarks/
# Vitest config timestamp cache
vitest.config.js.timestamp-*.mjs
# Playwright output cruft
playwright-junit.xml
playwright-report/
playwright-results.json
test-results/


# >>> bodai-shared-gitignore >>>
# Source of truth: crackerjack/templates/GITIGNORE_BODAI.md
# Enforced by: crackerjack check `gitignore-conformance`
# Fleet list: /Users/les/Projects/mahavishnu/BODAI_REPO_REGISTRY.md
# Do NOT remove the marker line above — `crackerjack gitignore sync` uses it
# to detect already-applied state.

# Editor / pre-edit backups (foo.py.backup, foo.py.backup.json)
*.backup
*.backup.*
*.bak
*.tmpl
# XDG mistake dirs (env var expansion failed; literal names)
# Note: both `{` and `}` are escaped (`{` -> `[{]`, `}` -> `[}]`)
# because gitignore parsers interpret `${...}` as a brace-expansion
# alternate group; escaping only the open brace leaves a stray `}`.
~
[{]HOME[}]
[{]XDG_DATA_HOME:-$HOME[}]
# pytest-benchmark autosave cache (sibling of the tracked `benchmarks/` test suite)
.benchmarks/
# Vitest config timestamp cache
vitest.config.js.timestamp-*.mjs
# Playwright output cruft
playwright-junit.xml
playwright-report/
playwright-results.json
test-results/

# ============================================================================
# Documentation — image assets
# ============================================================================
# Tracked images live under docs/assets/images/. Session scratch outputs
# (named like "*-v4.png", "*-window.png", or anything dropped in
# .scratch/) are local-only and must not be committed. The dot-prefix on
# `.scratch` is load-bearing — the gitignore rule only matches with it.
docs/assets/images/.scratch/
docs/assets/images/.scratch/**
# <<< bodai-shared-gitignore <<<
# Worktree directories — local checkouts of sibling repos used for
# cross-project work, sandboxed investigations, or session scratch.
# As of 2026-09-21 these were dangling ``160000 commit <sha>`` gitlinks
# in mdinject's index (no ``.gitmodules`` backing). They were removed via
# ``git rm --cached`` and now exist on disk as untracked working
# directories — gitignore keeps them out of ``git status`` so they
# don't shadow mdinject's own change-detection. ``*worktrees/*`` matches
# both ``.worktrees/<name>/...`` and ``.claude/worktrees/<name>/...``.
*worktrees/*
