Loadpath review experience: history, graph overlays, and editor marks - #23
Conversation
…marks. Walks stay the product: click-through brief to graph, seed vs downstream coloring, contract field sides, merge checklist, command palette, j/k read-order, working-tree watch, loadpath.yml editor, HTML export, restore on launch, architecture health, CODEOWNERS, and VS Code/Cursor gutter marks. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
|
Warning Review limit reached
Next review available in: 52 minutes Limit details: You’ve used all 1 included review currently available under your plan. Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (2)
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (51)
Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change adds review-experience metadata, architecture and configuration APIs, interactive graph workflows, editor integration, progress tracking, MCP tools, frontend controls, documentation, bundled assets, and comprehensive tests. ChangesLoadpath review and architecture experience
Estimated code review effort: 5 (Critical) | ~120 minutes Merge Risk: ⚪ Minimal · up to This PR adds loadpath review history, graph, editor, configuration, export, and navigation capabilities; no actionable merge-blocking risk remains beyond normal checks and review. Sequence Diagram(s)sequenceDiagram
participant User
participant Frontend
participant Server
participant GraphStore
participant ReviewExperience
participant Editor
User->>Frontend: Open architecture or review workspace
Frontend->>Server: Request summary, graph, and review data
Server->>GraphStore: Load graph or stored review
Server->>ReviewExperience: Enrich and summarize review
ReviewExperience-->>Server: Roles, checklist, marks, health
Server-->>Frontend: Typed response
Frontend->>Editor: Open selected repository file
Editor-->>Frontend: Launch status or fallback URL
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
The top-bar merge box also uses .level, so a page-wide locator is no longer unique. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Isolating a walk to sinks is a review-graph action; the indexed architecture view should stay the full map when the user switches tabs. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
GET /api/architecture can return the brief first (findings, counts) while GET /api/architecture/graph fills the map. Workspace listing no longer re-hashes the tree or evaluates rules. Drift on load uses mtimes; node and edge reads are cached and architecture edges are type-filtered in SQL. The UI paints the architecture brief as soon as the summary arrives. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
…light. Trust graph_pending from the summary payload, and delay the graph fetch in the UI test inside window.fetch so Playwright is not blocked on the route. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
What-if is a hypothetical walk from one node, not a filter of the current map. Show that in the inspector and a banner, and add Back to git range so the previous review is not lost. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Scan, extract, boot, and stitch each used their own done/total, so the bar could hit 50–100% then drop to 0% when the next phase started. Map those phases onto one 0–100 scale, reset at the start of a run, and ignore a leftover done payload so the bar never rewinds. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Smooth-step edges all bent at the same midpoint, so vertical segments stacked into one line. Overlapping edges in a column gap now get different bend positions. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Collinear smooth-step edges still stacked when their y-ranges did not overlap. Assign a unique bend per corridor, widen busy column gaps, and draw those paths with a custom step edge. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Close the inspector before clicking InvoicePage in the review-graph e2e, and check that parallel left-to-right edges use distinct verticals. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
…dge. Stacked route-to-view links that would read as one dashed bus get lanes at 0.2 and 0.8. Far-apart segments in the same gap can share an x. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Skip-column links used to pick an independent bend and land on top of the next-column routes. Overlapping y-ranges now share one 0.2–0.8 gutter so stacked buses stay readable. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
A lone route-to-view skip used the midpoint of the whole jump, so its vertical sat on the next column's tracks. Lanes now stay in the gutter immediately after the source column. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
A 0.08 floor made several long edges share one x just past the handle offset. Lane x is now inverted through the smooth-step formula so stacked skips stay in distinct first-gap tracks. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Keep CODEOWNERS paths under .github, ignore .loadpath in the watch fingerprint, sort architecture-health series newest-last, persist empty rules, write waivers without exploding loadpath.yml, and require loopback for config/open writes. Watch reviews now use the dirty ref, failed graph loads clear the placeholder, architecture mode drops review isolate, reopen diffs the previous walk, and the palette cannot run an off-screen action. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
CI timed out on a visible-edge check after InvoicePage painted. Fall back to an attached path so a clipped pane still counts as drawn. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Walks stay the product. This implements the 18 review-experience items so a local git range can be read as a load path instead of a hunk list.
What changed
POST /api/openplus Cursor/VS Code URLs from the brief and inspector.aligned/missing_client/missing_server).⌘/Ctrl+Kfor tabs, review, index, watch, export, nodes, history.j/kread-order — skipped when focus is an input.loadpath.ymleditor — contexts, rules, and waivers on the Architecture tab;PUT /api/config.POST /api/export/htmlandGET /api/reviews/{id}/html).editors/vscodepolls/api/marks(S/!/C/✓/→).localStorage.loadpath.lastReviewIdreopens the last walk.Faster indexed-workspace load
Opening a large already-indexed repo no longer waits on a full graph + source-tree rehash:
GET /api/architecture?graph=0returns the brief (findings, counts, contexts).GET /api/architecture/graphfills nodes/edges with a type-filtered SQL read.GET /api/reposuses a cheap index card (no rule evaluation, no hashing).What-if walks
What if this changes starts a hypothetical walk from one node. It does not use Base/Head and it is not a filter of the current map (that is Isolate path to sinks).
Index progress bar
The determinate bar used each phase’s own
done/total, so it could climb during scan, drop to empty when extract started, then jump to 100%. Scan/extract/boot/stitch now map onto one 0–100 scale, a new run resets to 0, and the bar never rewinds.Distinct graph edges
Orthogonal edges in a column gap used to share one vertical, so two route→view links looked like a single bus. Overlapping left-to-right edges now get separate smooth-step tracks in the gap right after the source column (spread 0.2–0.8). Skip-column links bend in that same first gap instead of landing on the next column’s tracks.
Architecture graph with staggered verticals between route and view columns
Zoomed architecture graph showing separate verticals in the route-to-view gap
Dual-model review follow-ups
Addressed the confirmed findings from an adversarial pass:
.loadpath/so indexing does not retrigger reviews; watch reviews senddirty=trueimmediately.POST /api/open,PUT /api/config, andPOST /api/config/waiverrequire a loopback origin..github/…paths; emptyrules: []stays empty; adding a waiver no longer rewrites the whole manifest with defaults.Tests
vscode:/cursor:URLs allowed in the shellTo show artifacts inline, enable in settings.
Summary by CodeRabbit
New Features
Bug Fixes