node_modules/
dist/
# zcode-server-cli 发行包 staging 输出（spec §7.1），本地组装产物不入库。
dist-release/
# Bugfix: macOS CI 按架构隔离 electron-builder 输出目录，这些仍是构建产物。
packages/desktop/dist-*/
out/
prebuilds/
bundled-resources/
mock-cdn/
packages/desktop/bundled-resources/
packages/desktop/bundled-agents/
packages/desktop/bundled-tools/
packages/desktop/mock-cdn/
packages/desktop/.e2e-home/
# 修复原因：Windows shard runner 会生成带 run id 的 HOME；中断后不应把测试产物误判为源码改动。
packages/desktop/.e2e-home-*/
packages/desktop/.e2e-artifacts/
packages/desktop/.e2e-cache/
packages/desktop/.e2e-network-capture/
*.tsbuildinfo
.DS_Store
coverage/
.env.local
.env.*.local
.env
.VSCodeCounter
.idea/
.zed/
.cache
# CI 会跨任务保留这些下载缓存；不应进入 Git 未跟踪源码枚举。
/.electron-builder-cache/
/.electron-cache/
/.pnpm-store/
/.npm-cache/
.turbo/
z-work/
openclaw/
.run-logs/
# 旧开发目录：开发版运行时已改名为 .zcode-runtime，老机器上残留的目录仍需忽略，避免误提交 Electron.app 副本。
.codex-runtime/
.worktrees/
packages/stream-animate/dist-server/
packages/stream-animate/.stream-animate-data/
.claude/worktrees/
.codegraph
.mimosa/
# 2026-08-20：集成分支曾混入 node-gyp 构建产物与 .playwright-mcp 临时快照；
# 入库由 scripts/ci/ci-repo-hygiene.mjs 在 CI 第一站拒绝，这里让本地 git add 也忽略它们。
.playwright-mcp/
*.o
.deps/
obj.target/
config.gypi
gyp-mac-tool
*.target.mk
binding.Makefile
# 修复原因（2026-08-25）：这两条原来写成 build/Makefile、build/Release/*.node，
# 含中间斜杠的 pattern 只相对 .gitignore 所在目录（仓库根）生效，压根匹配不到
# packages/ax-macos/build/ 下的产物；而 ci-repo-hygiene.mjs 的 denylist 用的是
# (^|/)build/... 任意层级匹配。宽严不一致的结果：合并 wf-more-primitives 时一次
# git add -A 把这两个文件重新扫进索引（其余 7 个产物因 *.o / obj.target/ 等无斜杠
# pattern 生效而被拦住），CI 第一站直接红。加 **/ 让忽略范围与门禁范围对齐。
**/build/Makefile
**/build/Release/*.node

# CUA 权限浮窗吸附用的 Swift 辅助二进制（由 prepare:macos-window-bounds 从
# packages/desktop/native/macos-window-bounds/main.swift 编出，源码入库、产物不入库）
packages/desktop/resources/macos-window-bounds/
# CUA Helper SEA 基座下载缓存（scripts/cua-helper-sea-base.mjs 落盘的官方 Node 22 运行时，纯下载产物）
/.tmp/
# Python 字节码（docker/plugin-eval/summarize.py 在主机上跑会生成）。
__pycache__/
*.pyc
.zcode-runtime
