feat(dashboard): unified pagination across all list pages#451
Merged
Conversation
Replace "Load More" buttons with page-number pagination on 6 listing pages (Sessions, Disk, User, Sandbox, Learning Spaces, Agent Skills) and unify the existing Messages/Tasks inline pagination into a shared PaginationBar component. Applied to both commercial and OSS dashboards. - Create shared PaginationBar component for each dashboard - Convert Load More pages to full cursor-loop loading + client pagination - Sticky table headers that stay visible while scrolling - Consistent full-height layout: header fixed, list scrolls, pagination pinned - Add i18n keys for pagination labels (en/zh) - PAGE_SIZE = 20 for listing pages, 10 for detail pages (messages/tasks) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Render the first page of results after a single API call instead of blocking until all cursor pages have been fetched. Remaining pages load in the background while users can already browse loaded data. - Add `isLoading` prop to both PaginationBar components (commercial + OSS) showing a Loader2 spinner next to the item count - Convert all 15 cursor-loop pages to the progressive pattern: fetch first page → render → fetch rest in background - Item count and page buttons update live as more data arrives Co-Authored-By: Claude Opus 4.6 (1M context) <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.
Why we need this PR?
The dashboard has inconsistent pagination: 6 pages use "Load More" buttons, 2 pages (Messages, Tasks) use inline page-number pagination, and Logs uses Load More with live mode. This PR unifies pagination across all list pages for a consistent UX.
Describe your solution
Shared PaginationBar component — left side shows total item count, right side shows page buttons with ellipsis logic. One version per dashboard (commercial uses Button, OSS uses Pagination primitives).
Convert 6 "Load More" pages (Sessions, Disk, User, Sandbox, Learning Spaces, Agent Skills) to load all data via cursor loop + client-side page-number pagination (PAGE_SIZE=20).
Unify Messages & Tasks — replace inline pagination blocks with the shared PaginationBar component (PAGE_SIZE=10 unchanged).
Sticky table headers —
TableHeadergetssticky top-0so column titles stay visible while scrolling the list.Consistent layout — all list pages now use the same pattern: header/filters fixed at top, table scrolls in the middle, pagination pinned at bottom.
Logs page unchanged — still uses Load More (fits streaming use case).
Implementation Tasks
PaginationBarcomponent (commercial + OSS)Impact Areas
Checklist
devbranch.🤖 Generated with Claude Code