Shrink the graph wire format, warm up the API at boot, and hide externals on demand - #41
Merged
Merged
Conversation
…les view hide externals Graph window responses can now use an opt-in indexed edge format that cuts payloads to about 30 percent of their old size. The API warms its graph client right after it starts listening, so the first query no longer pays the connection cost. The Files view gains a toggle to hide unresolved external modules, with honest totals and paging while filtered. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
The Linux CI runner boots the tsx child about ten times slower than a local machine, so the 10 second wait for the warmup warning was a latency assertion in disguise. The ceiling now asserts eventual behavior only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
/api/graph/full,/files,/neighbors,/induced-edges) accept an opt-inedgeFormat=indexed-v1. Edges become index tuples against a node table plus a first-occurrence type table. Measured on a 3,605-edge window: 958KB legacy vs 283KB compact (70.5 percent smaller). Legacy stays the default and is byte-shape unchanged; invalid or repeated format values return clean 400s. The dashboard requests compact everywhere and validates it with a strict decoder that rejects malformed tables, tuples, out-of-range or negative-zero indexes, and whitespace identifiers.RETURN 1through the shared graph client singleton right after it starts listening, so the first real query no longer pays the connection cost. Boot behavior is unchanged when storage is unreachable or blocked; 48 concurrent boot-time requests produced exactly one client and one ownership claim under verification.GET /api/graph/files?includeExternals=falsefilters:Externalmodules before totals, degree ordering, dedupe, and paging, so counts stay honest while filtered; edges are induced only among visible nodes. The dashboard adds an Externals control in Files mode (aria-pressed, keyboard operable), persisted in the URL and localStorage, resetting to page one on change.Verification
Three fixers with disjoint file ownership, each with red-first test evidence. An independent verification round against live ephemeral FalkorDBLite fixtures found three blockers (repeated query params accepted; decoder accepted
-0indexes and whitespace node ids); all were fixed and confirmed in a second round by re-running the exact reproductions: ALL CLEAR. Full tree: build 21/21 forced, tests 36/36 tasks, typecheck 20/20.Deliberately not in this PR
/fulland/neighborsignoreincludeExternalslike any unknown param (documented behavior; the contract scopes it to/files).packages/graph/dist(pre-existing); integration suites relocate long temp paths into~/.codegraph/graphs/(test-isolation cleanup candidate).🤖 Generated with Claude Code