# Logs
logs
*.log
# Belege der mobilen Abnahme sind Textprotokolle und gehoeren ins Repo
!mobile-docs/belege/*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Package manager: npm (package-lock.json) is the source of truth for CI +
# release builds. A stray committed pnpm-lock.yaml makes tauri-action pick
# pnpm (not installed on the runners) and breaks the release build.
pnpm-lock.yaml

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Rust build artifacts
src-tauri/target/

# The Linux build writes its own permission schema here, next to the macOS and
# Windows ones that are checked in. It can only be produced by a build on Linux,
# so it stays out of the tree until one is committed from there on purpose.
src-tauri/gen/schemas/linux-schema.json

# Written by scripts/windows-signing-setup.ps1 during a signed release build:
# the Tauri overlay that names the sign command. Never part of the tree.
src-tauri/tauri.signing.conf.json

# Environment
.env

# Internal
.claude/
.internal/
CLAUDE.md
*.private.*

# Temp
*.tmp
scripts/*.py

# Test artifacts
codex-api/
test-codex.txt
# vitest schreibt sein Deckungsprotokoll hierhin: ein HTML-Bericht voller .js.
# Es stand bis KF-11 nur in eslint.config.js' globalIgnores und nirgends sonst —
# damit war das der einzige Eintrag dort, den der Waechter in
# src/lib/__tests__/das-gate-bleibt-scharf.test.ts NICHT nachpruefen konnte
# (er fragt git, und git kannte das Verzeichnis nicht).
coverage/

# OS
Thumbs.db
analytics/
producthunt-launch.md

# Dev preview artifacts
.preview-mobile/
.claude/plans/
BLOCKED.md

# Discord secrets (added 2026-04-21)
.env.webhooks
discord_invite.txt
carl-bot-setup.md
app-discord-integration.md
SETUP_REPORT.md

# Built-in engine: llama.cpp build cache (P0 scripts/build-llama.sh)
.llama-build/

# Playwright e2e
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

# Teaser raw takes + render scratch (scripts/teasers) - only the encoded
# webm/poster assets in public/teasers ship
/assets-src/

# Mobile: lokale Bauumgebung, Bauartefakte und Signatur (nie committen)
/.android-env.sh
LU_*_arm64.apk
*.apk
*.aab
*.ipa
key.properties
*.jks
*.keystore
*.mobileprovision
*.p12
keystore.properties
local.properties
# gen/android ist eingecheckt (das Projekt aus `tauri android init` plus die
# von Hand gepflegten Dateien). Was der Bau dort erzeugt und was nur auf
# diesem Rechner gilt, bleibt draussen. Die feineren Regeln stehen in
# src-tauri/gen/android/.gitignore und src-tauri/gen/android/app/.gitignore,
# die Zeilen hier sind der zweite Riegel fuer alles, was ein Geheimnis oder
# ein Bauartefakt sein kann.
/src-tauri/gen/android/**/build/
/src-tauri/gen/android/**/.gradle/
/src-tauri/gen/android/.idea/
/src-tauri/gen/android/**/*.iml
/src-tauri/gen/android/**/.cxx/
/src-tauri/gen/android/**/jniLibs/
/src-tauri/gen/android/**/key.properties
/src-tauri/gen/android/**/keystore.properties
/src-tauri/gen/android/**/local.properties
/src-tauri/gen/android/**/*.jks
/src-tauri/gen/android/**/*.keystore
/src-tauri/gen/android/**/*.apk
/src-tauri/gen/android/**/*.aab
# gen/apple ist eingecheckt (das Projekt aus `tauri ios init` plus Icons,
# Startbild, Entitlements und Privacy Manifest). Draussen bleibt, was der Bau
# erzeugt, was nur auf diesem Rechner gilt und alles, was zur Signatur
# gehoert. Eine Team-ID steht nie im Projekt, sie kommt nur ueber die
# Umgebungsvariable APPLE_DEVELOPMENT_TEAM.
# Waechter: src/lib/__tests__/mobile-ios-fallen.test.ts
/src-tauri/gen/apple/build/
/src-tauri/gen/apple/Externals/
/src-tauri/gen/apple/.tauri/
/src-tauri/gen/apple/DerivedData/
/src-tauri/gen/apple/Pods/
/src-tauri/gen/apple/Podfile.lock
/src-tauri/gen/apple/*.xcworkspace/
/src-tauri/gen/apple/**/xcuserdata/
/src-tauri/gen/apple/**/*.xcuserstate
/src-tauri/gen/apple/**/*.mobileprovision
/src-tauri/gen/apple/**/*.p12
/src-tauri/gen/apple/**/*.p8
/src-tauri/gen/apple/**/*.cer
/src-tauri/gen/apple/**/*.ipa
/src-tauri/gen/apple/**/*.xcarchive/
# Schemata, die nur ein Handy-Bau erzeugt. Die Desktop-Schemata daneben sind
# eingecheckt und kippen bei jedem Handy-Bau: danach zuruecksetzen mit
#   git checkout -- src-tauri/gen/schemas
/src-tauri/gen/schemas/android-schema.json
/src-tauri/gen/schemas/iOS-schema.json
/src-tauri/gen/schemas/mobile-schema.json

# Working notes, proofs and hand-overs of the people who build this. They
# live next to the tree while a release is made and are never part of it.
BAUBUCH*.md
STAND-*.md
LISTE-*.md
PLAN-*.md
UEBERGABE*.md
READY-ABLAUF*.md
DEPLOY*.md
INTEGRATION*.md
MAIL-ENTWURF*.md
*-BEFUND.md
*-HANDOFF.md
*-PLAN.md
*-SYSTEM-PROMPT.txt
/AUDIT-*.md
/GOAL-*.md
/EXPERIMENT-*.md
/showcase/
/PROOF/
/proof/
/belege/
/notes/
/.wave/
# Build helpers for the Windows test machine
/a[0-9]*-build.ps1
/*-box-*.ps1
# Screenshots taken while checking a build
/.*.png
/*-proof.png
/*-beweis.png

# Keys and credentials never belong in this repository, whatever tool wrote
# them next to the sources.
.env.*
!.env.example
*.pem
*.key
*.p8
*.p12
*.pfx
*.keystore
*.jks
credentials*.json
service-account*.json

# The notes under mobile-docs/ are checked in on purpose: they are the record
# of the phone build, and several are named like the working notes above
# (INTEGRATION-306.md is one). Without this line a new note with such a name
# would be left out without a word. Must stay below the block above.
!/mobile-docs/**/*.md
