# dependencies
node_modules/
server/node_modules/
client/node_modules/

# Built client half. This is a RELEASE artifact, not a source artifact: CI builds
# it with Vite in library mode and publishes it inside module-uo-<version>.tar.gz,
# because an operator must never have to build anything. Committing it would let a
# stale chunk ship alongside fresh server code.
client/dist/

# test coverage
coverage/
server/coverage/
client/coverage/

# env / secrets
.env
*.env
!.env.example

# Release staging. `.gitea/workflows/release.yml` assembles the bundle under
# /dist and packs it from there. Note this is the ROOT dist only — the module's
# two committed generated artifacts, swagger-fragment.json and
# routes.manifest.json, are deliberately NOT ignored: core merges the first
# verbatim and the second is the frozen URL surface, so both have to be
# reviewable in a diff (MODULE_API.md §2.8, §5.3).
/dist/
*.tar.gz

# logs / os
*.log
npm-debug.log*
.DS_Store
Thumbs.db

# editor / tooling local settings
.claude/settings.local.json
.vscode/
.idea/

# local planning docs (not part of the tracked codebase)
.plans/
