node_modules
dist
.whisper/
.i18n-cache/
.env
.DS_Store
*~*.tgz
*~
server/system/logs/
server/logs/
.claude/settings.local.json
.claude/scheduled_tasks.lock
.claude/worktrees/
.vite/
.vscode/
playwright-report/
test-results/
playwright-report-live/
test-results-live/
.playwright-mcp/
.mcp.json

# Local, machine-only secrets files — never commit
.twitter_memo

# Runtime workspace data, for the layout where the workspace IS the checkout
# (MULMOCLAUDE_WORKSPACE_PATH defaults to ~/mulmoclaude, so cloning there makes
# them the same directory). Keeps personal chat/artifacts uncommittable, and out
# of Tailwind's gitignore-honouring source scan (#2632). Moot where those root
# paths don't exist, which is every checkout whose workspace lives elsewhere.
# Anchored with a leading `/` — unanchored, these match a directory of the same
# name at ANY depth: packages/core/src/{artifacts,feeds}/ and all of
# packages/plugins/.
/conversations/
/data/
/artifacts/
/feeds/
/archive/
/github/
/models/
/plugins/
/.mulmoclaude/
/.session-token
/.server-port

# V8 heap snapshots written by the dev server on near-OOM (scripts/dev-server.mjs)
*.heapsnapshot

# Bundled MCP broker (`yarn build:mcp-broker`). ~6 MB and rewritten on every
# build, so unlike server/build/dispatcher.mjs it is not committed; the spawn
# path falls back to tsx when it is absent.
/server/build/mcp-server.mjs
