Changelog

Every change,
documented.

GhostMap product changelog. Every user-visible fix and feature is logged here with the reasoning behind it.

Docs & distribution clarification June 20, 2026 Current
Site / docs / extension source sync
  • Version stamp: updated public copy to point at the current Marketplace install path.
  • Distribution truth – updated the home page, roadmap, and install docs around the active VS Code Marketplace listing.
  • V1 vs V2 scope – the "how it works" page now distinguishes the V1 active-file Ghost Tree + per-document cache from the V2 workspace-wide indexing engine direction (Ghost Index v2 + Ghost Watcher), which is designed but not shipped.
  • Language expansion – the features page now separates the 19 currently supported languages from the planned ~20-language expansion workstream gated on Tree-sitter packaging, WASM provenance, query validity, and fixture coverage.
  • Enterprise framing – the roadmap, Privacy Policy, and Terms of Use now flag Jira / Slack, Ghost Threads, Ghost Graph, dashboards, AI explanations, and permissions / audit log as future Enterprise roadmap capabilities that are not shipped today and would require their own privacy notice and consent before any integration with server services.
Reliability fixes June 17, 2026 Pre-release
Fixes
  • C# constructors - K&R and Allman constructors now appear in the Ghost Tree. Added pattern with [A-Z] anchor to distinguish from method calls.
  • PHP method recognition - Day-1 regex bug: public function foo() was invisible in large PHP files because only static consumed its trailing space. All modifiers now handle whitespace uniformly.
  • C# var fields - Class-level var declarations now appear. Local variables inside method bodies are correctly suppressed.
  • Status badge in TreeView title - GhostMap now shows [loading], [cached], [stale-cache], and discard reasons directly in the panel header.
  • Restored setLoading() - A previous round removed what seemed like a redundant call; it wasn't. Stale-cached trees no longer appear as "complete" while a refresh runs.
  • Removed background fingerprint validator - The round-5 attempt used synchronous file IO on the Extension Host main thread, causing 2-10 s freezes under RAM pressure. Removed. Optimistic trust + lazy mismatch detection remains.
Round 5 June 17, 2026 Pre-release
Performance
  • LSP timeout reduced - 1500 ms → 800 ms. Halves the cold-LSP stall on first open.
  • Small-file fast path - Files under 500 lines with an active LSP skip Tree-sitter + regex entirely, saving up to 1.2 s of WASM load.
  • Cold-start fast path (Ghost Index) - Persisted snapshots now load as trusted on activate. First open of a known file: tree paints in <50 ms instead of 5-35 s.
  • Tiny file bypass - Files under 50 lines skip the 200 ms tab-spam backpressure window.
  • Lazy LSP warm-up - GhostMap pre-warms the active language server on activate, then staggered warm-ups for other visible editors after 2 s idle.
Fixes
  • Live scanner references - Parent class arrows were missing in 60 k-line C#/Java files after the scanner mutated item ranges and callers held stale clones. Scanner now exposes live references.
  • Trailing comment backtrack - Comments between two methods were absorbed into the previous block's range. Fixed for Python, Ruby, Julia, Elixir.
  • const / let arrow functions - const fetch = () => {} was invisible in JS/TS/TSX. Fixed with a dedicated pattern.
  • Multi-line string state - PHP heredocs, JS template literals, Java text blocks now tracked across lines. Braces inside strings no longer desync the frame stack.
  • Tab-switch race condition - A slow LSP call no longer pays the full 800 ms timeout after the user switches tabs. The wait polls every 50 ms and aborts immediately.
Round 4 June 17, 2026 Pre-release
Nesting correctness
  • Allman brace support - C#, Java, C++, C, Go: methods with the opening brace on a separate line now appear correctly nested.
  • Multi-line method signatures - TS, Java: methods with arguments spread across multiple lines are detected.
  • Python / Ruby / Julia / Elixir nesting - Indent-stack tracker added. Indent-based languages now produce nested trees, not flat lists.
  • Pending body FIFO queue - Two declarations queued before a { no longer overwrite each other.
  • Anonymous frame guard - const x = { run() {} } no longer produces a spurious run in the tree.
  • Native LSP hierarchy preservation - LSP-provided children are no longer thrown away during the flatten + rebuild round trip.
Testing infrastructure
  • Added mocha + chai + ts-node test harness with a hand-written VS Code stub.
  • 84-cell icon matrix, 6-fixture nesting matrix, 4-cell anchor matrix.
  • 139 tests passing at end of round 4.
v1-coalesce-publish June 2026 Pre-release
  • Publish coalescer - 87% fewer TreeView event fires during a 60 k-line progressive scan.
  • Progressive scanner - Regex-based scanner for large files, batch-yielding via setImmediate to keep the editor responsive. C++ 60 k scan: from ~19.5 s to ~33 ms.
  • Resumable scan - Mid-scan tab switches no longer discard minutes of partial work.
  • SHA-256 cache fast path - Tab switch to a warm-cached file skips fingerprinting entirely.
  • Local state persistence - .ghostmap/ snapshot file introduced.
Pre-V1 baseline June 13, 2026
  • Initial GhostMap extension: TreeView wired, @ghost annotation parser, foreground refresh scheduling.
  • Basic anchor types: contextual, named, range.
  • Initial license. First commit.

See the full iteration log.

Every round is documented in detail in the docs - rationale, files touched, and tests that lock the behaviour in.

Read the changelog →