Repository navigation
Sync fork to upstream b9ca4b7 — the UI/Steps work, verified engine-neutral #13
Description
Why now
Not for a fix we need. Upstream has not tagged since v1.6.0, and the 60 commits
sitting on main are almost entirely new surface — the codegraph ui browser
viewer and the Steps/Screens route visualisations. We take them so those features
are available to us later, and so the next sync is a short hop rather than another
long one.
FORK.md's policy prefers a tagged base and allows an untagged commit as the
exception. This is that exception, so the base is the commit id — b9ca4b7
(main, 2026-08-31) — and nothing upstream has vetted it. The verification below
is ours.
What is in the 60 commits
| Theme | Roughly | What it is |
|---|---|---|
codegraph ui |
~25 commits | A local, read-only browser viewer (new Svelte 5 + Vite workspace): source with callers/callees in the margin, a repository map, a flow strip, dead code, type hierarchy, saved trails |
| Steps / Screens | ~25 commits | Route and screen visualisation for Expo Router, Next.js, React Router, TanStack, Vue Router, SvelteKit; endpoints for Express, NestJS, FastAPI, Django, Spring, ASP.NET, Gin; cross-tier channels |
| Docs / chore | the rest | Changelog, release prep |
The engine directories that changed are almost all additions: of the 28 files
touched under src/resolution, 16 are new framework synthesizers. The kernel
change is confined to tsjs/. src/db/schema.sql and src/db/migrations.ts are
untouched, which is what matters most for us — FM-Agent reads codegraph.db
directly.
Verification
Every calls edge compared between the current release build (1.6.0-fmagent.1)
and this base, keyed on call-site position (file, line, column) rather than on
names — a name-keyed comparison lies whenever a fix renames nodes.
| Corpus | Language | Call sites | Resolved differently |
|---|---|---|---|
| redis | C | 48,806 | 0 |
| leveldb | C++ | 5,661 | 0 |
| FM-Agent | Python | 1,059 | 0 |
| this repo | Rust | 3,574 | 0 |
| this repo | TypeScript | 23,784 | 0 |
| this repo | JavaScript | 1,158 | 0 |
| this repo | Svelte | 518 | 13 |
The thirteen are the entire drift and they are a fix: toast.show() used to
resolve to the receiver toast and now resolves to the method show (upstream's
object-literal namespace-member resolution — checked against the source). They are
in upstream's own .svelte files, a file type FM-Agent does not index.
The Svelte row is also what makes the zero rows worth trusting: it shows the
comparison detects change when there is change to detect.
Also run:
- Suite — 237 files, 4,229 passing. The only failures are
git-hooks.test.ts
(4), which fail on any machine with a globalcore.hooksPath; unrelated to this
base. - Regression benchmark, depth 1 — 4/4 on both the old and the new build.
- Release bundle —
darwin-arm64builds (56 MB, viewer and native kernel
included); extracted and re-indexed leveldb to exactly the same 5,720calls
edges as the working-tree build.
Two things this base adds to the fork's maintenance
1. The version marker now lives in two files. Upstream's new
ui-package.test.ts asserts ui/package.json matches the engine's
package.json, so bumping only the root turns the suite red. Recorded in
FORK.md.
2. Upstream changed how the test runner discovers tests — vitest.config.ts
renamed to .mts, and a new vitest.workspace.mts splits the suite into an
engine project and a ui one (the Svelte component test needs jsdom and browser
resolution conditions that must not reach the engine suites). This is exactly the
scenario FORK.md has been warning about: our workdir-exclusion regression test
could have stopped being collected without anything going red. It is still
collected — verified by running it, not by reading the config. The check to repeat
after a future sync is now written down in FORK.md.
For the release notes
EXTRACTION_VERSION goes 25 → 26, so every project gets one forced full re-index
after upgrading.
Activity
Dshuishui commentedon Sep 28, 2026
Superseded: #14 was closed in favour of #17, and #17 in favour of #18, which moves the base on to upstream
e63fe2e(2026-09-27).