Skip to content

Implement SessionStore-backed windowed request-list data source #31

@LocNguyenHuu

Description

@LocNguyenHuu

Summary

Follow-up to #28.

Move the main request list from array-backed row projection to a real windowed/paged data source backed by SessionStore.

Why

#28 introduces the row-model seam. This issue completes the next major architecture step: the table should no longer require the full filtered dataset to be materialized as in-memory arrays for large sessions.

This is the core scaling step toward 1M+ rows.

Scope

  • Add summary/count/window queries to the production request-list path
  • Introduce a window cache for visible and near-visible row ranges
  • Back NSTableView from that windowed source instead of full in-memory filtered arrays
  • Preserve row identity, selection stability, and native AppKit behavior
  • Keep column rendering driven by lightweight row summaries

Must Preserve

  • smooth scrolling
  • stable selection by UUID
  • sort descriptors integration
  • custom header columns
  • built-in columns from current source
  • comments/highlights/pin/save indicators
  • inspector opening from selected row

Non-Goals

  • full store-backed filtering/sorting logic in this issue
  • final lazy detail loading for every action path

Acceptance Criteria

  • Table can render from a windowed store-backed source
  • Visible row fetches do not require full-array materialization
  • Selection remains stable across window changes
  • AppKit table interactions still feel native
  • Focused tests cover window cache behavior and row identity mapping

Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions