Releases: galimar/veridge
Release list
v0.7.5 — respect .gitignore, full no-arg help, hooks docs
Veridge 0.7.5
Indexing now respects .gitignore, the CLI is friendlier, and there's a documented way to
enforce Veridge usage in Claude Code. Engine/graph unchanged.
New
- Indexing honours
.gitignore. In a git repo, the file set comes from git itself
(git ls-files), so.gitignore(including nested ones),.git/info/excludeand global
excludes are all respected — no pattern parsing of our own. Veridge's built-in vendor/binary
skips and an optional.veridgeignorestill apply; outside git it falls back to a filesystem
walk. On a real monorepo this dropped indexed files 513→476 (coverage,*.js.map,
*.tsbuildinfo,.turbo, … no longer indexed). (Behaviour change: gitignored files are now
excluded by default. A tracked file is always indexed; to index an untracked-but-ignored file,
git addit.) veridgewith no command prints the full help instead of a terse argparse error; the help
epilog documents the.gitignore/.veridgeignoreexclusion behaviour.- Enforcement docs.
docs/AGENT_PLAYBOOK.mdnow shows
.claude/settings.jsonhooks that make the rules stick in Claude Code (the steering note is
only a nudge): rebuild on edit, remind each turn, or hard-block edits while the index is stale.
Fixed
- Non-ASCII filenames are no longer dropped.
git ls-files -zemits raw UTF-8; decoding it
with the locale codec (cp1252 on Windows) mojibaked accented names and silently excluded them
from the graph and the freshness manifest. Git output is now read as bytes andos.fsdecode-d,
round-tripping to the real on-disk name. Tracked dangling symlinks are kept too (parity with the
filesystem walk). (Both caught by an adversarial review before release.)
v0.7.4 — veridge doctor (setup check)
Veridge 0.7.4
A setup diagnostic. No engine changes — the graph, queries and zero-dependency core are identical
to 0.7.3.
New
-
veridge doctor— a read-only check that answers "is Veridge wired up correctly here?" in
one command: index built, the[mcp]/[treesitter]extras present, and the MCP server + steering
note registered for Claude and Codex. It prints the exact next command for anything missing
(e.g.run veridge integrate codex), and exits non-zero only when there's no index — so it's
scriptable.--jsonfor machine-readable output.It checks the project files that configure MCP, not the assistant's running client (Veridge
can't see that), and reminds you that theveridgeCLI is always the fallback — every MCP tool
has a CLI twin. Handy onboarding for repos where Claude and Codex work together.
v0.7.3 — gate --summary/--json, in-place integrate refresh
Veridge 0.7.3
Integration & CI ergonomics. No engine changes — the graph, queries and zero-dependency core are
identical to 0.7.2.
New
veridge gate --summary— counts + verdict only, without the per-reference detail list.
Handy for large repos and CI logs.veridge gate --json— machine-readable result (ok,broken,stale,orphans, plus the
fullbroken_refslist) for wiringgateinto CI. Exit code is unchanged:0clean,1drift.
Fixed
veridge integraterefreshes the steering note in place. Re-running it on an already-wired
project replaces the<!-- veridge:start -->…<!-- veridge:end -->block inCLAUDE.md/
AGENTS.mdwith the current directive, instead of skipping because the marker was already
present. Surrounding content is preserved and the operation stays idempotent. Previously,
projects wired with an older version kept a stale note — nowveridge integrate claude|codex
brings them up to date.
The gate --summary mode comes from a real evaluation of Veridge on a large TypeScript monorepo.
v0.7.2 — agent playbook, prompts, richer steering note
Veridge 0.7.2
Onboarding & multi-agent guidance — no engine changes. The graph, queries and zero-dependency
core are identical to 0.7.1.
New
docs/AGENT_PLAYBOOK.md— the canonical protocol for AI coding agents (Claude Code and
Codex) using Veridge: setting up a new project, evaluating-first then installing on an
existing one, multi-agent use (Claude + Codex on one shared graph), and how to route
feedback (project issues vs Veridge bugs/stats/fixes).docs/PROMPTS.md— ready-to-paste human prompts for each flow, per assistant.- Richer steering note.
veridge integrate claude|codexnow writes the golden rules into
CLAUDE.md/AGENTS.md— read-only, never a project dependency, rebuild after changes, don't
send anything outside the repo on your own — plus a link to the playbook. Both assistants get the
same etiquette so they hand off cleanly. - Evaluation-report issue template that keeps Veridge feedback separate from a project's own
issues.
Existing integrations are unaffected; re-run veridge integrate … to refresh the note.
v0.7.1 — accurate doc references (HTML attrs + directory links)
Veridge 0.7.1
Two fixes to documentation-reference accuracy, so gate / health report real drift
instead of false positives. Deterministic, no behaviour change for code/import edges.
Fixed
- HTML references come from
href/srcattributes, not the markdown/prose heuristics.
A bundled doc page with inlined minified JS (e.g.t[s](i+1)) used to make the markdown
link regex](…)fire and record garbage likei+1/"z","!!!!!"as broken references.
HTML now uses a dedicated, extension-filtered attribute extractor (URLs dropped) — the noise
is gone and genuine HTML links are resolved. - A link to a real project directory is no longer "broken." A markdown link whose target
is an existing directory (e.g.[the web app](apps/web)) resolved to no file node and was
reported broken; it is now treated as valid. Genuinely missing targets are still flagged.
No changes to the symbol / import / call graph; same zero-dependency core.
v0.7.0 — TS monorepo import resolution (ESM .js + workspace packages)
Veridge 0.7.0
Sharper JS/TS import resolution for real-world TypeScript monorepos. Deterministic and
regex/AST-based — works with or without the [treesitter] extra. Core stays zero-dependency.
New
- TS/ESM
.js→.tsspecifiers — NodeNext writes the runtime extension (import "./x.js"
for anx.tssource); these now resolve to the TypeScript source instead of dropping. - Monorepo workspace packages — bare imports of in-tree packages (
@scope/pkg,
@scope/pkg/subpath) resolve via eachpackage.jsonnameto the package's source entry
(src/index,index, …). npm / yarn / pnpm workspaces.
Impact
On a real TypeScript monorepo, file-import edges went 117 → 140 — the 23 new edges are
cross-package workspace imports that were previously invisible (0). impact on a shared core
package went from 2 to 53 dependents, so blast-radius queries now see across package boundaries.
Hardening
- A
package.jsonat the repo root resolves correctly (no more absolute/src/indexcandidates). - A malformed
package.jsonis skipped, never aborting the index build. - Regression tests for both; 121 tests, ruff clean, dependency audit green.
v0.6.0 — Laravel + Vue + import aliases
Veridge 0.6.0
Framework- and front-end-aware indexing, all deterministic and behind the optional
[treesitter] extra. No new runtime dependencies in the core.
New
- Laravel convention wiring — route files (
routes/*.php) link to their controllers,
and theEventServiceProviderlinks events to their listeners (resolved byX::class
name to classes already in the graph).impact <Event>now surfaces its listeners. - PHP symbols + call graph via tree-sitter.
- Vue SFCs — the
<script>/<script setup lang="ts">block is parsed as JS/TS. - JS/TS/Vue import aliases —
@/…,~, andtsconfig/jsconfigpathsresolve to
real files, so cross-file import edges land where they belong.
Install
pip install "veridge[treesitter]"
118 tests, ruff clean.
Veridge v0.5.0
Veridge v0.5.0
Added
veridge integrate claude | codex— one command wires the MCP server into your assistant (project-local.mcp.json/.codex/config.toml) and adds a steering note (CLAUDE.md / AGENTS.md) so it prefers Veridge's ranked, budgeted queries over re-reading files. Idempotent; no global config touched.- Richer offline viewer — Barnes-Hut force layout, node size by PageRank, directed type-coloured edges, neighbourhood highlight on hover/select, colour/group by type / area / layer (with an optional cluster force), fit / re-layout, drag-to-pin. Still a hand-written, dependency-free canvas.
Fixed (correctness & accuracy)
- call graph: a class no longer double-counts the calls inside its methods
- budget: rows are costed as the JSON the assistant actually receives, so a token budget is honest
- a single
Graph.is_orphan, shared by the digest and the gate (no more divergence) - cached adjacency for repeated
focus/impact;whyBFS uses a deque; nanosecond mtime signatures
Docs
- install from PyPI; a "Local, private, read-only" section (no network, no telemetry, nothing leaves your machine); a FAQ; an AGENTS.md.
Zero runtime dependencies in the core. 104 tests, ruff clean.
Install or upgrade: pip install -U veridge (or pip install "veridge[mcp,treesitter]").
Veridge v0.4.0
Veridge v0.4.0
Added — the open graph
- Versioned schema —
graph.jsonnow carries a top-levelschema_version, making it a stable public contract. Documented indocs/graph-format.md. veridge export— emit the graph for other tools to build on:jgf— JSON Graph Format (generic, tool-friendly),dot— Graphviz (for rendering),native— the canonicalgraph.json.
So an LLM-comprehension tool, agent, notebook or visualiser can consume Veridge's deterministic structural + ranking layer for free, and spend its own model only on semantics.
Zero runtime dependencies in the core. 93 tests, ruff clean.
Install: pip install -U veridge (or pip install veridge[treesitter]).