mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-05 02:43:32 +00:00
9.6 KiB
9.6 KiB
Changelog
All notable changes to GitNexus will be documented in this file.
[1.4.8] - 2026-03-23
Added
- Type resolution Milestone D — Phases 10–13 consolidated into a single milestone with full integration test coverage across 11 languages (#387)
- Phase A/B/C: overload disambiguation via argument literal types, constructor-visible virtual dispatch via
constructorTypeMap,parameterTypesextraction inextractMethodSignature - Phase 14 enhancements: single-pass seeding, Tarjan's SCC for cyclic resolution, cross-file return types
- Optional parameter arity resolution
- Per-language cross-file binding tests and resolver fixes
- Store all overloads in
fileIndexinstead of last-write-wins
- Phase A/B/C: overload disambiguation via argument literal types, constructor-visible virtual dispatch via
- Cross-file binding propagation for multiple languages
- HTTP embedding backend for self-hosted/remote endpoints with dynamic dimensions, batch guards, and dimension mismatch handling (#395)
- Markdown file indexing — headings and cross-links as graph nodes (#399)
- MiniMax provider support (#224)
- Codex MCP and skills support with CLI setup flow and e2e tests
- HelpPanel UI — built-in help for the web interface (#465)
- Section node type registered in
NODE_TABLESandNODE_SCHEMA_QUERIES(#401) - Community and Process node properties documented in cypher tool description (#411)
- Server-mode hydration regression tests
- Pre-commit hooks via husky for typecheck + unit tests
Fixed
- Python import alias resolution —
import X as Ynow routes module aliases directly tomoduleAliasMapin import processor (#417, #461) - Python module-qualified calls resolved via
moduleAliasMap(#337) - Python module-qualified constructor calls (Issue #337)
- Heritage/MRO edges now calculate confidence per resolution tier (#412)
- LadybugDB lock — retry on DB lock with session-safe cleanup (#325)
- CORS — allow private/LAN network origins (#390)
- Analyze without git — allow indexing folders without a
.gitdirectory (#384) - Web: LadybugDB —
getAllRows,loadServerGraph, BM25, highlight clearing (#474) - Server-mode hydration — await server connect hydration flow (#398, #404)
- Embedding dimensions — validate on every vector, not just the first; hard-throw on mismatch
- Timeout detection — always-on dim validation, test hardening
- ONNX CUDA — prevent uncatchable native crash when CUDA libs present but ORT lacks CUDA provider; clarify linux/x64-only
- CLI — run codex mcp add via shell on Windows; write tool output to stdout via fd 1
- Stale progress, cross-platform prepare, DEV log fixes
- Import resolution API simplified per PR #409 review findings (P0–P3)
- Auto-labeling — switched from clustering to z-score method; multi-dim aware Mahalanobis threshold
- PR/issue filtering — fixed prop cutoff issue
- Sequential enrichment queries + stale data detection
- package-lock.json synced with
onnxruntime-node ^1.24.0
Changed
- Unified language dispatch with compile-time exhaustive tables
- Prepare script simplified — removed
scripts/prepare.cjs - Switched from .githooks to husky for pre-commit hooks
@claudeworkflow restricted to maintainers and above viaauthor_associationcheck
Performance
- O(1) per-chunk synthesis guard using
boolean[]instead of Set sizeBeforeoptimization in type resolution- Token truncation improvements
Chore
- Strengthened Python module-import tests, un-skipped match/case, added perf guard
- Added positive and negative tests for all 4 bug fixes
- E2e tests for stale detection, sequential enrichment, stability (#396)
- Integration tests for Milestone D across all 11 languages
gitnexus-stable-opsadded to community integrations.env.exampleadded for embedding backend configuration
[1.4.7] - 2026-03-19
Added
- Phase 8 field/property type resolution — ACCESSES edges with
declaredTypefor field reads/writes (#354) - Phase 9 return-type variable binding — call-result variable binding across 11 languages (#379)
extractPendingAssignmentin per-language type extractors captureslet x = getUser()patterns- Unified fixpoint loop resolves variable types from function return types after initial walk
- Field access on call-result variables:
user.nameresolvesnamevia return type's class definition - Method-call-result chaining:
user.getProfile().bioresolves through intermediate return types - 22 new test fixtures covering call-result and method-chain binding across all supported languages
- Integration tests added for all 10 language resolver suites
- ACCESSES edge type with read/write field access tracking (#372)
- Python
enumerate()for-loop support with nested tuple patterns (#356) - MCP tool/resource descriptions updated to reflect Phase 9 ACCESSES edge semantics and
declaredTypeproperty
Fixed
- mcp: server crashes under parallel tool calls (#326, #349)
- parsing: undefined error on languages missing from call routers (#364)
- web: add missing Kotlin entries to
Record<SupportedLanguages>maps - rust:
awaitexpression unwrapping inextractPendingAssignmentfor async call-result binding - tests: update property edge and write access expectations across multiple language tests
- docs: corrected stale "single-pass" claims in type-resolution-system.md to reflect walk+fixpoint architecture
Changed
- Upgrade
@ladybugdb/coreto 0.15.2 and remove segfault workarounds (#374) - type-resolution-roadmap.md overhauled — completed phases condensed to summaries, Phases 10–14 added with full engineering specs
[1.4.6] - 2026-03-18
Added
- Phase 7 type resolution — return-aware loop inference for call-expression iterables (#341)
ReturnTypeLookupinterface withlookupReturnType/lookupRawReturnTypesplitForLoopExtractorContextcontext object replacing positional(node, env)signature- Call-expression iterable resolution across 8 languages (TS/JS, Java, Kotlin, C#, Go, Rust, Python, PHP)
- PHP
$this->propertyforeach via@varclass property scan (Strategy C) - PHP
function_call_expressionandmember_call_expressionforeach paths extractElementTypeFromStringas canonical raw-string container unwrapper inshared.tsextractReturnTypeNamededuplicated fromcall-processor.tsintoshared.ts(137 lines removed)SKIP_SUBTREE_TYPESperformance optimization with documentedtemplate_stringexclusionpendingCallResultsinfrastructure (dormant — Phase 9 work)
Fixed
- impact: return structured error + partial results instead of crashing (#345)
- impact: add
HAS_METHODandOVERRIDEStoVALID_RELATION_TYPES(#350) - cli: write tool output to stdout via fd 1 instead of stderr (#346)
- postinstall: add permission fix for CLI and hook scripts (#348)
- workflow: use prefixed temporary branch name for fork PRs to prevent overwriting real branches
- test: add
--repoto CLI e2e tool tests for multi-repo environment - php: add
declaration_listtype guard onfindClassPropertyElementTypefallback - docs: correct
pendingCallResultsdescription in roadmap and system docs
Chore
- Add
.worktrees/to.gitignore
[1.4.5] - 2026-03-17
Added
- Ruby language support for CLI and web (#111)
- TypeEnvironment API with constructor inference, self/this/super resolution (#274)
- Return type inference with doc-comment parsing (JSDoc, PHPDoc, YARD) and per-language type extractors (#284)
- Phase 4 type resolution — nullable unwrapping, for-loop typing, assignment chain propagation (#310)
- Phase 5 type resolution — chained calls, pattern matching, class-as-receiver (#315)
- Phase 6 type resolution — for-loop Tier 1c, pattern matching, container descriptors, 10-language coverage (#318)
- Container descriptor table for generic type argument resolution (Map keys vs values)
- Method-aware for-loop extractors with integration tests for all languages
- Recursive pattern binding (C#
ispatterns, Kotlinwhen/issmart casts) - Class field declaration unwrapping for C#/Java
- PHP
$this->propertyforeach member access - C++ pointer dereference range-for
- Java
this.data.values()field access patterns - Position-indexed when/is bindings for branch-local narrowing
- Type resolution system documentation with architecture guide and roadmap
.gitignoreand.gitnexusignoresupport during file discovery (#231)- Codex MCP configuration documentation in README (#236)
skipGraphPhasespipeline option to skip MRO/community/process phases for faster test runshookTimeout: 120000in vitest config for CI beforeAll hooks
Changed
- Migrated from KuzuDB to LadybugDB v0.15 (#275)
- Dynamically discover and install agent skills in CLI (#270)
Performance
- Worker pool threshold — skip worker creation for small repos (<15 files or <512KB total)
- AST walk pruning via
SKIP_SUBTREE_TYPESfor leaf-only nodes (string, comment, number literals) - Pre-computed
interestingNodeTypesset — single Set.has() replaces 3 checks per AST node fastStripNullable— skip full nullable parsing for simple identifiers (90%+ case)- Replace
.children?.find()with manual for loops inextractFunctionNameto eliminate array allocations
Fixed
- Same-directory Python import resolution (#328)
- Ruby method-level call resolution, HAS_METHOD edges, and dispatch table (#278)
- C++ fixture file casing for case-sensitive CI
- Template string incorrectly included in AST pruning set (contains interpolated expressions)