[P2] Pagination & deep result access for exchanges #111
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent Epic
#100
Problem
The exchange list caps at 50 results fetched from the server, paginated client-side in pages of 25. The total is 2,096+ but there's no way to access results beyond the initial 50. For debugging, developers often need to find a specific exchange from hours ago.
Current State
50 of 2,096 exchangesProposed Solution
1. Server-Side Pagination
Replace client-side pagination with proper server-side pagination:
Backend needs:
GET /api/v1/executions?offset=0&limit=25&sort=started_desc2. Virtual Scrolling (alternative)
Instead of page numbers, use infinite scroll with virtualized rendering:
3. Cursor-Based Pagination
For live-updating data, cursor-based pagination is more stable than offset-based:
This prevents items shifting between pages as new exchanges arrive.
4. Better Search
The existing Ctrl+K command palette can search exchanges, but the exchanges table itself needs inline search that queries ClickHouse:
Recommendation
Cursor-based pagination (Option 3) is the best fit because:
Acceptance Criteria
Design Specification
Cursor-based pagination:
beforeparam (ISO timestamp) replaces OFFSET. Query:WHERE start_time < {before} ORDER BY start_time DESC LIMIT N+1. Extra row determineshasMore.Backend changes: Add
beforefield toSearchRequest,nextCursorfield toSearchResult. Backward compatible (absentbefore= OFFSET mode).Frontend: Cursor stack in component state for Previous navigation. Page indicator
Page {n} of ~{total/pageSize}. Rows-per-page pill bar: 25|50|100.LIVE mode: active on page 1 only. Paging forward pauses auto-refresh with banner: "Auto-refresh paused while browsing history. [Return to latest]".