Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
830 commits
Select commit Hold shift + click to select a range
48b1a19
fix(vapor): bind a route to the handler on the type it names (#2106)
colbymchenry Sep 29, 2026
5753de2
fix(swift): an extension is not the type it extends (#2107)
colbymchenry Sep 29, 2026
e9be68b
fix(swift): a composition continued on `&` lines no longer swallows i…
colbymchenry Sep 29, 2026
7639c78
fix(swift): what a SwiftUI app's viewer showed that was not so (#2109)
colbymchenry Sep 29, 2026
761611c
feat(angular): routes, navigation and the component tree for Angular …
colbymchenry Sep 30, 2026
c3efbbf
feat(angular): a template's event bindings call the component's metho…
colbymchenry Sep 30, 2026
e845b1c
fix(nestjs): routes carry the app's global prefix and URI version (#2…
colbymchenry Sep 30, 2026
b50c7c0
fix(swift): a call through a type path lands on the type it names (#2…
colbymchenry Sep 30, 2026
7cc2eda
fix(ui): the viewer server exits when the command it runs under is ki…
colbymchenry Sep 30, 2026
7a51969
fix(resolution): JS/TS calls never pick a class member by name alone …
colbymchenry Sep 30, 2026
e453e82
fix(resolution): a C#/VB.NET type position names a type, never a same…
colbymchenry Sep 30, 2026
068c422
fix: a minified or bundled script is generated, and generated files a…
colbymchenry Sep 30, 2026
c5ba680
fix(resolution): type parameters, def-local types and Scala scoping (…
colbymchenry Sep 30, 2026
ddc03f7
fix(resolution): a bare Rust name reaches only what is in scope (#2124)
colbymchenry Sep 30, 2026
99209b6
fix(resolution): a Python call reaches a method through its receiver,…
colbymchenry Sep 30, 2026
8987be4
fix(resolution): a bare Java call reaches its class, supertypes or st…
colbymchenry Sep 30, 2026
1ef1eb8
fix(resolution): Vue, Svelte and Astro calls follow the JS/TS rules (…
colbymchenry Sep 30, 2026
92e14ed
fix(extraction): a file-based router reads only its own app in a mono…
colbymchenry Sep 30, 2026
54a1698
fix(vue-router): admin-template route tables, children and layouts; N…
colbymchenry Sep 30, 2026
b62da73
fix(sveltekit): route names drop (group) folders and parameter matche…
colbymchenry Sep 30, 2026
4423891
fix(react-router): v5 <Redirect to> and styled(Link) wrappers navigat…
colbymchenry Sep 30, 2026
cec041d
fix(angular): Nx workspaces, barrels, class-constant paths and root-r…
colbymchenry Sep 30, 2026
6774446
fix(resolution): Expo module bindings, imported receivers, TS type-on…
colbymchenry Sep 30, 2026
72a9346
fix(expo-router): +api files are endpoints; the nearest router manife…
colbymchenry Sep 30, 2026
a4f9820
fix(resolution): a super call in an override is not a self-call (#2136)
colbymchenry Sep 30, 2026
6f798dc
fix(react-native): Paper requireNativeComponent views reach native; J…
colbymchenry Sep 30, 2026
6a02dca
fix(react-native): event names held in constants join the native↔JS c…
colbymchenry Sep 30, 2026
66d5dc3
fix(resolution): fuzzy matching is exact-case outside case-insensitiv…
colbymchenry Sep 30, 2026
a3d675e
fix(vue): Options API methods, computed, watchers and hooks are symbo…
colbymchenry Sep 30, 2026
ca3bb44
fix(resolution): case-insensitive names pass the prefilter; PHP `=> f…
colbymchenry Sep 30, 2026
dcbbd16
fix(php): $this / self / static / parent calls stay in the class hier…
colbymchenry Sep 30, 2026
7ac8eef
fix(lua): a local is invisible outside its chunk (#2143)
colbymchenry Sep 30, 2026
422db18
fix(r): a test file's top-level variables stay in that file (#2144)
colbymchenry Sep 30, 2026
0ff11b3
fix(dart): a bare call stays in the class hierarchy (#2145)
colbymchenry Sep 30, 2026
75976f9
fix(kotlin): top-level functions resolve only where they're visible (…
colbymchenry Sep 30, 2026
df761e4
fix(ruby): a method reached by name alone must be in reach (#2147)
colbymchenry Sep 30, 2026
bd97414
fix(cfml): a component method reached by name alone must be in reach …
colbymchenry Sep 30, 2026
889b6a3
fix(vbnet): a member access resolves through what the line names (#2149)
colbymchenry Sep 30, 2026
b238e24
fix(objc): a message reached by name alone must be in reach (#2150)
colbymchenry Sep 30, 2026
6eb08d6
fix(csharp): a bare name reaches only members in scope (#2151)
colbymchenry Sep 30, 2026
e6527a8
fix(php): an untyped receiver keeps a unique method only when named f…
colbymchenry Sep 30, 2026
be91a31
fix(lua): a library call is never the one project method of that name…
colbymchenry Sep 30, 2026
11cc3d9
fix(flask): add_url_rule and view_func registrations are routes (#2154)
colbymchenry Sep 30, 2026
1102089
fix(rails): routes are read with their namespaces, scopes and nesting…
colbymchenry Sep 30, 2026
a5b0160
fix(play): a Play project in a subdirectory is still Play (#2156)
colbymchenry Sep 30, 2026
3151d5c
fix(vapor): closure, webSocket and on(…) routes are routes (#2157)
colbymchenry Sep 30, 2026
9269f92
fix(aspnet): FastEndpoints routes, and minimal API paths get a leadin…
colbymchenry Sep 30, 2026
5ba3674
fix(resolution): a framework-resolved edge names its resolver (#2159)
colbymchenry Sep 30, 2026
7aa124c
fix(scala): a bare call reached by name alone must be in reach (#2160)
colbymchenry Sep 30, 2026
2d1b644
fix(extraction): Flow-typed JavaScript is read as TSX (#2161)
colbymchenry Sep 30, 2026
d03e4db
fix(resolution): an unexported ES module binding is not reachable cro…
colbymchenry Sep 30, 2026
cf449fd
fix(resolution): a name destructured from a composable reaches what i…
colbymchenry Sep 30, 2026
37bcd5c
fix(react-router): nested, lazy and constant routes; per-app tsconfig…
colbymchenry Sep 30, 2026
05740b5
fix(resolution): a call on an outside type is not a project method (#…
colbymchenry Sep 30, 2026
715c62b
fix(rust,go): read a call's shape before guessing its method (#2167)
colbymchenry Sep 30, 2026
b7b2a44
fix(kotlin): split primary constructors keep their class; std chain n…
colbymchenry Sep 30, 2026
791ae39
fix(resolution): a receiver declared with an outside type calls that …
colbymchenry Sep 30, 2026
a39fd14
fix(swift): read a call's shape before reaching a member by name (#2170)
colbymchenry Sep 30, 2026
f9530d7
fix(resolution): a call through a declared member calls that member's…
colbymchenry Sep 30, 2026
2e2b98c
fix(kotlin): a bare call reaches only a member in reach (#2172)
colbymchenry Sep 30, 2026
0b74e94
fix(kotlin): no automatic semicolon before a same-line infix e-word (…
colbymchenry Sep 30, 2026
c6491ff
fix(kotlin): record infix calls as calls (#2174)
colbymchenry Sep 30, 2026
c0a38a8
fix(resolution): a receiver-name guess is never a dispatched handler …
colbymchenry Sep 30, 2026
5844eb8
fix(cpp): a qualified name reaches a declaration in a macro-opened na…
colbymchenry Sep 30, 2026
4849802
fix(resolution): calls on a library's types and modules stay the libr…
colbymchenry Sep 30, 2026
2d0d120
fix(resolution): Solidity bare calls stay in the inheritance chain; E…
colbymchenry Sep 30, 2026
de74c05
fix(objc): a message to super reaches the superclass (#2179)
colbymchenry Sep 30, 2026
aa0c73c
fix(resolution): a call through a class name reaches the class method…
colbymchenry Sep 30, 2026
5a2b560
perf(resolution): read a class's member lines once for member-type in…
colbymchenry Sep 30, 2026
fcea022
fix(kotlin): rewrite syntax newer than the grammar before parsing (#2…
colbymchenry Sep 30, 2026
2646b93
test(ui-server): hold the engine's busiest symbol to the row cap, not…
colbymchenry Sep 30, 2026
5c3aa92
fix(cpp): keep classes written around macros and mid-declaration cond…
colbymchenry Sep 30, 2026
1f64e15
fix(react-router): read links through a route-config object's getHref…
colbymchenry Sep 30, 2026
60f1db0
fix(lua): follow a local alias to the function it names (#2188)
colbymchenry Sep 30, 2026
e77ca83
fix(js): resolve calls through CommonJS require bindings (#2189)
colbymchenry Sep 30, 2026
7c1c9a3
fix(ts): `export * as ns` exports the namespace, not every member (#2…
colbymchenry Sep 30, 2026
8410db4
fix(scala): block-local vals, package imports and package objects (#2…
colbymchenry Sep 30, 2026
ad77e5f
fix(java,kotlin): extract enum constants' own bodies (#2194)
colbymchenry Sep 30, 2026
81ce7e5
fix(java): an import from outside the project owns its name (#2195)
colbymchenry Sep 30, 2026
da1312e
fix(kotlin): read Kotlin imports; an outside import owns its name (#2…
colbymchenry Sep 30, 2026
85aad42
fix(resolution): a test double is never the one-method guess (#2197)
colbymchenry Sep 30, 2026
71202c3
fix(python): a bare call to a locally bound name is that value (#2198)
colbymchenry Sep 30, 2026
7493fde
fix(scala): a chain link is never an object named like the member (#2…
colbymchenry Sep 30, 2026
7a11864
fix(routes): inline handler calls keep their receivers (#2200)
colbymchenry Sep 30, 2026
116feb4
fix(cpp): pick the overload a macro-namespaced call's arguments fit (…
colbymchenry Sep 30, 2026
b55836d
fix(lua): a bare call is never a table method; Lua's globals are Lua'…
colbymchenry Sep 30, 2026
4c381ae
fix(swift): a call on a constructed value is that type's member (#2203)
colbymchenry Sep 30, 2026
e7be363
fix(js): no call resolves by name into a minified bundle (#2204)
colbymchenry Sep 30, 2026
a329df8
fix(swift): a call on a typed property is a member of its type (#2205)
colbymchenry Sep 30, 2026
fc73204
fix(kotlin): a DSL lambda runs on its own receiver (#2206)
colbymchenry Sep 30, 2026
eb1452b
fix(dart): core method names on untyped receivers are the core type's…
colbymchenry Sep 30, 2026
b8f2bd5
test(ui-server): time the busiest symbol as the best of five requests…
colbymchenry Sep 30, 2026
de9f346
fix(resolution): production code never names a test suite's symbol (#…
colbymchenry Sep 30, 2026
d7cdb0c
fix(vue): the Vue resolver only resolves a Vue app's scripts (#2210)
colbymchenry Sep 30, 2026
5c01f01
fix(react): the React resolver only resolves a script's references (#…
colbymchenry Sep 30, 2026
c20283e
fix(resolution): a call to an overload of the calling method reaches …
colbymchenry Sep 30, 2026
5f1a635
fix(resolution): any call reaches the overload its arguments fit (#2213)
colbymchenry Sep 30, 2026
fa8d728
fix(rust): a bare name is in scope only through its module or a use (…
colbymchenry Sep 30, 2026
a8b578f
fix(csharp): a bare type name is one its namespaces can see (#2216)
colbymchenry Sep 30, 2026
fa43e25
fix(scala): a symbolic name in a type is a type, never an operator (#…
colbymchenry Sep 30, 2026
e62032e
fix(python): a member value through an untyped receiver is a method o…
colbymchenry Sep 30, 2026
0312333
fix(resolution): a name passed as a value is what is in scope where i…
colbymchenry Sep 30, 2026
ff75a6c
fix(csharp): namespaces, usings and nested types follow the language'…
colbymchenry Sep 30, 2026
ff190b3
fix(resolution): a method handing its call on to another object is no…
colbymchenry Oct 1, 2026
d6f6864
fix(spring): name heuristics start from the reference's own file and …
colbymchenry Oct 1, 2026
ca1eba9
fix(resolution): a bare-recorded call on another expression's value i…
colbymchenry Oct 1, 2026
7365427
fix(rust): framework name heuristics never reach a function-local ite…
colbymchenry Oct 1, 2026
1799390
fix(frameworks): name heuristics pick only what the reference can see…
colbymchenry Oct 1, 2026
83dac15
fix(js): a name the calling function binds is its local (#2226)
colbymchenry Oct 1, 2026
3e6252f
fix(svelte,vue): a component's instance script declarations are its o…
colbymchenry Oct 1, 2026
92f141f
fix(python): a pytest test's parameter is the class its fixture retur…
colbymchenry Oct 1, 2026
b281819
fix(resolution): a type never inherits from itself (#2229)
colbymchenry Oct 1, 2026
3878123
fix(scala): a package object's member is in scope only in its package…
colbymchenry Oct 1, 2026
312b901
fix(rust): Self::X is the impl's associated item, V::X no struct (#2231)
colbymchenry Oct 1, 2026
27da256
fix(kotlin): a Gradle script's bare call is never a project class's m…
colbymchenry Oct 1, 2026
32f681a
fix(go): a name written through an outside package is never a project…
colbymchenry Oct 1, 2026
d9d457d
fix(c): a C call is never a C++ method (#2234)
colbymchenry Oct 1, 2026
3df191b
fix(php): a bare class name is its namespace's class or the imported …
colbymchenry Oct 1, 2026
ef62f02
fix(java): a bare type name is a type in reach by package, import or …
colbymchenry Oct 1, 2026
8651adb
fix(dart): an unnamed extension is not its on-type and applies only i…
colbymchenry Oct 1, 2026
31c5153
fix(swift): an overloaded call reaches the overload its argument labe…
colbymchenry Oct 1, 2026
a925fa0
fix(r): a call never reaches a data binding that shadows a base funct…
colbymchenry Oct 1, 2026
f976a05
fix(react): hook and context heuristics pick only the file's own in J…
colbymchenry Oct 1, 2026
a5da8da
fix(solidity): a call reaches the overload its argument count fits (#…
colbymchenry Oct 1, 2026
8ca4433
fix(objc,swift): a class conforming to its namesake protocol implemen…
colbymchenry Oct 1, 2026
3343646
fix(express): name patterns pick only the calling file's own declarat…
colbymchenry Oct 1, 2026
000c986
fix(express): a middleware candidate is a declaration, never an impor…
colbymchenry Oct 1, 2026
b2afa75
fix(astro): the component name heuristic applies to .astro files only…
colbymchenry Oct 1, 2026
c38aa9c
fix(nestjs): the provider convention stays in the reference's feature…
colbymchenry Oct 1, 2026
6d8802c
fix(python): an imported name follows the package's re-exports to its…
colbymchenry Oct 1, 2026
34ede4d
fix(python): a module member follows the package's re-exports too (#2…
colbymchenry Oct 1, 2026
d45edca
fix(express): a function-expression handler is the route's body, like…
colbymchenry Oct 1, 2026
81e08b7
fix(viewer): pages that went blank — repeated ids, and Steps on a fun…
colbymchenry Oct 1, 2026
95f6f0f
fix(viewer): a directed Flow looks up both ends by their exact names …
colbymchenry Oct 1, 2026
c4babfc
fix(js): a CommonJS require and a module path import the file they na…
colbymchenry Oct 1, 2026
d6a2bdb
fix(sfc): a Vue/Svelte/Astro component owns its script (#2268)
colbymchenry Oct 1, 2026
c04cb5c
fix(viewer): the Map opens on a picture, not a single box (#2270)
colbymchenry Oct 1, 2026
c0d3285
fix(rails): only:/except: are read as %i[], %w(), a string or :only =…
colbymchenry Oct 1, 2026
41cfc83
fix(viewer): highlighting runs in a worker the server can stop (#2266)
colbymchenry Oct 1, 2026
e12f5bb
fix(nuxt, astro): a file-routed page is bound to its component (#2267)
colbymchenry Oct 1, 2026
104b8de
fix(laravel): a string controller resolves without a Controller suffi…
colbymchenry Oct 1, 2026
f416357
fix(cobol): a file ending inside the sequence area no longer hangs th…
colbymchenry Oct 1, 2026
911fcf6
fix(vapor): a closure route's calls are the route's (#2273)
colbymchenry Oct 1, 2026
ec738ec
fix(viewer): a Steps picture with nothing past its anchor says why (#…
colbymchenry Oct 1, 2026
404e782
fix(windows): hide the git calls that flash console windows (#2094) (…
colbymchenry Oct 2, 2026
96ba880
fix(prompt-hook): skip Claude Code <agent-message> subagent hand-back…
colbymchenry Oct 2, 2026
49248e2
fix(mcp): answer server/discover locally in the stdio proxy (#2084) (…
colbymchenry Oct 2, 2026
637fb0f
fix(mcp): release an idle explicit project and its writer lock (#2087…
colbymchenry Oct 2, 2026
fdc7754
fix(mcp): return status and stale refusals as text only (#2088) (#2284)
colbymchenry Oct 2, 2026
5271c89
fix(php): a class written with a namespace in its name resolves to th…
colbymchenry Oct 2, 2026
455175d
fix(mcp): a projectPath in a nested repo the ancestor index leaves ou…
colbymchenry Oct 2, 2026
e28ac71
fix(sync): same-named symbols keep their own cross-file callers acros…
colbymchenry Oct 2, 2026
a5184ed
fix(pascal): Delphi .inc include files are indexed as Pascal, not PHP…
colbymchenry Oct 2, 2026
a4bd890
fix(python): a call on self is never resolved through a same-named im…
colbymchenry Oct 2, 2026
f838c5a
fix(resolution): resolve method values on untyped Python module globa…
colbymchenry Oct 2, 2026
2ff7a99
fix(cpp): bound the macro-visibility include walk (#2127) (#2292)
colbymchenry Oct 2, 2026
7c01910
fix(cfml): tag-based calls, wrapped functions and <cfinterface> are i…
colbymchenry Oct 2, 2026
45a680d
fix(mcp): one daemon per project however its root is cased on Windows…
colbymchenry Oct 2, 2026
e7389b2
fix(mcp): a session serving in-process hands the project back to the …
colbymchenry Oct 2, 2026
7bbc1fb
fix(tests): the test suite no longer writes to the developer's real h…
colbymchenry Oct 2, 2026
273e5cd
fix(upgrade): a Windows upgrade no longer breaks the install while Co…
colbymchenry Oct 2, 2026
8abebda
test(windows): two #1910 tests no longer time out on Windows (#2298)
colbymchenry Oct 2, 2026
91b9bba
fix(extraction): never terminate a parse worker while it is loading g…
colbymchenry Oct 2, 2026
e0f9c95
fix(resolution): a busy machine doesn't boot the resolver pool for a …
colbymchenry Oct 2, 2026
9d4e805
test(windows): daemon-pid-reuse cleanup retries a still-held temp dir…
colbymchenry Oct 2, 2026
3d86bcc
fix(windows): the query pool never terminates a worker still starting…
colbymchenry Oct 2, 2026
70fe0ec
fix(windows): helper threads never end mid-start or with GC marking i…
colbymchenry Oct 2, 2026
2965b7a
docs(changelog): ready [Unreleased] for 1.6.2; release verify waits u…
colbymchenry Oct 3, 2026
ad60dcc
test(windows): the windowsHide guard fails closed on spawns it can't …
colbymchenry Oct 3, 2026
dbb3d63
fix(mcp): wait for a stopping daemon, and for the proxy's fallback en…
colbymchenry Oct 3, 2026
2171906
fix(telemetry): recover from the D1 10 GB outage; dashboard starts on…
colbymchenry Oct 3, 2026
0f0af7b
release: 1.6.2 (#2318)
colbymchenry Oct 3, 2026
6560052
docs(changelog): promote [Unreleased] into [1.6.2]
github-actions[bot] Oct 3, 2026
489b474
fix(vbnet,csharp): index every Structure member; walk property bodies…
colbymchenry Oct 5, 2026
511d86e
fix(mcp): replace a daemon left running by an older install (#2335) (…
colbymchenry Oct 5, 2026
dea076f
fix(mcp,extraction): exit a daemon whose install changed; never store…
colbymchenry Oct 5, 2026
0c7d0f7
perf(resolution): remove the Python indexing regressions since 1.6.2 …
colbymchenry Oct 5, 2026
355afc7
fix(csharp): walk field and property initializers; a constant never n…
colbymchenry Oct 5, 2026
c994414
fix(vbnet): resolve receiver calls by declared type; guard .NET names…
colbymchenry Oct 5, 2026
26e8488
fix(windows): the kernel-parity sweep loads the engine as file:// URL…
colbymchenry Oct 5, 2026
69ee3b9
fix(ui): fall back past a port Windows refuses with EACCES, and say w…
colbymchenry Oct 5, 2026
6c61dd7
fix(vbnet): link Shared fields and properties read through their clas…
colbymchenry Oct 5, 2026
a192df4
fix(telemetry): count late index uploads, treat usage as live ingest,…
colbymchenry Oct 5, 2026
8998697
fix(vue,ts): link calls in Vue templates and in top-level destructuri…
colbymchenry Oct 5, 2026
1b56cb1
fix(explore): find COBOL copybooks by name, with every include site (…
colbymchenry Oct 5, 2026
9f69e47
fix(dart): link getter reads, enum-extension members and more type po…
colbymchenry Oct 5, 2026
deac771
fix(go): resolve unexported receivers and nested modules within the r…
colbymchenry Oct 5, 2026
7210d2f
perf(resolution): remove the JS indexing regressions since 1.6.2; the…
colbymchenry Oct 5, 2026
ed1a89f
fix(rust): a variant path references the enum that declares it (#2328…
colbymchenry Oct 5, 2026
023fc31
fix(axum,actix): link a route to a handler written below its call (#2…
colbymchenry Oct 5, 2026
f40db4b
fix(js,ts): index the functions in every named object literal, not on…
colbymchenry Oct 5, 2026
aeb8f95
fix(kernel): find a store exported on a later line in CRLF TS/JS file…
colbymchenry Oct 6, 2026
fe7542b
fix(vbnet): index names that begin with a keyword (SharedCache, Dimen…
colbymchenry Oct 6, 2026
5b73d0f
fix(js,ts): find a store exported on a later line when its name conta…
colbymchenry Oct 6, 2026
6421644
fix(dart): link calls in top-level and field initializers (#2367)
colbymchenry Oct 6, 2026
b7e05f3
fix(dart): link a chained call only through its receiver's declared t…
colbymchenry Oct 6, 2026
5a11cd7
fix(vbnet): link fields and properties read or written through a valu…
colbymchenry Oct 6, 2026
0571286
fix(js,ts): link calls through an import whose name contains $ (#2378)
colbymchenry Oct 6, 2026
4d6168a
fix(dart): a bare call to a parameter or local links nothing (#2379)
colbymchenry Oct 6, 2026
652c36b
fix(dart): index const constructors and redirecting factories; a call…
colbymchenry Oct 6, 2026
3f96f80
fix(dart): link generic calls the parser reads as two comparisons (#2…
colbymchenry Oct 6, 2026
1b752de
fix(dart): a member with no body keeps its dartdoc and annotations (#…
colbymchenry Oct 6, 2026
d500e58
fix(dart): link a call chained on a generic lookup like BlocProvider.…
colbymchenry Oct 6, 2026
5f5b8db
fix(js,ts): find a store exported by an export { } list when its name…
colbymchenry Oct 6, 2026
249d9a8
fix(dart): a comment inside a member chain no longer loses a call or …
colbymchenry Oct 6, 2026
0c860c0
fix(dart): a bare call or type name reaches only what its library can…
colbymchenry Oct 6, 2026
9924684
fix(dart): a member keeps the dartdoc written above its annotations (…
colbymchenry Oct 6, 2026
631df01
fix(dart): an import or export links the file its URI names, not a na…
colbymchenry Oct 6, 2026
d2fb323
fix(dart): an annotation links the constant or constructor it names, …
colbymchenry Oct 6, 2026
837a186
fix(dart): a call through an import prefix reaches only what that imp…
colbymchenry Oct 6, 2026
83f54a1
fix(dart): a library links the files its part directives name (#2391)
colbymchenry Oct 6, 2026
3f5a9e2
fix(sync): an import links the file it names when that file appears l…
colbymchenry Oct 6, 2026
0a670dc
fix(liquid): JSON under templates/ or sections/ is Liquid only inside…
colbymchenry Oct 6, 2026
ac1f430
fix(c,cpp): a pointer, array or function member is not a supertype (#…
colbymchenry Oct 6, 2026
c513f14
fix(frameworks): detection reads an app's package.json three or more …
colbymchenry Oct 6, 2026
f797b8c
fix(liquid): a Shopify theme's sections and snippets resolve only ins…
colbymchenry Oct 7, 2026
24501fa
fix(go): an interface links the interfaces it embeds (#2397)
colbymchenry Oct 7, 2026
9a274a4
fix(angular): a binding, interpolation or control-flow block links th…
colbymchenry Oct 7, 2026
02d22ae
fix(cpp): a receiver declared through a typedef or using alias calls …
colbymchenry Oct 7, 2026
9a515c3
fix(dead-code): a method a framework calls by decorator or by name is…
colbymchenry Oct 7, 2026
787f75f
fix(go): a type written bare links its own package's, not a namesake …
colbymchenry Oct 7, 2026
dd70646
fix(react-router): read route tables another file hands the router (#…
colbymchenry Oct 7, 2026
fe95183
fix(go): satisfying an interface counts the methods embedding brings …
colbymchenry Oct 7, 2026
4040eab
fix(cpp): a base class links to the class C++ name lookup finds, not …
colbymchenry Oct 7, 2026
5ace306
fix(kernel): a Go value like `wm.new` or `raft.None` keeps its functi…
colbymchenry Oct 7, 2026
31c3328
fix(sync): a Liquid section or snippet reference links its file when …
colbymchenry Oct 7, 2026
73797bf
test(sync): compare synced graphs with an index rebuilt from scratch …
colbymchenry Oct 7, 2026
d8a7f86
fix(go): an unaliased import is also known by the name goimports assu…
colbymchenry Oct 7, 2026
e0bbb66
fix(dead-code): a type that declare module or declare global merges o…
colbymchenry Oct 7, 2026
22a7ba8
fix(c,cpp): a file named like a test is visible to the code that incl…
colbymchenry Oct 7, 2026
c54b726
fix(react-router): a JSX index route is the page at its parent's addr…
colbymchenry Oct 7, 2026
8f0766c
fix(resolution): a large minified JS bundle no longer stalls resolvin…
colbymchenry Oct 7, 2026
855eca2
fix(go): a call through an interface reaches a method the struct gets…
colbymchenry Oct 7, 2026
388b252
fix(sync): a route links the module it lazily loads when the module a…
colbymchenry Oct 7, 2026
f261fda
fix(js,ts): `import { default as X }` is the module's default import …
colbymchenry Oct 7, 2026
19f91e2
fix(frameworks): a framework resolves only references written in its …
colbymchenry Oct 7, 2026
9d07864
fix(cpp): a class keeps its namespaces and enclosing class past code …
colbymchenry Oct 7, 2026
3bf6b8f
fix(go): a type in a signature or composite literal links a type, nev…
colbymchenry Oct 7, 2026
d348d30
fix(sync): a navigation call links its route when the route appears l…
colbymchenry Oct 7, 2026
2f2afea
fix(go): a defined type implements the interfaces its methods satisfy…
colbymchenry Oct 7, 2026
61f8b09
fix(cpp): a receiver declared as a std or other outside type with a l…
colbymchenry Oct 7, 2026
ed199e6
fix(go): a type alias `type A = B` is indexed and links to the type i…
colbymchenry Oct 7, 2026
4731149
fix(react): a type argument or a name the component binds itself rend…
colbymchenry Oct 7, 2026
883504d
fix(go): a call on an embedded struct's method does not reach the emb…
colbymchenry Oct 7, 2026
cdb994b
fix(cpp): a class keeps its members past attribute macros the parser …
colbymchenry Oct 7, 2026
9a1d4bd
fix(js,ts): `require('./x').default` reaches an ES module's default e…
colbymchenry Oct 7, 2026
3de5bef
fix(go): a call through a type assertion reaches the asserted type's …
colbymchenry Oct 7, 2026
1fb8691
fix(c,cpp): a file named like a Google unittest, foo_unittest.cc, is …
colbymchenry Oct 7, 2026
c051ea0
fix(go): a dotted call is written through its own receiver, and a loc…
colbymchenry Oct 7, 2026
2c807f5
fix(js,ts): a catch-all or node_modules path alias no longer makes pa…
colbymchenry Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .claude/skills/agent-eval/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ scripts/agent-eval/audit.sh <VERSION> <repo-name> <repo-url> "<question>" <MODE>
codegraph-tool calls, duration, **total cost**.
- Interactive (`parse-session.mjs`): the `VERDICT: codegraph_explore used Nx |
Read N | Grep/Bash N` and `TOKENS:` lines.
- Both paths also print the three feedback metrics — residual context occupancy,
explore sufficiency, allocation efficiency — and a headless A/B ends with a
side-by-side `ARM COMPARISON` table. Report that table, and check its
contamination row first: `CLI calls that RETURNED output` > 0 means the arm
reached codegraph through Bash and its numbers are void. How to read the rest:
`docs/benchmarks/agent-eval-feedback-metrics.md`.

Lead with cost + tool/Read counts — they are the reliable signals; raw token
in/out are confounded by subagent delegation and prompt caching. State whether
Expand Down
188 changes: 186 additions & 2 deletions .claude/skills/agent-eval/corpus.json
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,191 @@
"repo": "https://github.com/tidyverse/ggplot2",
"size": "Large",
"files": "~1150",
"question": "When a ggplot object is printed, how does the plot actually get built and drawn \u2014 trace the path from print/plot to where geoms render. Name the key functions in order."
"question": "When a ggplot object is printed, how does the plot actually get built and drawn — trace the path from print/plot to where geoms render. Name the key functions in order."
}
],
"COBOL": [
{
"name": "cics-genapp",
"repo": "https://github.com/cicsdev/cics-genapp",
"size": "Small",
"files": "~60",
"question": "When a new insurance policy is added through the LGTESTP1 CICS test harness, which programs handle the request on the way to the DB2 insert? Trace the path and name the programs in order."
},
{
"name": "carddemo",
"repo": "https://github.com/aws-samples/aws-mainframe-modernization-carddemo",
"size": "Medium",
"files": "~75",
"question": "How does the online bill-payment flow work — from the COBIL00C screen program to the transaction record being written? Name the paragraphs performed in order and the copybooks that define the records involved."
},
{
"name": "CobolCraft",
"repo": "https://github.com/meyfa/CobolCraft",
"size": "Medium",
"files": "~270",
"question": "How does an incoming player chat message travel from packet handling to being broadcast to the other connected players? Name the programs on the path in order."
}
],
"VB.NET": [
{
"name": "policyplus",
"repo": "https://github.com/Fleex255/PolicyPlus",
"size": "Small",
"files": "~94",
"question": "When the user toggles a policy to Enabled in the policy-setting editor and clicks OK, how does the new state end up written into the loaded policy source (POL file or registry)? Trace the path from the EditSetting dialog to the concrete write."
},
{
"name": "scrawler",
"repo": "https://github.com/AAndyProgram/SCrawler",
"size": "Medium",
"files": "~320",
"question": "When a user download is started for a Reddit user, how does the request flow from the user-level download entry point through the shared downloader base into the Reddit site plugin, and where do downloaded media items get appended to the user's content list?"
},
{
"name": "staxrip",
"repo": "https://github.com/staxrip/staxrip",
"size": "Medium",
"files": "~145",
"question": "When a job finishes video encoding, how does staxrip decide which muxer runs and how does the muxer command line get built and executed? Trace from job processing to the mkvmerge invocation."
}
],
"Erlang": [
{
"name": "cowboy",
"repo": "https://github.com/ninenines/cowboy",
"size": "Small",
"files": "~190",
"question": "How does an incoming HTTP request travel from cowboy's connection process to a user-defined handler's init/2 callback? Trace the path through the stream handler and middleware chain."
},
{
"name": "ejabberd",
"repo": "https://github.com/processone/ejabberd",
"size": "Medium",
"files": "~410",
"question": "When a client sends a chat message, how does the stanza get from the receiving C2S process to the recipient's session on the same node? Trace the path through the router and session manager."
},
{
"name": "emqx",
"repo": "https://github.com/emqx/emqx",
"size": "Large",
"files": "~2450",
"question": "How does a PUBLISH packet from an MQTT client reach the sessions of matching subscribers? Trace the flow from the connection/channel layer through the broker's routing to session delivery."
}
],
"Solidity": [
{
"name": "solmate",
"repo": "https://github.com/transmissions11/solmate",
"size": "Small",
"files": "~60",
"question": "How does solmate's ERC20 transferFrom enforce allowance and update balances? Trace the flow including the permit() signature path."
},
{
"name": "solady",
"repo": "https://github.com/Vectorized/solady",
"size": "Medium",
"files": "~270",
"question": "How does solady's ERC20 implementation handle a permit() call — from signature recovery through nonce update to allowance write?"
},
{
"name": "openzeppelin-contracts",
"repo": "https://github.com/OpenZeppelin/openzeppelin-contracts",
"size": "Large",
"files": "~400",
"question": "How does an OpenZeppelin AccessControl-protected function check the caller's role? Trace from the onlyRole modifier through hasRole to the role storage."
}
],
"CUDA": [
{
"name": "llm.c",
"repo": "https://github.com/karpathy/llm.c",
"size": "Small",
"files": "~76",
"question": "How does the attention forward pass reach the GPU in the CUDA training path? Trace from attention_forward to the kernels it launches, and explain where softmax happens."
},
{
"name": "flash-attention",
"repo": "https://github.com/Dao-AILab/flash-attention",
"size": "Medium",
"files": "~900",
"question": "How does a Python call to flash_attn_func reach the CUDA kernel that computes forward attention? Trace the dispatch path from the Python API through the C++ binding to the kernel launch."
},
{
"name": "cutlass",
"repo": "https://github.com/NVIDIA/cutlass",
"size": "Large",
"files": "~2700",
"question": "When a cutlass device-level GEMM (cutlass::gemm::device::Gemm) is invoked, how does it reach the GPU kernel? Trace from the operator() call to the kernel entry point and its launch site."
}
],
"Terraform": [
{
"name": "terraform-aws-vpc",
"repo": "https://github.com/terraform-aws-modules/terraform-aws-vpc",
"size": "Small",
"files": "~77",
"question": "How does the private_subnets variable shape the NAT gateway setup? Trace from the variable through the subnet and NAT gateway resources to the outputs that expose the private subnets."
},
{
"name": "cloud-foundation-fabric",
"repo": "https://github.com/GoogleCloudPlatform/cloud-foundation-fabric",
"size": "Medium",
"files": "~990",
"question": "In the project module (modules/project), how does the iam variable turn into actual IAM bindings on the project, and what depends on the module's project_id output elsewhere in the repo?"
},
{
"name": "terraform-aws-components",
"repo": "https://github.com/cloudposse/terraform-aws-components",
"size": "Large",
"files": "~1800",
"question": "In the eks/cluster component, how does the cluster IAM role get created and reach the EKS cluster resource, and which outputs expose cluster identity to other components?"
}
],
"ArkTS": [
{
"name": "HarmoneyOpenEye",
"repo": "https://github.com/WinWang/HarmoneyOpenEye",
"size": "Small",
"files": "~82",
"question": "How does the home page get its feed data from the network layer, and how does that data end up rendered as the list on screen? Trace the flow from the HTTP request through the view model into the home page UI."
},
{
"name": "CoolMallArkTS",
"repo": "https://github.com/Joker-x-dev/CoolMallArkTS",
"size": "Medium",
"files": "~528",
"question": "When the user adds a product to the cart from the goods detail page, how does the item travel from the UI action to persistent storage? Trace the flow across the feature and core modules."
},
{
"name": "applications_app_samples",
"repo": "https://github.com/openharmony/applications_app_samples",
"size": "Large",
"files": "~9500",
"question": "In the OrangeShopping sample app, how does the product detail page's bottom bar (add to cart / buy) lead to the order placement flow? Trace from the bottom navigation component to where the order is created."
}
],
"Nix": [
{
"name": "agenix",
"repo": "https://github.com/ryantm/agenix",
"size": "Small",
"files": "~13",
"question": "When a NixOS system activates, how does a secret declared under age.secrets get decrypted and installed at its runtime path? Trace the flow from the age.secrets option definition to the activation machinery that performs the decryption."
},
{
"name": "nix-darwin",
"repo": "https://github.com/nix-darwin/nix-darwin",
"size": "Medium",
"files": "~207",
"question": "How does setting services.yabai.enable = true become a running launchd service? Trace the flow from the yabai module's options to the launchd daemon definition that generates the plist."
},
{
"name": "home-manager",
"repo": "https://github.com/nix-community/home-manager",
"size": "Large",
"files": "~3390",
"question": "How does programs.git.enable produce the final git config file in the user's home directory? Trace the flow from the git program module to the home-files machinery that links generated files into place."
}
]
}
}
10 changes: 10 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
node_modules
dist
.git
.codegraph
.kommandr
docs
assets
codegraph-kernel/target
codegraph-kernel/prebuilds
release
115 changes: 108 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,64 @@ name: Release
# 5. publishes the npm thin-installer (shim + per-platform packages).
#
# Before triggering: bump package.json. CHANGELOG.md entries can live under
# `## [Unreleased]` — step 2 takes care of moving them. Set the NPM_TOKEN secret.
# `## [Unreleased]` — step 2 takes care of moving them.
#
# npm auth is OIDC trusted publishing (no NPM_TOKEN): every published package
# (@colbymchenry/codegraph + the per-platform bundles) has this repo +
# release.yml configured as its trusted publisher on npmjs.com. Adding a new
# platform package means configuring its trusted publisher there before the
# first release that includes it.
on:
workflow_dispatch: {}

permissions:
contents: write # create the GitHub Release + tag, push the CHANGELOG promote
contents: write # create the GitHub Release + tag, push the CHANGELOG promote
id-token: write # OIDC token for npm --provenance and Sigstore signing
attestations: write # store the GitHub artifact attestations for the bundles

jobs:
# Native extraction-kernel prebuilds (docs/design/rust-kernel-migration-plan.md).
# As of 1.5.0 the kernel is the release's HEADLINE, not an optional extra, so
# this matrix is REQUIRED: a failed kernel build blocks the release instead of
# silently shipping wasm-only bundles under a Rust-engine banner. Per-file
# wasm fallback still exists at runtime for erroring files and unsupported
# platforms — but every published bundle must carry its .node. Note the
# vendored-grammar-C languages (kotlin/lua/scala/dart) compile parser.c via
# the cc crate, so each leg needs its platform C toolchain (runner images
# ship one). (Runner images ship rustup; build-kernel.sh
# adds each cross target itself.)
kernel:
strategy:
fail-fast: false
matrix:
include:
- runner: macos-14
targets: aarch64-apple-darwin x86_64-apple-darwin
- runner: ubuntu-22.04 # oldest glibc runner → widest compatibility
targets: x86_64-unknown-linux-gnu
- runner: ubuntu-22.04-arm
targets: aarch64-unknown-linux-gnu
- runner: windows-latest
targets: x86_64-pc-windows-msvc aarch64-pc-windows-msvc
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v6
- name: Build kernel prebuilds
shell: bash
run: |
for t in ${{ matrix.targets }}; do
bash scripts/build-kernel.sh --target "$t"
done
ls -R codegraph-kernel/prebuilds
- uses: actions/upload-artifact@v4
with:
name: kernel-${{ matrix.runner }}
path: codegraph-kernel/prebuilds/
if-no-files-found: error

release:
runs-on: ubuntu-latest
needs: kernel
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -45,7 +93,13 @@ jobs:
- uses: actions/setup-node@v6
with:
node-version: 22
registry-url: https://registry.npmjs.org
# No registry-url here: it writes an .npmrc that requires a
# NODE_AUTH_TOKEN env var to exist, and we publish via OIDC
# trusted publishing instead of a token.

- name: Upgrade npm for OIDC trusted publishing
# Trusted publishing needs npm >= 11.5; Node 22 bundles npm 10.
run: npm install -g npm@11 && npm --version

- name: Sync package-lock.json if version drifted
# When the maintainer bumps the version on package.json only — for
Expand Down Expand Up @@ -113,6 +167,33 @@ jobs:
git push origin "HEAD:${GITHUB_REF#refs/heads/}"
fi

- name: Download kernel prebuilds
# All legs are required (see the kernel job), so every target's
# <target>/codegraph-kernel.node must be present in release/kernel/.
uses: actions/download-artifact@v4
with:
pattern: kernel-*
merge-multiple: true
path: release/kernel/

- name: Kernel contract + full walker-parity gate
# Runs EVERY kernel suite (__tests__/kernel-*.test.ts — the wire
# contract, the grammar-source parity table checks, and all 20
# languages' walker byte-parity suites incl. torture/CRLF/defer pins)
# against the freshly built linux-x64 .node. The glob keeps this gate
# current as languages are added. CODEGRAPH_KERNEL_EXPECT=1 turns a
# missing binary into a FAILURE, and a missing prebuild fails outright
# — the matrix is required, so absence here means a wiring bug.
run: |
if [ -f release/kernel/linux-x64/codegraph-kernel.node ]; then
mkdir -p codegraph-kernel/prebuilds/linux-x64
cp release/kernel/linux-x64/codegraph-kernel.node codegraph-kernel/prebuilds/linux-x64/
CODEGRAPH_KERNEL_EXPECT=1 npx vitest run __tests__/kernel-*.test.ts
else
echo "::error::linux-x64 kernel prebuild missing despite required matrix"
exit 1
fi

- name: Build all platform bundles
run: |
for t in darwin-arm64 darwin-x64 linux-x64 linux-arm64 win32-x64 win32-arm64; do
Expand All @@ -127,6 +208,18 @@ jobs:
( cd release && sha256sum codegraph-* > SHA256SUMS )
cat release/SHA256SUMS

- name: Attest build provenance for release bundles
# Signed, publicly-verifiable proof that each bundle (and SHA256SUMS)
# was built by this workflow from this repo — SHA256SUMS alone only
# proves integrity, not origin, since it ships next to the bundles.
# Verify any downloaded artifact with:
# gh attestation verify <file> -R colbymchenry/codegraph
uses: actions/attest-build-provenance@v4
with:
subject-path: |
release/codegraph-*
release/SHA256SUMS

- name: Release notes from CHANGELOG.md
# The [<version>] block was guaranteed-populated by the
# "Promote" step above, so the [Unreleased] fallback should
Expand Down Expand Up @@ -154,8 +247,11 @@ jobs:
fi

- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
# Auth is OIDC trusted publishing (id-token: write above) — npm mints
# a short-lived credential from the workflow's identity; there is no
# NPM_TOKEN. Provenance is generated automatically on this path; the
# explicit --provenance keeps the intent visible and fails loudly if
# OIDC is ever unavailable.
run: |
V="${{ steps.ver.outputs.version }}"
bash scripts/pack-npm.sh "$V"
Expand All @@ -167,7 +263,10 @@ jobs:
echo "skip $name@$V (already published)"
else
echo "publishing $name@$V"
( cd "$dir" && npm publish --access public )
# --provenance: publish with an npm provenance attestation
# (needs the id-token: write permission above and the
# repository field pack-npm.sh writes into each package.json).
( cd "$dir" && npm publish --access public --provenance )
fi
done

Expand All @@ -176,10 +275,12 @@ jobs:
V="${{ steps.ver.outputs.version }}"
# npm publish can print success without persisting; confirm against the
# registry (with retries for propagation) so green means really shipped.
# Up to 5 minutes per package: 1.6.1's packages all published fine but
# took longer than the old 60 s to appear, which failed the run.
for dir in release/npm/codegraph-* release/npm/main; do
name=$(node -p "require('./$dir/package.json').name")
ok=
for i in 1 2 3 4 5 6; do
for i in $(seq 1 30); do
if npm view "$name@$V" version >/dev/null 2>&1; then ok=1; break; fi
echo "waiting for $name@$V to appear ($i)…"; sleep 10
done
Expand Down
Loading