mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-08 03:08:13 +00:00
159 lines
9.6 KiB
Markdown
159 lines
9.6 KiB
Markdown
# 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`, `parameterTypes` extraction in `extractMethodSignature`
|
||
- 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 `fileIndex` instead of last-write-wins
|
||
- **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_TABLES` and `NODE_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 Y` now routes module aliases directly to `moduleAliasMap` in 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 `.git` directory (#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
|
||
- **`@claude` workflow** restricted to maintainers and above via `author_association` check
|
||
|
||
### Performance
|
||
- **O(1) per-chunk synthesis guard** using `boolean[]` instead of Set
|
||
- **`sizeBefore` optimization** 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-ops` added to community integrations
|
||
- `.env.example` added for embedding backend configuration
|
||
|
||
## [1.4.7] - 2026-03-19
|
||
|
||
### Added
|
||
- **Phase 8 field/property type resolution** — ACCESSES edges with `declaredType` for field reads/writes (#354)
|
||
- **Phase 9 return-type variable binding** — call-result variable binding across 11 languages (#379)
|
||
- `extractPendingAssignment` in per-language type extractors captures `let x = getUser()` patterns
|
||
- Unified fixpoint loop resolves variable types from function return types after initial walk
|
||
- Field access on call-result variables: `user.name` resolves `name` via return type's class definition
|
||
- Method-call-result chaining: `user.getProfile().bio` resolves 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 `declaredType` property
|
||
|
||
### 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**: `await` expression unwrapping in `extractPendingAssignment` for 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/core` to 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)
|
||
- `ReturnTypeLookup` interface with `lookupReturnType` / `lookupRawReturnType` split
|
||
- `ForLoopExtractorContext` context object replacing positional `(node, env)` signature
|
||
- Call-expression iterable resolution across 8 languages (TS/JS, Java, Kotlin, C#, Go, Rust, Python, PHP)
|
||
- PHP `$this->property` foreach via `@var` class property scan (Strategy C)
|
||
- PHP `function_call_expression` and `member_call_expression` foreach paths
|
||
- `extractElementTypeFromString` as canonical raw-string container unwrapper in `shared.ts`
|
||
- `extractReturnTypeName` deduplicated from `call-processor.ts` into `shared.ts` (137 lines removed)
|
||
- `SKIP_SUBTREE_TYPES` performance optimization with documented `template_string` exclusion
|
||
- `pendingCallResults` infrastructure (dormant — Phase 9 work)
|
||
|
||
### Fixed
|
||
- **impact**: return structured error + partial results instead of crashing (#345)
|
||
- **impact**: add `HAS_METHOD` and `OVERRIDES` to `VALID_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 `--repo` to CLI e2e tool tests for multi-repo environment
|
||
- **php**: add `declaration_list` type guard on `findClassPropertyElementType` fallback
|
||
- **docs**: correct `pendingCallResults` description 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# `is` patterns, Kotlin `when/is` smart casts)
|
||
- Class field declaration unwrapping for C#/Java
|
||
- PHP `$this->property` foreach 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
|
||
- `.gitignore` and `.gitnexusignore` support during file discovery (#231)
|
||
- Codex MCP configuration documentation in README (#236)
|
||
- `skipGraphPhases` pipeline option to skip MRO/community/process phases for faster test runs
|
||
- `hookTimeout: 120000` in 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_TYPES` for leaf-only nodes (string, comment, number literals)
|
||
- Pre-computed `interestingNodeTypes` set — 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 in `extractFunctionName` to 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)
|
||
|
||
## [1.4.0] - Previous release
|