Skip to content

chore: release 0.55.0 - #325

Merged
sunerpy merged 2 commits into
mainfrom
release-please--branches--main--components--codegraph-rs
Oct 21, 2026
Merged

sunerpy merged 2 commits into
mainfrom
release-please--branches--main--components--codegraph-rs

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

0.55.0 (2026-10-21)

Features

  • cli: report files needing reindex and files with parse errors (0796c8a)
  • core: detect minified scripts by content and keep their symbols file-local (0796c8a)
  • extract: C and C++ preParse round 2, brace-derived scopes and types in declarations (0796c8a)
  • extract: CFML container tags, cfinterface, cfscript-in-tag re-parse and cfquery (0796c8a)
  • extract: CommonJS requires import their files (0796c8a)
  • extract: emit instantiations for object creation and literal construction (0796c8a)
  • extract: fold Vue, Svelte and Astro scripts into the component's file node (0796c8a)
  • extract: Go type aliases, defined types and standalone doc comments (0796c8a)
  • extract: Kotlin infix calls, Lombok members, Java enum bodies and C# accessor bodies (0796c8a)
  • extract: parse Flow-marked files as TSX with Flow syntax blanked (0796c8a)
  • extract: record class heritage for C#, Python, PHP, Objective-C, Go and Dart (0796c8a)
  • extract: same-file value references and static member reads (0796c8a)
  • extract: type-annotation references for Rust, Go, Java, Kotlin, Scala, C#, Swift, Dart and PHP (0796c8a)
  • resolve: a call reaches the overload its arguments fit (0796c8a)
  • resolve: C++ alias receivers, base classes by name lookup and macro-opened namespaces (0796c8a)
  • resolve: Dart library visibility, import URIs, parts, getters, call chains and annotations (0796c8a)
  • resolve: JavaScript namespace re-exports, default aliases and destructured call results (0796c8a)
  • resolve: Python package re-exports, module members, pytest fixtures and Django managers (0796c8a)
  • resolve: Swift extensions and conformance, Go receiver types, Rust variant paths (0796c8a)
  • ui: Map collapses pass-through folders and opens on the whole repo (0796c8a)

Bug Fixes

  • daemon: answer proxied initialize and tools/list as the direct server does (0796c8a)
  • daemon: replace a daemon left by an older install (0796c8a)
  • dead-code: unresolved decorators and lifecycle hooks count (0796c8a)
  • deps: update quinn-proto to 0.11.19, rustls to 0.23.46 and self_update to 1.3.1 (0796c8a)
  • deps: update rustls-webpki to 0.103.16 and webpki-roots to 1.0.10 (0796c8a)
  • extract: Shopify JSON is Liquid only inside a theme; references stay in their theme (0796c8a)
  • extract: stop indexing phantom macro functions (0796c8a)
  • extract: store the sniffed language on the file row (0796c8a)
  • mcp: bound the startup sub-project scan (0796c8a)
  • mcp: serve MCP 2026-07-28 sessions at a too-broad root (0796c8a)
  • prompt-hook: skip a prompt that is entirely an agent message (0796c8a)
  • rank: judge non-production folders by the layout above src/ (0796c8a)
  • resolve: a C# call on an outside type reaches the project's extension method for it (0796c8a)
  • resolve: an imports reference binds the file it names, never its own import statement (0796c8a)
  • resolve: language rules for JavaScript, Python, Rust, Go, C/C++, JVM, C#, Swift, Objective-C, PHP, Ruby, Lua, R, Dart, CFML, Solidity and Erlang (0796c8a)
  • resolve: name matching stops for receivers no project type explains, test suites and out-of-scope bindings (0796c8a)
  • resolve: never offer import statements as name-match candidates (0796c8a)
  • scan: honor the repository's .git/info/exclude (0796c8a)
  • serve: keep a cold-start MCP session attached to the daemon it starts (0796c8a)
  • sync: JavaScript module surfaces and class supertypes converge with a full index (0796c8a)
  • sync: re-resolve dependents when tsconfig paths, package.json, C# project files, Cargo or pubspec manifests change (0796c8a)
  • sync: retry failed imports and qualified references when what they name appears (0796c8a)
  • ui: directed Flow finds its ends by exact names and prefers named routes (0796c8a)
  • ui: key viewer lists by id (0796c8a)
  • ui: move past a permission-denied viewer port (0796c8a)
  • watch: rescan the project when the watcher may have lost events (0796c8a)
  • windows: hide the console window of every git call (0796c8a)

Performance Improvements

  • cli: turn transparent huge pages off only for a full index (0796c8a)
  • extract: reuse one tree cursor per value-reference scan (0796c8a)
  • resolve: keep name resolution linear when a repository repeats a name many times (0796c8a)
  • resolve: keep only handles in the snapshot's node lists (0796c8a)
  • resolve: strip JavaScript comments without copying the text into characters (0796c8a)
  • store: keep resolved references so sync re-resolves dependents without re-extracting them (0796c8a)
  • store: stop memory-mapping the database during a full index (0796c8a)
  • sync: extract the dependent files of a sync in parallel (0796c8a)

This PR was generated with Release Please. See documentation.

@codecov

codecov Bot commented Oct 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #325      +/-   ##
==========================================
- Coverage   95.60%   95.60%   -0.01%     
==========================================
  Files         280      280              
  Lines      166327   166327              
==========================================
- Hits       159013   159012       -1     
- Misses       7314     7315       +1     

see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sunerpy sunerpy left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release 0.55.0: changelog generated from the #322 commit override; 67a9a9d rewords the Flow line only.

@sunerpy
sunerpy merged commit 5f96a74 into main Oct 21, 2026
18 of 20 checks passed
@sunerpy
sunerpy deleted the release-please--branches--main--components--codegraph-rs branch October 21, 2026 14:05
@github-actions

Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

sunerpy added a commit that referenced this pull request Oct 22, 2026
…329)

Record the v0.55.0 release: #322 merged as 0796c8a, release PR #325 as
5f96a74, the push event GitHub never delivered for that merge, #327's
dispatch path, Release run 39698634632, and the black-box acceptance of
the downloaded binaries against v0.54.0, with the 24-cell benchmark and
the older upgrade issue in default daemon mode.

Close the v1.6.1 -> v1.6.2 sync: the tracked release moves to v1.6.2 with
the owner's exceptions (COBOL, G16 and G17, OD-19, and the W7-W9 rows
planned for the follow-up pull request). The audit's LANDED rows now name
#322, and docs-check.py expects the new tracked release.
sunerpy added a commit that referenced this pull request Oct 22, 2026
…ng it (#330)

* fix(daemon): upgrade an outdated index before the daemon starts serving it

In the default daemon mode nothing upgraded an index an older extraction
version built. A cold `serve --mcp` session defers to its daemon, and the
daemon's startup gate admits only a current index, so every tool call
answered "outdated" until a manual `codegraph sync`. v0.55.0 moved the
extraction version from 21 to 22, so every v0.54.0 index hit this.

The daemon now upgrades the index before its startup gate, through a new
codegraph-watch entry, upgrade_outdated_index_once. Under one exclusive
lease it requires an outdated namespace whose authoritative slot records
the current phase, no uninitialized tombstone, and the database file, and
only then runs the migration `codegraph sync` runs. The state gate
classifies every phase an older version wrote as outdated, so without
these checks a daemon would rebuild the database an older
`uninit --force` removed. Anything else, and a failed upgrade, is left to
the unchanged gate, which refuses it as before.

* fix(test): give every plain_output project its own temporary directory

Two tests that started within one clock tick shared a directory, and the
first to finish deleted the other's project mid-run, as in the first CI
attempt of #325. The name now carries a process-wide sequence, and the
directory is created with create_dir, so a collision fails instead of
sharing.

* docs(cli): say what a daemon leaves when its upgrade fails partway

The upgrade runs the migration `codegraph sync` runs, which publishes
`phase=building` before it removes the old database, so a rebuild that
fails partway leaves the index `building`, as an interrupted `sync` does,
and the daemon refuses it. The upgrade section said only that a later
tool call succeeds.

* fix(daemon): stop a daemon whose upgrade fails before its startup gate

A failed upgrade is a failed migration, and a migration failure must stop.
The daemon logged the error and went on to its startup gate. The last step
of the rebuild publishes `Current`, and the publisher's directory sync can
still fail after that, so the gate could serve an index whose upgrade had
just reported an error. The daemon now refuses to start with that error,
before the gate, and publishes no pid or socket. A later daemon finds the
index as the failure left it, and the gate decides as before.

docs/cli.md now says what a failed rebuild can leave: the older index
untouched if it fails before it begins replacing it, `building` if it
fails later, as an interrupted `sync` does.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant