What's New
SemanticModel Architecture (SM-8 through SM-19)
The ingestion model layer was rebuilt from the ground up. The old god-object SymbolTable that mixed leaf storage, owner-scoped registries, and mutation entry points has been replaced by a clean model/ module with focused, ISP-compliant components:
- TypeRegistry for class-like nodes, MethodRegistry for owner-scoped methods with arity-aware overload lookup, FieldRegistry for properties
- RegistrationTable with compile-time dispatch constraints ensuring every
NodeLabelis classified - ResolutionContext with a first-class Tier 2a named-binding step and two Tier 3 performance fast paths
- HeritageMap built from accumulated
ExtractedHeritage[]powering MRO-aware method resolution across inheritance chains (#739, #740, #741) - BindingAccumulator for cross-file return type propagation (#743, #763)
- The
resolveCallTargetmonolith was decomposed intoresolveMemberCall(#744),resolveStaticCall(#754), andresolveFreeCall(#756), then replaced with a thin dispatcher (#770) - All fuzzy lookups (
lookupFuzzy,lookupFuzzyCallable,globalIndex,callableIndex) deleted and replaced with structured O(1) indices (#769)
Service Group Infrastructure
A new subsystem for tracking cross-service dependencies in monorepos. Detects service boundaries, extracts contracts, and maps how services communicate. Includes a sync pipeline, CLI commands, MCP tools, and a monorepo test fixture. Bridge storage backed by LadybugDB with contract matching expansion (#795).
Language Improvements
- Vue SFC support with destructured call result tracking (#604)
- C# interface-to-interface heritage capture (#789)
- Java method references —
obj::methodtreated as call sites (#622) - C/C++ MethodExtractor config with pure virtual detection (#617)
- MethodExtractor configs for Python, PHP, Swift, Dart, Rust, Ruby (#624)
- METHOD_IMPLEMENTS edges with overload disambiguation and MethodExtractor unification (#642)
- Same-arity overload disambiguation via type-hash suffix (#658)
CLI and Tooling
GITNEXUS_HOMEenv var to customize the global directory (#746)- Class name lookup index for O(1) qualified lookups (#707, #716)
lookupMethodByOwnerindex for O(1) cross-class chain resolution (#665)- Verbose analyze output now prints skipped large file paths (#745)
- Fuzzy lookup counters for performance visibility (#708)
Fixed
- Stack overflow on large PHP files — switched to iterative AST traversal (#783)
- Large repository graph loading failure (#732)
- Windows multi-repo switching — false 404 errors and stale repo context (#633)
detect_changesdiff mapping — diff hunks now map to symbol line ranges (#779)- HTTP client vs Express route detection and Spring interface attribution (#780)
- VECTOR extension not loaded during DB init for semantic search (#782)
- tree-sitter-swift postinstall patch for macOS ARM64 (#788)
- tree-sitter-c peer dependency conflict pinned (#723)
- Constructor indexing in methodByOwner (#694, #753)
- Named binding processor —
lookupExactreplaced withlookupExactAll(#755) .gitnexusignorenegation patterns now respected (#654)- MCP setup prefers global gitnexus binary over npx (#653)
- CORS rejection returns clean error instead of 500 (#646)
- Array.push stack overflow — replaced spread with loop (#650)
- MCP stdout silencing prevents embedder/pool-adapter conflicts (#645)
- Web heartbeat — graceful reconnection replaces aggressive disconnect (#643)
- Web repo scoping — backend calls scoped to active repo (#644)
- OpenCode config path and FTS extension load order (#781)
- OnboardingGuide dev-mode serve command corrected (#725)
- Security issues and critical bugs from code review (#709)
Changed
- Replaced class-type fuzzy lookups with structured indices in type-env (#733, #734, #736)
- Extracted
CLASS_LIKE_TYPESconstant (#693)
Contributors
- @magyargergo — SemanticModel architecture, MethodExtractor configs (Python/PHP/Swift/Dart/Rust/Ruby, C/C++), METHOD_IMPLEMENTS edges, overload disambiguation, lookupMethodByOwner index (#786, #624, #617, #642, #658, #665)
- @ivkond — Service group infrastructure: boundary detection, contract extractors, sync pipeline, bridge.lbug storage (#795)
- @Gahrcoder — detect_changes mapping, HTTP/Express detection, VECTOR extension, OpenCode config, security fixes (#779, #780, #781, #782, #709)
- @abhigyanpatwari — BindingAccumulator, MCP setup, CORS, stdout silencing, web heartbeat and repo scoping (#743, #653, #646, #645, #643, #644)
- @ShiningXu — Replace fuzzy lookups with structured indices in type-env (#733, #734, #736)
- @son-nguyen-301 — Vue SFC support with destructured call tracking (#604)
- @cnighut — Java method reference resolution (#622)
- @Prota100 — C# interface-to-interface heritage (#789)
- @ideepakchauhan7 — Class name lookup index, qualified class lookups (#707, #716)
- @kunalhemnani1 — Fuzzy lookup counters, named-binding processor fix (#708, #755)
- @pratyush618 — tree-sitter-c peer dep fix, OnboardingGuide correction (#723, #725)
- @txhno — Constructor indexing in methodByOwner (#694, #753)
- @jwwd-repos — PHP stack overflow iterative traversal fix (#783)
- @JaysonAlbert — Large repository graph loading fix (#732)
- @Yogesh1290 — Windows multi-repo switching fix (#633)
- @dave — tree-sitter-swift macOS ARM64 patch (#788)
- @muratclk — Verbose analyze skipped file paths (#745)
- @evander-wang — GITNEXUS_HOME env var (#746)
- @tantk — Array.push stack overflow fix (#650)
- @tushardhawas — CLASS_LIKE_TYPES constant extraction (#693)
- @kuishou68 — README link spacing fix (#731)
- @x0m4ek — Codex docs typo fix (#687)
Full Changelog: v1.5.3...v1.6.0