# deps
node_modules/
.pnpm-store/

# build output
dist/
dist-pack/
build/
.next/
out/
.turbo/
.tsup/

# env
.env
.env.local
.env.*.local
.env.development
.env.production

# logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# test
coverage/
.nyc_output/
playwright-report/
test-results/

# editors
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json.example
.idea/
*.swp
*.swo

# os
.DS_Store
Thumbs.db
# macOS Finder / Spotlight occasionally drops "<name> 2.<ext>" duplicates
# alongside the originals. Always accidental, never source.
* 2.ts
* 2.tsx
* 2.js
* 2.json
* 2.yml
* 2.md

# misc
*.tsbuildinfo
.cache/

# runtime bundles (populated per-env, never checked in)
apps/*/data/
apps/**/data/

# claude code local overrides (shared settings.json is fine to commit)
.claude/settings.local.json
.claude/launch.json

# internal reference docs — never pushed to remote
# covers /docs/ at repo root and every file + subfolder inside it
# EXCEPTIONS:
# - MIGRATION.md is tracked — user-facing playbook for migrating onto briven.tech
# - AI.md is tracked — operator setup guide for the ollama backend the AI features hit
/docs/**
!/docs/MIGRATION.md
!/docs/AI.md
!/docs/LICENSE-COMMERCIAL.md
!/docs/launch/
!/docs/launch/**
!/docs/runbooks/
!/docs/runbooks/discord-setup.md
!/docs/runbooks/polar-metering-setup.md
!/docs/runbooks/status-domain-cutover.md
!/docs/runbooks/host-firewall-v6.md

# Local git worktrees for parallel branch work — never commit their contents
.worktrees/

# Stray tsc emit into client-* src/ — the build script (`pnpm build`) was
# emitting next to sources because no outDir was set in the per-package
# tsconfig. Fixed by setting outDir: "./dist" in each client tsconfig;
# this rule prevents drift if someone re-runs an older build script.
packages/client-*/src/*.js
packages/client-*/src/*.js.map
packages/client-*/src/*.d.ts
packages/client-*/src/*.d.ts.map

# Briven Build Protocol R4 — read-only third-party reference repos. Populate
# with `git clone --depth=1` (per machine); never committed, never built
# against, never imported from. Used as shape spec only.
_reference/

# Internal planning / spec / instruction docs — NOT for the public repo.
# The Codeberg repo is public open-core; these contain internal plans, specs,
# AI instructions, and a security-sensitive bug report. Kept local-only.
ARCHITECTURE.md
BUILD_PLAN.md
CONTRIBUTING.md
SPEC.md
SPRINT-PLAN.md
AUTH-BLANK-STATE.md
# Root-only internal docs (leading /). Do NOT use bare `docs/` — that also
# hid new pages under apps/docs/ (public site) from git.
/docs/
/docs/**
specs/

# Local operator secrets — never commit
memory.md
.local/

# Keep markdown private locally; only README.md files stay public on the remote
*.md
!README.md
!**/README.md
# Agent hard rules + SuperTokens library index (must be visible to every agent)
!CLAUDE.md
!AGENTS.md
# Un-ignore parent dir first, then the file (gitignore parent-dir rule)
!/docs/
!/docs/knowledge-base.md
