# Dependencies node_modules/ # Build output dist/ *.tsbuildinfo # Environment .env .env.local .env.*.local # Lefthook per-developer overrides (not shared; see lefthook.yml for shared hooks) lefthook-local.yml # OS .DS_Store Thumbs.db # Docs media — served from CDN, not committed. # Regenerate with scripts/generate-{catalog,template}-previews.ts then upload # with `bun run upload:docs-images`. Add explicit negations below for any # non-generated assets (logos, svgs) that should stay in the repo. docs/images/ videos/ # IDE .vscode/ .idea/ *.swp *.swo # Test coverage/ .debug/ # Producer regression test failures (generated debugging artifacts). # RECURSIVE (`**`) so a failures/ dump at ANY fixture depth is ignored — the # old non-recursive `tests/*/failures/` + `tests/distributed/*/failures/` rules # only matched one level deep, so a nested fixture like # `tests/hdr-regression/hdr-pq/failures/` could still get committed. packages/producer/tests/**/failures/ packages/producer/tests/parity/fixtures/hyperframe.runtime.iife.js # Player perf test results (generated each run, attached as CI artifact) packages/player/tests/perf/results/ # Rendered output (not test fixtures — those use git LFS) output/ renders/ !packages/producer/tests/*/output/ !packages/producer/tests/distributed/*/output/ # Source dir that the renders/ output rule accidentally shadows (its files are # tracked; without this, pre-commit's format re-stage fails on them). !packages/studio/src/components/renders/ # Composition source media (large binaries) compositions/**/*.mp4 compositions/**/*.mov compositions/**/*.MOV # npm pack artifacts *.tgz # Logs *.log npm-debug.log* # Temporary tmp/ .tmp/ # Generated files packages/core/src/generated/* !packages/core/src/generated/position-edits-render-inline.ts !packages/core/src/generated/position-edits-render-inline.test.ts packages/producer/src/services/fontData.generated.ts # Plan documents (working artifacts, not committed) docs/plans/ # Local proof / test artifacts qa-artifacts/ my-video/ # Studio project state (hf-id backups, per-file state) — always runtime-generated, # never committed. Broadened from .hyperframes/backup/ after preview-generated state # leaked into a fixture commit. .hyperframes/ examples/* # Tracked OSS examples — negations override the blanket `examples/*` ignore. !examples/aws-lambda !examples/aws-lambda/** !examples/k8s-jobs !examples/k8s-jobs/** !examples/gcp-cloud-run !examples/gcp-cloud-run/** # …but never the local smoke run's build/render artifacts. examples/gcp-cloud-run/scripts/gcp-smoke-artifacts/ packages/studio/data/ .desloppify/ .worktrees/ # Playwright MCP browser cache .playwright-mcp/ # Installed skills (user-specific) .agents/ .claude/skills/ skills-lock.json # Skills from other PRs (not managed here) skills/hyperframes-animation-map/ skills/hyperframes-contrast/ # Capture outputs captures/ # Legacy test captures at repo root (use captures/ instead) *-capture/ *-demo/ *-ad/ *-tour/ *-brand/ # Local regression-test and video project scratch directories. # These hold per-site captures, compositions, narration audio, rendered MP4s. cursor-tests/ basecamp-video/ launch-video*/ !skills/launch-video/ ab-test/ compositions/ video-6-2-patched/ claude-design-hyperframes-video/ # Per-site video work at the repo root (huly-*, raycast-*, etc.) # Anything under videos/ is already covered above, but agents sometimes write # project dirs to the repo root when iterating. Catch the common per-brand # patterns and any *-demo-N variants the *-demo/ rule above misses. huly-*/ raycast-*/ *-demo-*/ test-runs/ test-outputs/ # Claude Code worktrees + superpowers docs .claude/worktrees/ .claude/ docs/superpowers/ .worktrees hyperframes-bench/ tmp/ # Studio-generated preview thumbnails .thumbnails/ # Local editor settings .zed/