feat: add grouped view to logs table with expandable fallback chains - #5522
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 59 minutes 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: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughSummary by CodeRabbit
WalkthroughGrouped log viewing now persists in the URL. Grouped mode fetches root logs, loads filtered child logs on expansion, and renders child rows with hierarchy controls and styling. ChangesGrouped log-chain viewing
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant LogsHeaderView
participant LogsPage
participant getLogs
participant LogsAPI
participant LogsDataTable
LogsHeaderView->>LogsPage: toggle grouped view
LogsPage->>getLogs: request roots_only=true
getLogs->>LogsAPI: fetch root logs
LogsAPI-->>getLogs: return root logs with child aggregates
getLogs-->>LogsPage: return root logs
LogsPage->>LogsDataTable: render root display rows
LogsDataTable->>LogsPage: toggle fallback-chain expansion
LogsPage->>getLogs: request filtered child logs
getLogs->>LogsAPI: fetch filtered children
LogsAPI-->>getLogs: return child logs
getLogs-->>LogsPage: return child logs
LogsPage->>LogsDataTable: render children beneath the root
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
a4e507c to
a098a2a
Compare
71b963f to
02513b4
Compare
02513b4 to
91a21d5
Compare
91a21d5 to
17c4767
Compare
17c4767 to
f77659c
Compare
582bcb3 to
a4fd6d7
Compare
f77659c to
a698051
Compare
a4fd6d7 to
27ca8b7
Compare
2a59bf6 to
c1bd494
Compare
Merge activity
|
The base branch was changed.
c90f9c3 to
c1bd494
Compare
717a66d to
ad74fed
Compare
c1bd494 to
c90f9c3
Compare
ad74fed to
d30dfd4
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
The merge-base changed after approval.
d30dfd4 to
cf49fc5
Compare

Summary
Adds a "Group" toggle to the logs table that collapses fallback chains under their root request. When enabled, the table fetches only root-level log entries (
roots_only=true) and lazily loads each chain's children via the sessions endpoint when a row is expanded. This makes it easier to understand multi-step fallback sequences without being overwhelmed by individual attempt rows.Changes
groupedURL state parameter (parseAsBoolean) that is automatically disabled when aparent_request_idsession filter is active, since that view is already scoped to a single chain.rootsOnlyparameter to thegetLogsAPI query, which appendsroots_only=trueto the request when grouped view is active.child_count,children_cost, andchildren_tokensfields toLogEntryfor aggregate data returned by theroots_onlyendpoint.DisplayLogEntrytype that extendsLogEntrywith a__chainChildflag, used to mark lazily-loaded child rows injected below their expanded parent in the table.expandcolumn to the logs table in grouped mode. Root rows with children show a chevron + child count button; child rows show a corner connector icon to indicate hierarchy.expandedChainIds,chainChildren,loadingChainIds) is managed locally on the page and reset whenever filters, pagination, or the grouped toggle changes.tableMetaprop toLogsDataTableso the expand column can access toggle callbacks without threading props through column factories.LogsHeaderViewwith a tooltip explaining the behavior and a performance caveat for large tables.Type of change
Affected areas
How to test
cd ui pnpm i pnpm buildScreenshots/Recordings
Add before/after screenshots of the grouped vs. flat log table view.
Breaking changes
Related issues
Security considerations
No new auth surfaces. The sessions endpoint used for lazy-loading children is already gated by the same RBAC policies as the main logs endpoint.
Checklist
docs/contributing/README.mdand followed the guidelines