# Binary
/pad
/pad.exe
/loadtest-collab
/pad-vulnscan

# Web build output
web/build/
# The headless materializer bundle (TASK-2198), embedded by embed.go.
web/build-materializer/
# Both, deliberately. Only web/node_modules/ was listed, because that is the
# only one a correct invocation creates — but running vitest from the REPO ROOT
# instead of web/ makes a root-level node_modules/ with a vitest cache in it,
# and an unignored one is then swept up by the next `git add -A`. That happened
# on BUG-3030 and a codex round is what caught it. Ignoring the path costs
# nothing and removes the surface rather than relying on remembering.
/node_modules/
web/node_modules/
web/.svelte-kit/

# Pad workspace data (local to each user)
.pad/
.pad.toml

# Legacy planning docs (not for public repo)
v1-archive/

# Environment & secrets
.env
.env.*
!.env.example

# Database files
*.db
*.sqlite
*.sqlite3

# OS
.DS_Store
Thumbs.db

# Editor
.vscode/
.idea/
*.swp
*.swo
*~
.agents/
.claude/
.codex
.codex/

# Agent tool local configs (not for public repo)
AGENTS.md

# Go
*.test
*.out
coverage.txt

# Distribution
dist/

# Nix build output
/result
/result-*

# Playwright e2e artifacts (scoped to the test fixture, never the
# developer's real ~/.pad)
.pad-e2e/
# Per-seat e2e data dirs: a shared checkout runs concurrent suites, so each
# seat points PAD_E2E_DATA_DIR at its own. They hold a generated encryption.key
# and a multi-MB WAL — never committable.
.pad-e2e-*/
web/playwright-report/
web/test-results/

# Go build cache the codex review sandbox writes into the checkout (BUG-2827: 5,688 of them once reached a commit)
.tmp-gocache/
