Skip to content

feat(dashboard): unified pagination across all list pages#451

Merged
GenerQAQ merged 2 commits intodevfrom
feat/unified-pagination
Mar 18, 2026
Merged

feat(dashboard): unified pagination across all list pages#451
GenerQAQ merged 2 commits intodevfrom
feat/unified-pagination

Conversation

@GenerQAQ
Copy link
Copy Markdown
Contributor

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

  1. 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).

  2. 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).

  3. Unify Messages & Tasks — replace inline pagination blocks with the shared PaginationBar component (PAGE_SIZE=10 unchanged).

  4. Sticky table headersTableHeader gets sticky top-0 so column titles stay visible while scrolling the list.

  5. Consistent layout — all list pages now use the same pattern: header/filters fixed at top, table scrolls in the middle, pagination pinned at bottom.

  6. Logs page unchanged — still uses Load More (fits streaming use case).

Implementation Tasks

  • Create PaginationBar component (commercial + OSS)
  • Convert 6 Load More pages to page-number pagination
  • Unify Messages & Tasks to use shared PaginationBar
  • Apply equivalent changes to OSS dashboard
  • Add i18n keys (en/zh) for pagination labels
  • Sticky table headers with proper z-index
  • Consistent full-height layout across all pages
  • Reset page to 1 on filter changes

Impact Areas

  • Dashboard
  • Other: OSS Dashboard (src/server/ui)

Checklist

  • Open your pull request against the dev branch.
  • All tests pass in available continuous integration systems (e.g., GitHub Actions).
  • Tests are added or modified as needed to cover code changes.

🤖 Generated with Claude Code

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>
@GenerQAQ GenerQAQ requested a review from a team as a code owner March 18, 2026 09:16
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>
@GenerQAQ GenerQAQ merged commit a3768b5 into dev Mar 18, 2026
3 checks passed
@GenerQAQ GenerQAQ deleted the feat/unified-pagination branch March 18, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant