# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
**/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
**/.next/
**/out/

# production
/build

# misc
.DS_Store
*.pem

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

# env files (can opt-in for committing if needed)
.env*
# ...except the template the docker stack tells you to copy. It carries the
# exposure model in comments and is worth more in git than out of it.
!.env.example

# vercel
.vercel

# typescript
**/*.tsbuildinfo
**/next-env.d.ts

# nested transcripts repo
/transcripts

# downloadable transcript archives (an old whole-corpus format; ignored so a
# stray copy is never committed)
/export/public/transcripts.tar.gz
/export/public/transcripts.tar.xz

# preprocessed transcript data (regenerate with `pnpm build:index`)
# NOTE: no trailing slash — in a `pnpm wt` worktree these are SYMLINKS to the main
# checkout's dirs (see WORKTREES.md), and a directory-only pattern wouldn't match
# them, leaving generated data showing up as untracked in every worktree.
/export/public/subs
/export/public/posts
# export/out is a SYMLINK to the bundle built last (release 18,
# publish/build.ts pointExportOutAt) — `**/out/` matches only a directory.
/export/out
/export/public/digests
/export/public/summaries
/export/public/transcripts
/export/public/stats
/export/public/chart-templates.json
/export/public/search-aliases.json
/export/public/duplicates.json
/export/public/tags.json
/export/public/site.json
/export/public/_headers
/export/public/sw.js
/export/public/hub-sites.json
/export/public/hub-summary.json
/export/public/corpus.json
/export/public/llms.txt
/export/public/robots.txt
/export/public/sitemap.xml
# per-site bulk-download archive zips + manifest (regenerate with `pnpm build`)
# (no trailing slash — may be a worktree symlink, as above)
/export/public/archives
# a report site's reports, moment pages and cited media (compose-site's reports stage)
/export/public/reports
/export/public/m
/export/public/media
# oversize archives staged for the deploy-time R2 upload
/export/.r2-staging/
/export/.export-index/
# per-site incremental-compose signatures (skip-unchanged cache)
/export/.compose-cache/
# per-site docker build outputs (out/, .next, public/, caches) — one dir per site
/export/.export-builds/
/transcripts/index.mdb/

# homepage (hub) generated public data (regenerate with `pnpm build:homepage`)
/homepage/public/stats/
/homepage/public/channel-sites.json
/homepage/public/chart-templates.json
/homepage/public/homepage-summary.json
# source snapshot tarball + its sidecar (regenerated by `archilyzer source
# publish`, which `archilyzer build homepage` runs).
# Note this does NOT cover /homepage/public/_headers — the `_headers` rule above
# is scoped to /export/public, so the homepage's stays tracked.
/homepage/public/downloads
# The published source: the git mirror (archilyzer.git: packs, info/refs), the
# raw tree and manifest.json, all written by `archilyzer source publish`
# (common/publish/source.ts). Ignored for Tailwind as much as for git: Tailwind
# v4 scans every file .gitignore does not exclude, and a pack file is binary —
# the umtool `.next-*` failure below, where a scanned binary yields "class
# names" that break the stylesheet. homepage/tsconfig.json excludes `public`
# for the same reason: the raw tree is ~2,000 .ts/.tsx files of the whole repo.
/homepage/public/source
# The publish step's skip key (rules hash + source commit). Kept out of
# public/ on purpose: a hash of the denylist is a guess-confirmation oracle.
/homepage/.source-publish.json

# editor e2e fixtures and ephemeral state
/editor/test-transcripts/
/editor/test-settings.json
# Disposable changelogs for the cut-release e2e (EDITOR_CHANGELOG_FILE and
# EXPORT_CHANGELOG_FILE in dev:test/start:test). Keep those specs — and
# POST /api/ops/cut-release, which can cut both — off the tracked CHANGELOG.md files.
/editor/test-changelog.md
/editor/test-export-changelog.md
/editor/playwright-report/
/editor/test-results/
/editor/blob-report/
# An operator's symlink out of the repo (plans/FACTS.md, "editor/content is a
# symlink out of the repo"): Tailwind's source detection follows it, Turbopack
# panics on globals.css, and `pnpm e2e` dies before the first spec. Ignored so
# it stops showing up as an untracked file somebody might commit.
/editor/content

# export e2e fixtures and ephemeral state
/export/test-public/
/export/test-settings.json
/export/test-settings.hub.json
/export/playwright-report/
/export/test-results/
/export/test-results-hub/
/export/test-results-2origin/
/export/.2origin/
/export/test-results-report/
# the cited report-site suite's stage project (export/e2e-report/stage.ts)
/.e2e-report-site/
/export/blob-report/
# homepage's own Playwright output (its suite runs from homepage/)
/homepage/test-results/
/homepage/playwright-report/
/homepage/out/
# the e2e's synthetic summary, and a killed run's temp copy (homepage/e2e/fixture-summary.ts)
/homepage/e2e/.e2e-summary.json*
# the e2e's settings.json (social links only), and its temp copy (homepage/e2e/fixture-social.ts)
/homepage/e2e/.e2e-settings.json*
# the e2e's empty sites directory (no homepage.json; homepage/playwright.config.ts)
/homepage/e2e/.e2e-sites/
# the e2e's fixture publish for /source/ (homepage/e2e/fixture-source.ts)
/homepage/e2e/.e2e-source/

# site config
/settings.json
/chart-templates.json

# Diarization runtime: the uv-managed python 3.13 venv + the sherpa-onnx models.
# Machine-specific (~148 MB) and rebuildable from .diarize/README.md, which IS
# tracked. sherpa-onnx ships wheels only to cp313 and this box's system python is
# 3.14, so the venv is not optional — settings.diarization.python points at it.
/.diarize/env/
/.diarize/models/
/.diarize/logs/
# Sortformer engine: the built ggml binary + shared objects + the 471 MB GGUF.
# Machine-specific and rebuildable with scripts/build-sortformer.sh.
/.diarize/sortformer/
/.diarize/.sortformer-build/

# umtool: the e2e fixture (built by e2e/fixtures/make-fixture.mjs), the build
# dir, and the e2e dev server's SEPARATE build dir -- it needs its own so it can
# run alongside a dev server someone is judging clips in (Next refuses two for
# one project).
umtool/.e2e-song/
# ...and the storage spec's media root, a sibling of it (UMTOOL_MEDIA_DIR).
umtool/.e2e-song-media/
umtool/.next/
# Any alternate dist dir, not just the e2e one.
#
# Tailwind v4 auto-detects its sources and honours .gitignore -- so a dist dir
# that is NOT ignored gets scanned, its binary turbopack cache yields candidate
# class names like `p-[var(-sM0or-Z)]`, and the generated stylesheet fails to
# parse. Every page then 500s on a CSS error with nothing wrong in the CSS.
# Cost an e2e run's worth of confusing red to find.
umtool/.next-*/
umtool/test-results/
