# Rust
/target/
**/*.rs.bk
Cargo.lock.bak

# Node / Vite
node_modules/
/dist/
.vite/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# IDE
.idea/
.vscode/*
!.vscode/extensions.json
!.vscode/settings.shared.json
*.iml

# OS
.DS_Store
Thumbs.db
desktop.ini

# Aperio build artefacts
/src-tauri/gen/
/src-tauri/target/

# Local user data (portable mode)
/data/
/plugins/user/

# A user's encrypted sync folder dropped in for diagnosis — NEVER commit
# (contains their real, decryptable calendar/task data).
/Aperio/

# Environment
.env
.env.local
.env.*.local

# Built-in OAuth client credentials for LOCAL builds — real client ids and
# secrets for Webex / Google / …, read at build time by crates/builtin-oauth.
# NEVER commit. CI supplies the same values as environment variables from
# repository secrets instead of a file. See crates/builtin-oauth/README.md.
/oauth-clients.local.env
/oauth-clients.local.env.*

# Claude Code — local settings & worktrees
.claude/settings.local.json
.claude/worktrees/

# Runtime lock from the scheduled-tasks system
.claude/scheduled_tasks.lock

# Aperio mobile — generated UniFFI bindings (regenerated from cal-ffi)
/crates/cal-ffi/bindings/

# Credential dumps from dev-secret-export. Never commit these.
aperio-credentials*.txt
