Skip to content

Releases: ardelperal/codegraph-vba

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 13 Jul 16:40

[1.7.1] - 2026-07-13

Documentation

  • The post-extraction VBA stub resolver's actual contract is now documented for consumers. metadata.repointDecision carries one of reponted-to-real, declined-runtime, declined-ambiguous, or declined-not-found — consumers detecting "missing callees" must filter on repointDecision='declined-not-found', NOT on the raw stub=true count (which is dominated by runtime-object noise from DAO.*, fso.*, etc.). The original round-5 prompt's stub_true_count < 500 acceptance criterion was replaced by the declined-not-found filter. Reference: docs/vba-stub-repoint-decision.md. (#115)

Fixes

  • The shared MCP daemon auto-respawns when killed while the proxy is still up. After Stop-Process -Id <pid> (or any other death cause) the proxy's per-project daemon watchdog detects the dead daemon via its daemon.pid lockfile and respawns it within 30s — file edits are picked up automatically instead of needing a manual codegraph-vba sync. The watchdog polls every 30s by default and unrefs its interval so it never keeps the event loop alive on its own. (#116)

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 11:10

[1.7.0] - 2026-07-13

Fixes

  • VBA's unresolved_refs table now reports the syntactic shape of each unresolved reference — call sites, form-property reads and writes, DoCmd.OpenQuery arguments, and bare identifiers each get their own row kind — so a SQL filter for "missing callee" stops drowning in DAO-field and form-control noise. The legacy references kind is preserved for any path the round does not reclassify, so SQL filters that key on it keep working. (#108)
  • VBA's post-extraction call-stub resolver now correctly declines runtime-object call stubs (DAO.*, fso.*, ListBox.AddItem, Collection.Add, err.*, VBA.*, …) instead of pointing them at themselves; a user class or module that happens to share a runtime-object name is still linked. Stubs now carry a repointDecision field on their edge metadata so consumers can tell a runtime-object decline apart from a genuinely-missing callee. (#110, supersedes #109)

v1.6.3

Choose a tag to compare

@github-actions github-actions released this 12 Jul 16:49

[Unreleased]

v1.6.2

Choose a tag to compare

@github-actions github-actions released this 12 Jul 16:28

[1.6.2] - 2026-07-12

New Features

  • VBA SQL table references now record whether the code reads or writes each table — derived from the SQL verb (SELECT/FROM and JOIN are reads; INSERT, UPDATE, and DELETE targets are writes; a form's RecordSource/RowSource binding is a read) — so you can ask which procedures write a table versus only read it. (#87)
  • VBA object variables assigned from a factory function in the same module (Set x = CreateThing() where CreateThing returns a class) are now typed from that function's return type, so calls like x.DoWork connect to the factory's class instead of dead-ending — more complete call graphs and impact analysis for factory-style Access code. (#89)
  • Dysflow VBA test manifests (tests.*.json) are now indexed: each registered Test_* procedure is linked to its manifest, so you can ask which tests cover a changed symbol — and get the test names and tags to run — straight from the graph, without grepping the manifest files. (#91)
  • Dysflow VBA test sequences under sequences/*.json are now indexed: each Test_* procedure listed in a sequence's procedures[] is linked back to the sequence file, with the sequence's runnerPolicy, position, and origin carried on the edge — so you can ask which sequence exercises a procedure and what runner policy applies, straight from the graph. The runnerPolicy + procedures shape is the only one supported today; strict-sequence (executionUnits) and slices (slices[] + submanifests) shapes are deferred to a follow-up. (#97)
  • Indexing an Access/VBA project is faster on large exports: the extractor no longer re-splits the source into lines once per concern. Five independent line-by-line sweeps now share a single pre-tokenized line array and a single walker dispatches each line to its classifier, so extraction of a ~2900-line .cls runs ~10% faster at the same accuracy as before. (#83)

Fixes

  • VBA conditional-compilation expressions (#If … Then) with mixed arithmetic and comparison, e.g. #If 2147483647 + 1 = -2147483648 Then, are now evaluated correctly. The Pratt parser previously had no binary additive level, so expressions mixing +/- with = silently failed to parse and the inactive branch was indexed. (#84)

v1.6.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 14:44

[Unreleased]

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 14:32

[1.6.0] - 2026-07-11

Changed

  • Synced with upstream colbymchenry/codegraph v1.4.1 (107 upstream commits merged into the fork). All VBA/Access extraction — its own files, resolvers, and 9 test suites — was preserved unchanged; conflicts occurred only at the integration seams and were resolved keeping the fork's VBA behavior while adopting upstream's improvements.

Fixed

  • Closed ArkTS test database handles before removing temporary directories, preventing Windows EBUSY/EPERM teardown failures.

New Features (from upstream)

  • New languages recognized: Solidity, CFML/CFScript, CUDA, Metal, Nix, Erlang, COBOL, VB.NET, Terraform, ArkTS — alongside the existing VBA/Access support.
  • Edge table now has a UNIQUE identity index; duplicate edge rows are de-duplicated so INSERT OR IGNORE actually dedups. (upstream #1034)
  • name_segment_vocab lookup (prose-word → symbol-name) backing the prompt hook's graph-derived gate.
  • Unresolvable refs are tracked as status=failed and retried by sync when a changed file later adds a matching symbol. (upstream #1240)
  • Config include patterns force first-party source INTO the index even when .gitignore would drop it (projects under a second VCS). (upstream)
  • MCP notifies when a newer CodeGraph release exists. (upstream #1243)

Fixes (from upstream)

  • Parse worker no longer reports false timeouts under a stalled main thread; grammar WASM bytes are passed to workers as a memory load instead of a per-spawn disk read. (upstream #1231)
  • uninstall now removes the CLI binaries too, not just agent configs. (upstream #1254)

Fork-specific merge notes

  • Database schema re-stacked: adopted upstream's migrations v6–v8 (edge dedup, name_segment_vocab, unresolved-ref tracking) and moved the fork's nodes.metadata migration to v9 (idempotent), bumping CURRENT_SCHEMA_VERSION to 9.
  • Kept the fork identity (@aroman22/codegraph-vba, pnpm, Node ≥22.5) and Windows-oriented spawnSync handling, combined with upstream's windowsHide.

codegraph-vba v1.5.2

Choose a tag to compare

@github-actions github-actions released this 05 Jul 18:54

[1.5.2] - 2026-07-05

Fixes

  • VBA blast-radius now correctly reports test-file callers (Test_*.bas / Test_*.cls) when the only reference to a symbol is via a type declaration (Dim x As MyEnum). The VBA extractor creates synthetic class stubs for type references in the referencing file; a new resolution pass (resolveVbaReferenceStubs) now repoints these edges to the real type node in the defining file, so getCallers finds test files that reference the symbol. (#78)

codegraph-vba v1.5.1

Choose a tag to compare

@github-actions github-actions released this 04 Jul 15:37

[1.5.1] - 2026-07-04

Fixes

  • VBA qualified calls now gate on the same rule in both shapes: the paren form (modUtils.Foo(...)) and the statement form (modUtils.Foo arg). The previous behavior was inconsistent — a Dim db As DAO.Database would emit a bogus db.OpenRecordset function stub in one form and stay silent in the other — so impact analysis on a Dysflow project produced phantom calls and missed real cross-module ones. Cross-module .bas-qualified calls now resolve in both shapes, and primitive / external-typed local receivers (DAO, ADO, Variant, etc.) stay silent in both shapes. (#40)

codegraph-vba v1.5.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 12:04

[1.5.0] - 2026-07-04

New Features

  • VBA's bang (!) references now resolve in the graph: Me!Control, Forms!FormName!Control, and the same pattern against reports and subforms link to the actual control declared in the .form.txt / .report.txt, so codegraph callers and codegraph_explore show every reference to a control by name and renaming a control is safe to do against the graph. (#68)

  • DoCmd.OpenReport "ReportName" and DoCmd.OpenQuery "QueryName" are now modeled as edges from the calling line to a stub node for the target — the same treatment DoCmd.OpenForm already had since 1.2.0 — so impact analysis and codegraph callers follow report and query opens without grepping each .cls by hand. (#69)

  • Access form and control data-source bindings are now first-class graph edges: a form's RecordSource (the table or saved query it loads) and a listbox/combobox's RowSource (the rows it displays) are linked to the target query or table, so codegraph_explore follows a form's data layer and impact analysis surfaces every form and control a query or table feeds. (#74)

  • Access TempVars — the cross-form session-state mechanism (TempVars!UserID = "x" / TempVars("UserID")) used to share values between forms without a global module — are now graph nodes keyed by name, so codegraph_explore finds every reader and writer of a TempVar and impact analysis shows what a rename touches. (#75)

  • VBA source files now ingest cleanly regardless of encoding: a leading UTF-8 BOM is stripped automatically, and Windows-1252 (the legacy default for many Access exports) falls back transparently when UTF-8 decoding fails — so indexing an Access project no longer crashes or produces mojibake node names for files saved with non-UTF-8 encodings. (#71)

Fixes

  • VBA conditional-compilation blocks (#If Win32 Then …, #If Win64 Then …, #Const MY_FLAG = 1) are now evaluated correctly: Win32 / Win64 / Win16 / Mac resolve against the current platform, True is recognized as -1 (the VBA convention), and module-level #Const declarations are honored — so the graph only indexes the branches that actually compile, instead of silently dropping or double-counting code in #If / #Else blocks. (#76)

  • A Const declared inside a VBA procedure no longer leaks to module scope — the previous behavior made a Const X = 1 inside a Sub look like a module-level constant that any other procedure could read, producing phantom references in the graph. Procedure-local constants are now correctly scoped to their Sub / Function, so the graph only links real module-level constants. (#73)

codegraph-vba v1.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 16:48

[1.4.0] - 2026-07-02

New Features

  • Added new diagnostic and impact analysis skills for Microsoft Access and VBA:
    • vba-event-tracer: Traces event declarations, raise sites, and custom WithEvents event handlers.
    • vba-handler-backtrace: Traces form control event handlers, dynamic calls, circular references, UDT parameters, and reconstructs multiline SQL statements.
    • vba-sql-impact: Analyzes saved query definitions (.sql files), extracts RecordSource and RowSource layout properties, maps SQL table/column usages, and performs table alias resolution.