__pycache__/
*.pyc
.venv/
venv/
build/
dist/
/release-assets/
*.spec
state/
*.db
.DS_Store
*.zh.epub
*.zh.txt
*.txt
!packages/core/wenyi_core/i18n/data/tasks/*.txt
!packages/core/wenyi_core/i18n/data/shared/*.txt

# Input books and generated artifacts (do not commit)
output/
explore/
*.epub
*.fb2
*.mobi
*.azw3
*.pdf
*.html
!/apps/web/tests/select-harness.html
!/apps/desktop/frontend/tests/select-harness.html
*.srt
*.docx

# Root Cargo workspace build directory shared by both crates.
/target/

# Web workspace artifacts.
node_modules/
.next/
.turbo/
/docs/.vitepress/cache/
/docs/.vitepress/.temp/
.env
.env.local
data/
*.zh-bi.epub

# pytest / coverage
.pytest_cache/
.ruff_cache/
.coverage
htmlcov/
# Pytest temporary roots. The fixed one comes from --basetemp in pyproject.toml;
# the named one is what tempfile falls back to when TMPDIR is unusable, and a
# leftover tree there changes what a repo-root scan collects between workers.
.pytest-tmp/
pytest-of-*/

# tiktoken byte cache; falls back to the working directory when TMPDIR is unusable.
data-gym-cache/

local_references
.scratch/

# Generated TypeScript build metadata and compiled tooling configuration.
*.tsbuildinfo
/apps/web/vite.config.js
/apps/web/vite.config.d.ts
/apps/web/playwright.config.js
/apps/web/playwright.config.d.ts
