# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
build/
dist/
.venv/
venv/
env/

# Secrets / local config
.env
connections.json
kb_server.json

# IDE
.vscode/
.idea/
.DS_Store

# Snapshot dumps (business data)
snapshots/

# Playwright debug screenshots
playwright/shots/

# Credential files — the bare name was not enough. A connections.json.bak-<date>
# backup (written by the config editor) slipped past `connections.json` and was
# committed to a PUBLIC repo on 2026-07-27. Match every variant, not the one name.
connections.json*
kb_server.json*
*.bak
*.bak-*
.env

# graphify is no longer used in this repo. The rule stays because the tool writes
# multi-MB generated graphs into these directories the moment anyone runs it, and
# `git status` collapses an untracked directory to a single line — which is exactly
# how a 2.8 MB graph.json gets swept into a `git add -A` unnoticed.
graphify-out/
graphify-out-code*/

# generated repowiki from an external tool — huge, and some paths exceed the Windows limit
.qoder/

# Frozen-build scratch (packaging/BUILD.md). buildenv/ already ignores itself via
# the .gitignore venv writes, but pybuild/ does not: only pybuild/dist matches the
# `dist/` rule above, so work/ and the generated .spec were left untracked and a
# `git add -A` would sweep in ~100MB of PyInstaller intermediates.
buildenv/
pybuild/
extbuild/
setupbuild/
ext/
*.mcpb
