github abhigyanpatwari/GitNexus v1.6.4-rc.55
Release Candidate v1.6.4-rc.55

latest releases: v1.6.4-rc.61, v1.6.4-rc.60, rc/0add072f25da254f358e6cd53eb9559213735eca...
pre-release6 hours ago

Automated release candidate build from main.

npm: npm install gitnexus@rc
Version: 1.6.4-rc.55
Target base: 1.6.4 (rc #55)
Source commit (main): fa36254
Release commit (versioned tree): a533f57

Release candidates are pre-stable builds intended for early testing.
Stable releases remain on the latest dist-tag.

What's Changed

🚨 Security

  • Improve MCP startup compatibility and lazy-load CLI commands by @Shockang in #207
  • test: add integration test coverage and fix KuzuDB fork crashes by @magyargergo in #209

🚀 Features

  • feat(hooks): auto-reindex after git commit with embeddings preservation by @L1nusB in #205
  • feat: HTTP embedding backend for self-hosted/remote endpoints by @zm2231 in #395
  • feat: complete Swift support — query fix, export detection, implicit imports, constructor resolution by @marxo126 in #408
  • feat(cli): add 'index' command to register existing .gitnexus/ folder by @adonisdoda in #402
  • feat: add docker support by @BRAINIFII in #848

🐛 Bug Fixes

  • fix: add preinstall cleanup to prevent ENOTEMPTY on global upgrade by @Copilot in #843
  • fix: set env.cacheDir to user-writable location by @enihcam in #845
  • fix: devendor tree-sitter-proto install lifecycle to prevent ENOTEMPTY on global upgrade by @magyargergo in #846

👷 CI/CD

📝 Other Changes

  • readme by @abhigyanpatwari in #3
  • Embeddings pipeline by @abhigyanpatwari in #4
  • Embeddings pipeline by @abhigyanpatwari in #5
  • highlight tool for agent, prompt enhancements by @abhigyanpatwari in #6
  • highlight tool fixes by @abhigyanpatwari in #7
  • prompt enhancements, azure ai provider fixes by @abhigyanpatwari in #8
  • Embeddings pipeline by @abhigyanpatwari in #9
  • Embeddings pipeline by @abhigyanpatwari in #10
  • prompt changes by @abhigyanpatwari in #14
  • Schema experiments by @abhigyanpatwari in #16
  • Minor prompt fix by @abhigyanpatwari in #17
  • Agent UI improved. Prompt injected with repo directory structure, hot… by @abhigyanpatwari in #18
  • better regex for grounding, UI improvements by @abhigyanpatwari in #19
  • Agent and UI improvements by @abhigyanpatwari in #20
  • fixed settings icon and added openai provider support by @abhigyanpatwari in #21
  • readme updated by @abhigyanpatwari in #22
  • minor change in readme by @abhigyanpatwari in #23
  • Schema experiments by @abhigyanpatwari in #24
  • blast radius tool implemented by @abhigyanpatwari in #25
  • readme mermain fix by @abhigyanpatwari in #26
  • Mcp bridge by @abhigyanpatwari in #28
  • Leidens algorithm and processmap by @abhigyanpatwari in #31
  • Leidens algorithm and processmap by @abhigyanpatwari in #33
  • Leidens algorithm and processmap by @abhigyanpatwari in #34
  • updated readme by @abhigyanpatwari in #35
  • Gitnexus cli by @abhigyanpatwari in #36
  • Add Claude Code GitHub Workflow by @abhigyanpatwari in #46
  • fix: use cross-platform npx command in .mcp.json by @abhigyanpatwari in #48
  • fix: disable embeddings by default, fix segfault on macOS/Linux by @abhigyanpatwari in #51
  • feat: local backend mode for web UI by @paulrobello in #49
  • feat(plugin): self-contained Claude Code plugin with bundled MCP, hooks, and skills by @L1nusB in #68
  • feat(ui): Add a copy button to the Nexus AI and copy the md result by @CrazyBunQnQ in #75
  • feat(php): full PHP 8+ / Laravel support with Eloquent model tracking by @gunesbizim in #64
  • Probe for CUDA before attempting GPU embeddings by @BlockSecCA in #58
  • feat: remote server connection mode and multi-repo switching by @baconwasr1ght in #66
  • fix(mcp): don't crash server when no repos are indexed by @abhigyanpatwari in #96
  • fix: lazy-import embeddings to avoid onnxruntime crash on Node v24+ by @abhigyanpatwari in #99
  • fix: ensure exec usage does not allow poisoning by @strazzere in #61
  • feat(ingestion): add AST decorator-based entrypoint hints by @PurpleNewNew in #102
  • fix(web): map API path field to repoPath in fetchRepoInfo by @christopheralex-cc in #105
  • feat(swift): full Swift / iOS language support with SPM import resolution by @jandyx in #94
  • feat: add Kotlin language support by @magyargergo in #84
  • Feat/php laravel support by @gunesbizim in #133
  • feat: inline imperative instructions in CLAUDE.md/AGENTS.md by @abhigyanpatwari in #190
  • chore: bump version to 1.3.7 by @abhigyanpatwari in #191
  • fix(cli): force-exit after analyze to prevent KuzuDB hang by @abhigyanpatwari in #192
  • chore: bump version to 1.3.8 by @abhigyanpatwari in #193
  • fix(ingestion): align CALLS edge sourceId with node ID format by @abhigyanpatwari in #194
  • fix: guard createASTCache against zero maxSize to prevent LRU cache crash by @magyargergo in #144
  • fix(ci): harden CI/CD workflows with security fixes and reliability improvements by @Copilot in #222
  • fix(ci): move PR report to workflow_run for fork PR support by @magyargergo in #225
  • fix: skip unavailable native Swift parsers in sequential ingestion by @Gujiassh in #188
  • fix: consolidate C/C++/C#/Rust language support from 6 overlapping PRs by @magyargergo in #237
  • feat(models): add DeepSeek model configurations by @JasonOA888 in #217
  • FEAT: Added support for optional skill generation based on KuzuDB after initial repo analysis (npx gitnexus analyze --skills) by @zander-raycraft in #171
  • feat: language-aware code intelligence — symbol resolution, MRO, constructor discrimination by @magyargergo in #238
  • fix(cli): dynamically discover and install agent skills by @cnighut in #270
  • feat(ruby): Add Ruby language support for CLI and web by @candidosales in #111
  • fix(ruby): method-level call resolution, HAS_METHOD edges, and dispatch table by @magyargergo in #278
  • feat: TypeEnvironment API with constructor inference, self/this/super resolution by @magyargergo in #274
  • refactor: migrate from KuzuDB to LadybugDB v0.15 by @candidosales in #275
  • feat: return type inference, doc-comment parsing, and per-language type extractors by @magyargergo in #284
  • feat(ingestion): respect .gitignore and .gitnexusignore during file discovery by @ivkond in #231
  • feat: Phase 4 type resolution — nullable unwrapping, for-loop typing, assignment chains, code review fixes by @magyargergo in #310
  • feat: Phase 5 type resolution — chained calls, pattern matching, class-as-receiver by @magyargergo in #315
  • docs: add Codex MCP configuration to README by @ZakAnun in #236
  • fix(resolver): fix for same-directory python imports by @cnighut in #328
  • feat: Phase 6 type resolution — for-loop Tier 1c, pattern matching, container descriptors, 10-language coverage by @magyargergo in #318
  • fix: add postinstall permission fix for CLI and hook scripts (#330) by @ShunsukeHayashi in #348
  • fix(impact): add HAS_METHOD and OVERRIDES to VALID_RELATION_TYPES by @karesansui-u in #350
  • fix(cli): write tool output to stdout via fd 1 instead of stderr (#324) by @ShunsukeHayashi in #346
  • fix(impact): return structured error + partial results instead of crashing (#321) by @ShunsukeHayashi in #345
  • feat: Phase 7 type resolution — return-aware loop inference & PHP class-property iterables by @magyargergo in #341
  • fix: MCP server crashes under parallel tool calls (#326) by @RyuzakiH in #349
  • fix: add Python enumerate() for-loop support with nested tuple patterns by @cnighut in #356
  • Fix undefined parsing error on languages missing from call routers by @demirciberk in #364
  • feat: Phase 8 field/property type resolution by @magyargergo in #354
  • feat: ACCESSES edge type with read/write field access tracking by @magyargergo in #372
  • feat: upgrade @ladybugdb/core to 0.15.2 and remove segfault workarounds by @abhigyanpatwari in #374
  • feat: Phase 9 — Return-type-aware variable binding with unified fixpoint chain propagation by @magyargergo in #379
  • feat(type-resolution): Milestone D — Phases A, B, C + Kotlin fix + 11-language integration tests by @magyargergo in #387
  • FIX - Claude review fork 403 for PR reviews by @zander-raycraft in #388
  • CI sticky notes by @zander-raycraft in #391
  • SEC/ spam guards for the PR and issue claude-review workflow for contributions by @zander-raycraft in #394
  • feat(type-resolution): polymorphism and method overloading support by @magyargergo in #392
  • fix: sequential enrichment queries + stale data detection (#285, #290, #292, #297) by @hiromima in #396
  • feat: add MiniMax provider support by @ximiximi423 in #224
  • feat(cli): add Codex MCP + skills support to setup by @x0m4ek in #69
  • feat: add markdown file indexing (headings + cross-links) by @abhigyanpatwari in #399
  • fix: register Section in NODE_TABLES and NODE_SCHEMA_QUERIES by @abhigyanpatwari in #401
  • fix: hydrate worker DB in server mode + fix LadybugDB getAll API mismatch by @fabianhug in #404
  • feat(type-resolution): cross-file binding propagation by @magyargergo in #397
  • refactor: unify language dispatch with compile-time exhaustive tables by @magyargergo in #409
  • fix: prevent native crash when CUDA libs present but ORT lacks provider by @jim80net in #300
  • docs(schema): add Community and Process node properties to cypher tool description (#411) by @ShunsukeHayashi in #428
  • fix(analyze): allow indexing folders without a .git directory (#384) by @ShunsukeHayashi in #426
  • fix(server): allow private/LAN network origins in CORS (#390) by @ShunsukeHayashi in #424
  • fix(lbug): retry withLbugDb on BUSY/lock error from external process (#325) by @ShunsukeHayashi in #425
  • fix(impact): use per-relation-type confidence floor instead of fixed 1.0 (#412) by @ShunsukeHayashi in #427
  • update method for labeling prs by @zander-raycraft in #464
  • Fix gitnexus-web server-mode repo switching and query readiness by @JayceeB1 in #400
  • feat(ui): ship HelpPanel — because great tools don't make you google how to use them by @che3zcake in #465
  • fix(python): resolve module-qualified constructor calls — 0 CALLS edges (Issue #337) by @ShunsukeHayashi in #463
  • fix(web): LadybugDB getAllRows, loadServerGraph, BM25, highlight clearing by @jreakin in #474
  • fix(ingestion): resolve Python import-alias CALLS edges by @ShunsukeHayashi in #461
  • fix(web): Cypher injection guards, DOMPurify SVG, readOnly executeQuery by @jreakin in #475
  • fix(web): resolve Vercel build errors from security hardening PR by @abhigyanpatwari in #483
  • fix(web): 18 multi-language CSV tables, RFC 4180, schema sync by @jreakin in #476
  • perf(web): O(1) lookups, memoization, bundle optimizations, React fixes by @jreakin in #477
  • feat: deep flow detection — consumer access tracking, middleware chains, error shapes, api_impact tool by @marxo126 in #482
  • Updating claude mcp init for window and adding OS detection when installing by @zander-raycraft in #490
  • fix(ui): use actual repository name instead of top-level folder for GitHub clones by @che3zcake in #491
  • feat(web): add GLM (Z.AI) as LLM provider by @huyphung1602 in #468
  • ci: E2E workflow, web typecheck job, pre-commit hook, test suite by @jreakin in #486
  • refactor: SICP-informed LanguageProvider architecture by @magyargergo in #488
  • fix(#480): resolve impact/context returning empty results for Java cl… by @Yashgarg2928 in #489
  • docs: agent development framework, GitHub templates, eval refactor by @jreakin in #479
  • feat: PHP response shape extraction for json_encode patterns by @marxo126 in #502
  • feat: add Expo Router file-based route detection by @marxo126 in #503
  • feat(wiki): add Cursor CLI as LLM provider option by @cnighut in #381
  • chore: upgrade tree-sitter to 0.25.0 by @mrwogu in #516
  • feat(routes): link Next.js project-level middleware.ts to routes by @marxo126 in #504
  • fix(python): resolve two remaining alias gaps (#417) by @jelsco in #505
  • fix: shape_check false positives — quoted keys, DOM leaks, errorKeys by @marxo126 in #501
  • fix(ci): move shape-check-regression test to lbug-db project by @magyargergo in #518
  • feat: add more node types in filter panel by @cnighut in #519
  • feat: add Dart language support by @mrwogu in #204
  • feat: add ORM dataflow detection (Prisma + Supabase) by @marxo126 in #511
  • [CLI] Fixes a false-positive in the Cypher write-detection regex and improves the Impact tool's enrichment path by using batched chunking and entry-point grouping (#496) by @ThinhKVT in #507
  • docs: add Dart to supported languages in README by @xFlaviews in #525
  • refactor: split global BUILT_IN_NAMES into per-language provider fields by @mrwogu in #523
  • fix: close remaining Dart language support gaps by @xFlaviews in #524
  • feat: add COBOL language support with regex extraction pipeline by @magyargergo in #498
  • refactor: Phase 8 & 9 - Field Types and Return-Type Binding by @oleg-deezus in #494
  • fix: resolve tree-sitter peer dependency conflicts breaking MCP server install via npx by @Copilot in #538
  • fix/opencode mcp gitnexus timeout by @juampymdd in #363
  • feat: unify web and cli ingestion pipeline by @magyargergo in #536
  • feat: configure prettier with pre-commit hook by @magyargergo in #563
  • feat: configure eslint with unused import removal by @magyargergo in #564
  • feat(java): method references, worker overload disambiguation, interface dispatch by @cnighut in #540
  • refactor: reduce explicit any types by @magyargergo in #566
  • feat(wiki): Azure OpenAI support for wiki command by @abhigyanpatwari in #562
  • feat: added skip-agents-md cli flag by @gjcampbell in #517
  • feat(java,kotlin): MethodExtractor abstraction with per-language configs by @magyargergo in #576
  • fix(eval): exclude litellm 1.82.7 and 1.82.8 due to compatibility issues by @Cenrax in #580
  • chore: add enterprise offering section to README, ignore local_docs/ by @Cenrax in #579
  • docs: add gitnexus-shared build step before gitnexus-web by @agungwa in #585
  • feat(csharp): C# MethodExtractor config by @magyargergo in #582
  • feat(web): add repo landing screen with selectable repo cards by @abhigyanpatwari in #607
  • chore: release v1.5.0 by @abhigyanpatwari in #611
  • fix: bundle gitnexus-shared into CLI dist by @abhigyanpatwari in #613
  • feat(ts,js): TypeScript/JavaScript MethodExtractor config by @magyargergo in #588
  • fix(wiki): Azure OpenAI compat and HTML viewer script injection by @abhigyanpatwari in #618
  • feat(cpp): C/C++ MethodExtractor config with pure virtual detection by @magyargergo in #617
  • Java method reference by @cnighut in #622
  • feat(vue): Vue SFC support + destructured call result tracking by @son-nguyen-301 in #604
  • [group] Intra-repo service communication tracking by @ivkond in #626
  • feat: MethodExtractor configs for Python, PHP, Swift, Dart, Rust, Ruby by @magyargergo in #624
  • fix(web): scope all backend calls to the active repo, not always the first by @abhigyanpatwari in #644
  • fix(web): replace aggressive heartbeat disconnect with graceful reconnection by @abhigyanpatwari in #643
  • fix(mcp): unify stdout silencing to prevent embedder/pool-adapter conflicts by @abhigyanpatwari in #645
  • feat: METHOD_IMPLEMENTS edges, overload disambiguation, MethodExtractor unification (#574) by @magyargergo in #642
  • feat: same-arity overload disambiguation via type-hash suffix (#651) by @magyargergo in #658
  • fix: replace Array.push(...spread) with loop to prevent stack overflow by @tantk in #650
  • fix(server): return clean CORS rejection instead of 500 error by @abhigyanpatwari in #646
  • fix(setup): prefer global gitnexus binary over npx for MCP config by @abhigyanpatwari in #653
  • fix(ignore): respect negation patterns in .gitnexusignore by @ivkond in #654
  • feat: lookupMethodByOwner index for O(1) cross-class chain resolution by @magyargergo in #665
  • fix(docs): fix codex duplicate typo in main readme file by @x0m4ek in #687
  • scarf by @zander-raycraft in #688
  • refactor: extract CLASS_LIKE_TYPES constant by @tushardhawas in #693
  • [cli] Add lookupClassByName index to SymbolTable by @ideepakchauhan7 in #707
  • [cli] Add qualified class lookups to SymbolTable by @ideepakchauhan7 in #716
  • fix(symbol-table): index constructors in methodByOwner by @txhno in #694
  • [cli] Add fuzzy lookup counters by @kunalhemnani1 in #708
  • [cli] Replace class-type fuzzy lookups in type-env.ts by @ShiningXu in #733
  • [cli] Replace Phase P class checks with class lookup index by @ShiningXu in #734
  • [cli] Replace owner-filtered method lookups in type-env by @ShiningXu in #736
  • feat(SM-8): Build HeritageMap from accumulated ExtractedHeritage[] by @Copilot in #739
  • feat(SM-9): Add lookupMethodByOwnerWithMRO using HeritageMap by @Copilot in #740
  • SM-10: Add MRO fast path before D2 fuzzy widening in resolveCallTarget by @Copilot in #741
  • fix(web): correct dev-mode serve command in OnboardingGuide by @pratyush618 in #725
  • docs: fix web UI install link spacing in README by @kuishou68 in #731
  • feat: support GITNEXUS_HOME env var to customize global directory by @evander-wang in #746
  • feat: print skipped large file paths in verbose analyze output by @muratclk in #745
  • fix(deps): pin tree-sitter-c override to resolve npx peer dep conflict by @pratyush618 in #723
  • test(symbol-table): add integration coverage for constructor owner lookup by @txhno in #753
  • Extract resolveMemberCall from resolveCallTarget (SM-11) by @Copilot in #744
  • fix(ingestion): replace lookupExact with lookupExactAll in named-bind… by @kunalhemnani1 in #755
  • feat(SM-12): Extract resolveStaticCall from resolveCallTarget by @Copilot in #754
  • [codex] fix large repository graph loading by @JaysonAlbert in #732
  • Extract resolveFreeCall from resolveCallTarget (SM-13) by @Copilot in #756
  • feat(sm-14): add BindingAccumulator — collect TypeEnv outputs across files by @abhigyanpatwari in #743
  • Fix security issues and critical bugs found in code review by @Gahrcoder in #709
  • feat(SM-15): Wire BindingAccumulator into processCallsFromExtracted for cross-file return type propagation by @Copilot in #763
  • feat(SM-16): Restructure resolveUncached — replace lookupFuzzy data source for all tiers by @Copilot in #764
  • feat(SM-18): Delete lookupFuzzy, lookupFuzzyCallable, globalIndex, callableIndex by @Copilot in #769
  • fix: resolve false 404 errors and stale repo context during multi-repo switching on Windows by @Yogesh1290 in #633
  • Fix OpenCode config path, FTS extension load order, error messages, and CLAUDE.md stats by @Gahrcoder in #781
  • SM-19: Delete resolveCallTarget — replace with thin dispatcher by @Copilot in #770
  • Fix HTTP client vs Express route detection and Spring interface attribution by @Gahrcoder in #780
  • fix: map diff hunks to symbol line ranges in detect_changes by @Gahrcoder in #779
  • fix: load VECTOR extension during DB init for semantic search by @Gahrcoder in #782
  • Fix stack overflow on large PHP files — iterative AST traversal by @jwwd-repos in #783
  • fix(csharp): capture interface-to-interface heritage by @Prota100 in #789
  • fix: restore tree-sitter-swift postinstall patch for macOS ARM64 by @dave in #788
  • feat(group): bridge.lbug storage + contract matching expansion (1/4 of #606 split) by @ivkond in #795
  • Extract registries into model/ module with SemanticModel interface by @Copilot in #786
  • chore: release v1.6.0 by @magyargergo in #798
  • feat(group): extractor expansion + manifest extractor (2/4 of #606 split) by @ivkond in #796
  • fix: resolve generic TypeScript awaited function calls missing from call graph by @Copilot in #804
  • fix: remove file:../gitnexus-shared from runtime dependencies by @Copilot in #803
  • [dart] Add call patterns for await, cascade, lambda, and widget-tree contexts by @Arkh74278 in #801
  • [cli] Preserve Ruby singleton_class context in sequential parsing by @ideepakchauhan7 in #774
  • fix: replace tree-sitter-dart git URL with tarball to fix npm install crash by @Copilot in #811
  • fix: prevent stack overflow and memory exhaustion on large repo analysis by @Copilot in #814
  • refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider by @Copilot in #809
  • chore: release v1.6.1 by @magyargergo in #815
  • feat(web): add smart chat scroll by @noCharger in #767
  • fix(extractors): resolve 3 silent contract mis-resolution bugs (#793) by @magyargergo in #817
  • Fix npm arborist crash caused by tree-sitter-dart tarball URL format by @Copilot in #820
  • fix: resolve C/C++ cross-file calls through transitive #include chains by @fcostaoliveira in #816
  • fix: prevent drain listener leak in relationship CSV streaming by @MekayelAnik in #818
  • feat(ci): add release-candidate publish pipeline by @magyargergo in #825
  • fix(embeddings): prevent batch errors from CodeEmbedding PK violations and vector-index SET restriction by @jonasvanderhaegen-xve in #823
  • fix(lbug): wait for read stream close in splitRelCsvByLabelPair (Windows ENOTEMPTY) by @magyargergo in #832
  • [group/sync] Fix ManifestExtractor never called — config.links always produced 0 cross-links by @jonasvanderhaegen-xve in #827
  • fix(deps): pin tree-sitter-c-sharp to 0.23.1 by @Copilot in #834
  • fix: content-hash staleness detection for embeddings and vector index creation on zero-node path by @Copilot in #831
  • ci: standardize workflow concurrency and automate release-note labeling by @magyargergo in #837
  • docs: optimize context files for LLM accuracy and token efficiency by @magyargergo in #857
  • refactor(ingestion): move class extraction configs to configs/ subdirectory by @Copilot in #879
  • feat(ingestion): language-agnostic call extractor with config+factory pattern by @Copilot in #877
  • feat(ingestion): language-agnostic variable extractor with config+factory pattern by @Copilot in #878
  • refactor(SM-20): wire SemanticModel as first-class resolution input by @Copilot in #885
  • feat(extractors): detect jQuery $.ajax/$.get/$.post and axios object-form as HTTP consumers by @azizur100389 in #887
  • refactor(ingestion): split ImportSemantics into per-strategy hooks (Strategies 1-4) by @Copilot in #886
  • feat(embeddings): AST-aware chunking with offset-based splitting by @evander-wang in #889
  • fix: keep worker warnings non-terminal by @Gujiassh in #261
  • fix(python): avoid local matches for external dotted imports by @yacinehmito in #899
  • feat(ingestion): language-agnostic heritage extractor with config+factory pattern by @Copilot in #890
  • refactor(cli): trim duplicated ai-context CLAUDE.md block by @azizur100389 in #904
  • test(web-e2e): raise status-ready timeout to 45s for parallel-worker stability by @Copilot in #908
  • fix: keep worker warnings non-terminal by @Gujiassh in #900
  • chore(release): v1.6.2 by @magyargergo in #952
  • feat(mcp): rank context/impact disambiguation candidates and expose kind/file_path hints by @azizur100389 in #888
  • fix(test): isolate cli-e2e from shared mini-repo fixture by @magyargergo in #954
  • feat(shared): add scope-resolution types + constants (#910, RFC #909 Ring 1) by @magyargergo in #949
  • feat(shared,ingestion): extend LanguageProvider with scope-resolution hooks (#911, RFC #909 Ring 1) by @magyargergo in #950
  • scaffold(shared): shadow diff + aggregate skeletons (#918, RFC #909 Ring 2 SHARED) by @magyargergo in #951
  • fix: ENOBUFS in detect_changes by setting maxBuffer on git/rg execFileSync by @Copilot in #957
  • feat(shared): DefIndex / ModuleScopeIndex / QualifiedNameIndex (#913, RFC #909 Ring 2 SHARED) by @magyargergo in #958
  • feat(shared): resolveTypeRef strict type resolver (#916, RFC #909 Ring 2 SHARED) by @magyargergo in #959
  • feat(shared): MethodDispatchIndex materialized view over HeritageMap (#914, RFC #909 Ring 2 SHARED) by @magyargergo in #960
  • feat(search): per-phase timing instrumentation for the query pipeline by @azizur100389 in #953
  • feat(shared): ScopeTree + PositionIndex + makeScopeId (#912, RFC #909 Ring 2 SHARED) by @magyargergo in #961
  • feat(shared): SCC-aware finalize algorithm with bounded fixpoint (#915, RFC #909 Ring 2 SHARED) by @magyargergo in #962
  • feat(shared): ClassRegistry / MethodRegistry / FieldRegistry + 7-step lookup (#917, RFC #909 Ring 2 SHARED) by @magyargergo in #963
  • chore(shared): apply Ring 2 SHARED review follow-ups in one diff by @magyargergo in #964
  • feat(ingestion): ScopeExtractor driver — 5-pass CaptureMatch → ParsedFile (#919, RFC #909 Ring 2 PKG) by @magyargergo in #965
  • feat(ingestion): REGISTRY_PRIMARY_ per-language flag reader (#924, RFC #909 Ring 2 PKG) by @magyargergo in #968
  • feat(ingestion): wire ScopeExtractor into parse-worker + processor (#920, RFC #909 Ring 2 PKG) by @magyargergo in #969
  • feat(ingestion): finalize-orchestrator materializes ScopeResolutionIndexes (#921, RFC #909 Ring 2 PKG) by @magyargergo in #970
  • feat(docker): ship signed UI + CLI/server images via docker-compose by @Copilot in #967
  • feat(ingestion): per-language resolveImportTarget adapter (#922, RFC #909 Ring 2 PKG) by @magyargergo in #971
  • feat(ingestion): shadow-mode parity harness + static dashboard (#923, RFC #909 Ring 2 PKG) by @magyargergo in #972
  • feat(ingestion): emit-references drains ReferenceIndex to graph edges (#925, RFC #909 Ring 2 PKG) by @magyargergo in #973
  • fix: detect React component paths before lowercasing by @Gujiassh in #260
  • feat(cli): analyze --name + duplicate-name guard for the repo registry by @azizur100389 in #955
  • fix(docker): build and push Docker images for Release Candidates by @Copilot in #978
  • feat(cli): infer registry name from git remote.origin.url by @Copilot in #981
  • fix: guard RC docker job against empty vtag and add early validation in docker.yml by @Copilot in #983
  • feat(embeddings): structural chunking with data-driven CHUNKING_RULES dispatch by @evander-wang in #987
  • docs: include --skip-git in README command list by @Bortlesboat in #750
  • feat: cross-repo impact analysis (#794) — @repo MCP routing + group resources by @ivkond in #984
  • fix(embeddings): replace recursive AST traversal with iterative DFS by @xiaohaoxing in #990
  • fix(bm25): return FTS-matched symbols instead of arbitrary LIMIT 3 nodes by @jisue0224 in #806
  • fix: expose detect-changes in direct CLI by @sam-fakhreddine in #892
  • feat(extractors): add PHP HTTP consumer detection (Http::, Guzzle, file_get_contents) by @jonasvanderhaegen-xve in #993
  • fix(docker): use inputs.tag to detect workflow_call context by @evander-wang in #996
  • fix(docker): copy gitnexus/package.json into web builder stage by @evander-wang in #997
  • docs(group): add gRPC microservices group guide (#906) by @ivkond in #994
  • fix(fts): Don't cache failed FTS index ensure; invalidate on pool teardown by @Copilot in #1006
  • fix(group): bubble local-impact phase errors in groupImpact (#1004) by @ivkond in #1007
  • feat(cli): gitnexus remove to unindex a registered repo by name or path (#664) by @azizur100389 in #1003
  • feat(python): scope-based call resolution + registry-primary flip + perf + generalization (RFC #909 Ring 3) by @Copilot in #980
  • fix(group): surface friendly error when group name not found (#903 regression test) by @sam-fakhreddine in #989
  • fix(ci): Change docker base image from alpine to debian by @evander-wang in #1014
  • feat(cli): Fingerprint indexed repos by remote URL to detect sibling-clone graph drift by @Copilot in #982
  • docs: fix group add and group remove usage in READMEs by @risky2k1 in #1020
  • fix: preserve comments and config in opencode.json during setup by @HaleTom in #998
  • fix(cli): only match markers at section position (#1041) by @azizur100389 in #1042
  • docs: add DoD.md repo-wide Definition of Done by @magyargergo in #1032
  • fix: issue 986 go does not generate "calls" relationship on reciver functions by @evander-wang in #1043
  • fix(ingestion): Log skipped sequential parser languages by @Gujiassh in #1021
  • feat(ingestion): make large-file skip threshold configurable by @sonutessell in #1044
  • docs(ingestion): document configurable large-file skip threshold (#991) by @sonutessell in #1045
  • feat(csharp): migrate C# to registry-primary scope-resolution (Closes #934) by @magyargergo in #1019
  • feat(ingestion): GITNEXUS_INDEX_TEST_DIRS opt-in for tests / mocks (#771) by @azizur100389 in #1046
  • fix(deps): silence Node 22 DEP0151 warning from tree-sitter-c-sharp import (#1013) by @azizur100389 in #1049
  • ci(docker): mirror signed images to Docker Hub alongside GHCR by @magyargergo in #1029
  • test(gitnexus): stabilize rel-csv-split stream teardown on Windows (expect.poll) by @magyargergo in #1052
  • fix(ci): pass secrets to reusable docker job (RC Docker Hub login) by @magyargergo in #1054
  • fix(fts): try local LOAD before INSTALL to avoid network failures by @pratyush618 in #726
  • refactor(setup): migrate all config I/O to mergeJsoncFile by @HaleTom in #1031
  • feat(analyze): preserve existing embeddings by default; --force regenerates them; add --drop-embeddings opt-out (CLI + HTTP API) by @Copilot in #1055
  • chore(web): bump vite 5.4.21 -> 6.4.2 (iter 1 of 3) by @magyargergo in #1061
  • chore(web): bump vite 6.4.2 -> 7.3.2 (iter 2 of 3) by @magyargergo in #1062
  • chore(web): bump vite 7.3.2 -> 8.0.10 + vitest 4 (iter 3 of 3) by @magyargergo in #1063
  • chore: release v1.6.3 by @magyargergo in #1064
  • fix(ci): skip docker.yml tag-input validation on direct tag pushes by @magyargergo in #1065
  • docs: clarify PostToolUse hook is notification-only, not auto-reindex by @jarvisai1909 in #1070
  • fix: use os.homedir() instead of process.env.HOME for HuggingFace cache dir by @chouzz in #1078
  • feat(ingestion): TypeScript registry-primary scope resolution (Ring 3) by @magyargergo in #1050
  • fix(ingestion): two-channel binding lifecycle (closes #1066) + scope-resolution I8 hardening by @magyargergo in #1082
  • test(csharp): companion fixture for #1066 frozen-bucket regression by @mann1x in #1085
  • fix(ci): allow expected legacy parity failures by @magyargergo in #1099
  • fix(ingestion): skip empty scope extraction by @magyargergo in #1100
  • fix(ingestion): classify Python class methods as Method by @magyargergo in #1102
  • fix(search): create FTS indexes during analyze by @magyargergo in #1107
  • test(ignore-service): skip EACCES test under uid=0 (root bypasses chmod) by @mann1x in #1108
  • fix(scope-resolution): allow same-range Module-as-parent for top-level scopes (closes #1086) by @mann1x in #1087
  • fix(scope-resolution): avoid variadic reference site aggregation by @magyargergo in #1112
  • fix(serve): serve web UI at root path instead of 404 by @HaleTom in #1048
  • docs: update README.md by @eltociear in #1115
  • fix: correct OpenCode skills directory path (skill → skills) by @Hamzaa6296 in #1104
  • fix(mcp): project tool_map flows from handlers by @magyargergo in #1113
  • fix: start MCP bridge correctly when using npx by @genoshide in #1114
  • fix(search): load FTS during core DB init by @magyargergo in #1123
  • fix: recover worker parse stalls by @magyargergo in #1121
  • fix(install): vendor tree-sitter-dart source by @magyargergo in #1125
  • Fix typo: capitalize Goliath in README by @b2pacific in #1126
  • fix(lbug): prevent DuckDB extension install hangs by @magyargergo in #1129
  • fix(group): add configurable cross-link path exclusions to reduce false positives by @darianstlex in #1093
  • fix(hooks): ignore global registry during staleness checks by @LaplaceYoung in #1141
  • fix(swift): use official prebuilt parser runtime by @magyargergo in #1130
  • fix: add platform-aware semantic fallback by @magyargergo in #1150
  • docs(readme): fix misleading Web UI section by @abhigyanpatwari in #1159
  • fix(docker): use HEAD probe so SSE heartbeat doesn't time out healthcheck by @R09722akaBennett in #1182
  • Revert "chore(deps)(deps): bump uuid from 13.0.0 to 14.0.0 in /gitnexus-web" by @magyargergo in #1222
  • fix(local-backend): #1178 skip vector index query on unsupported pla… by @Morieity in #1181
  • fix(typescript): capture missed CALLS edges from HOF callbacks and JSX by @ReidenXerx in #1175
  • fix(deps): upgrade @ladybugdb/core to 0.16.0 to resolve native segfaults by @magyargergo in #1235
  • fix(hook): resolve canonical repo root + guard read-only FTS ensure by @sburdges-eng in #1226
  • fix(ingestion): index Python repos with empty init.py and >32 KB files by @vijaygali in #1163
  • fix(cli): surface silent finalize-skips so analyze cannot exit 0 without persisting (#1169) by @magyargergo in #1237
  • fix(deps): pin tree-sitter-c/cpp to fix Windows segfault (#1242) by @magyargergo in #1243
  • fix(cli): --skip-git treats cwd as index root instead of walking up to parent git repo by @Copilot in #1245
  • fix(ci): seed e2e with a small fixture repo by @magyargergo in #1249
  • Revert "Revert "chore(deps)(deps): bump uuid from 13.0.0 to 14.0.0 in /gitnexus-web"" by @magyargergo in #1250
  • fix(python): walk ancestors for multi-segment dotted imports by @jelsco in #1241
  • fix(group): contract extractors honour .gitnexusignore via shared IgnoreService (#1185) by @azizur100389 in #1247
  • fix(cli): keep GitNexus ignores inside .gitnexus by @magyargergo in #1248
  • fix(ci): consolidate Claude review workflow by @magyargergo in #1258
  • fix(python): make multi-segment suffix fallback deterministic by @jelsco in #1253
  • fix(group): resolve custom manifest links against graph symbols by @ChrisGVE in #1254
  • feat(group): auto-discover Rust workspace cross-crate contracts by @ChrisGVE in #1256
  • fix(embeddings): bridge HF_ENDPOINT env var to transformers.js env.remoteHost (#1205) by @azizur100389 in #1252
  • feat(mcp): add tool safety annotations by @stemirkhan in #1127
  • fix(mcp): avoid git from non-repo cwd in sibling cwd match (#1138) by @magyargergo in #1293
  • refactor(ingestion): consolidate per-language patterns into LanguageProvider by @ChrisGVE in #1279
  • fix(typescript): name HOC-wrapped const declarations (forwardRef / memo / useCallback / useMemo / observer) by @ReidenXerx in #1261
  • feat(go): implement scope resolution hooks for Go language support by @evander-wang in #1302
  • fix(security): block IPv4-compatible IPv6 and NAT64 SSRF bypasses in validateGitUrl by @aaronjmars in #1148
  • ci(security): add automated security and vulnerability scans by @magyargergo in #1297
  • fix(setup): prefer .cmd/.bat wrapper from Windows where output by @Copilot in #1299
  • chore(quality): exclude test/fixtures from CodeQL, ESLint, and Prettier by @magyargergo in #1313
  • feat(group): workspace extractors for Node, Python, Go, Java, Elixir by @ChrisGVE in #1260
  • perf(mro): replace O(n³) C3 merge loop with O(n²) head-pointer algorithm by @ChrisGVE in #1316
  • fix(server): close critical type-confusion + add validation helper module by @magyargergo in #1317

New Contributors

  • @paulrobello made their first contribution in #49
  • @L1nusB made their first contribution in #68
  • @CrazyBunQnQ made their first contribution in #75
  • @gunesbizim made their first contribution in #64
  • @BlockSecCA made their first contribution in #58
  • @baconwasr1ght made their first contribution in #66
  • @strazzere made their first contribution in #61
  • @PurpleNewNew made their first contribution in #102
  • @christopheralex-cc made their first contribution in #105
  • @jandyx made their first contribution in #94
  • @magyargergo made their first contribution in #84
  • @Shockang made their first contribution in #207
  • @Copilot made their first contribution in #222
  • @Gujiassh made their first contribution in #188
  • @JasonOA888 made their first contribution in #217
  • @zander-raycraft made their first contribution in #171
  • @cnighut made their first contribution in #270
  • @candidosales made their first contribution in #111
  • @ivkond made their first contribution in #231
  • @ZakAnun made their first contribution in #236
  • @ShunsukeHayashi made their first contribution in #348
  • @karesansui-u made their first contribution in #350
  • @RyuzakiH made their first contribution in #349
  • @demirciberk made their first contribution in #364
  • @hiromima made their first contribution in #396
  • @ximiximi423 made their first contribution in #224
  • @x0m4ek made their first contribution in #69
  • @fabianhug made their first contribution in #404
  • @jim80net made their first contribution in #300
  • @JayceeB1 made their first contribution in #400
  • @che3zcake made their first contribution in #465
  • @zm2231 made their first contribution in #395
  • @jreakin made their first contribution in #474
  • @marxo126 made their first contribution in #408
  • @huyphung1602 made their first contribution in #468
  • @Yashgarg2928 made their first contribution in #489
  • @mrwogu made their first contribution in #516
  • @adonisdoda made their first contribution in #402
  • @jelsco made their first contribution in #505
  • @ThinhKVT made their first contribution in #507
  • @xFlaviews made their first contribution in #525
  • @oleg-deezus made their first contribution in #494
  • @juampymdd made their first contribution in #363
  • @gjcampbell made their first contribution in #517
  • @agungwa made their first contribution in #585
  • @son-nguyen-301 made their first contribution in #604
  • @tantk made their first contribution in #650
  • @tushardhawas made their first contribution in #693
  • @ideepakchauhan7 made their first contribution in #707
  • @txhno made their first contribution in #694
  • @kunalhemnani1 made their first contribution in #708
  • @ShiningXu made their first contribution in #733
  • @pratyush618 made their first contribution in #725
  • @kuishou68 made their first contribution in #731
  • @muratclk made their first contribution in #745
  • @JaysonAlbert made their first contribution in #732
  • @Gahrcoder made their first contribution in #709
  • @Yogesh1290 made their first contribution in #633
  • @jwwd-repos made their first contribution in #783
  • @Prota100 made their first contribution in #789
  • @dave made their first contribution in #788
  • @Arkh74278 made their first contribution in #801
  • @noCharger made their first contribution in #767
  • @fcostaoliveira made their first contribution in #816
  • @MekayelAnik made their first contribution in #818
  • @jonasvanderhaegen-xve made their first contribution in #823
  • @dependabot[bot] made their first contribution in https://github.com/abhigyanpatwari/GitNexus/pull/840
  • @enihcam made their first contribution in #845
  • @azizur100389 made their first contribution in #887
  • @yacinehmito made their first contribution in #899
  • @BRAINIFII made their first contribution in #848
  • @Bortlesboat made their first contribution in #750
  • @xiaohaoxing made their first contribution in #990
  • @jisue0224 made their first contribution in #806
  • @sam-fakhreddine made their first contribution in #892
  • @risky2k1 made their first contribution in #1020
  • @HaleTom made their first contribution in #998
  • @sonutessell made their first contribution in #1044
  • @jarvisai1909 made their first contribution in #1070
  • @chouzz made their first contribution in #1078
  • @mann1x made their first contribution in #1085
  • @eltociear made their first contribution in #1115
  • @Hamzaa6296 made their first contribution in #1104
  • @genoshide made their first contribution in #1114
  • @b2pacific made their first contribution in #1126
  • @darianstlex made their first contribution in #1093
  • @LaplaceYoung made their first contribution in #1141
  • @R09722akaBennett made their first contribution in #1182
  • @Morieity made their first contribution in #1181
  • @ReidenXerx made their first contribution in #1175
  • @sburdges-eng made their first contribution in #1226
  • @vijaygali made their first contribution in #1163
  • @ChrisGVE made their first contribution in #1254
  • @stemirkhan made their first contribution in #1127
  • @aaronjmars made their first contribution in #1148

Full Changelog: https://github.com/abhigyanpatwari/GitNexus/commits/v1.6.4-rc.55

Don't miss a new GitNexus release

NewReleases is sending notifications on new releases.