Skip to content

perf(studio): follow playhead across virtualized rows#2701

Draft
miguel-heygen wants to merge 1 commit into
codex/studio-timeline-d-viewport-geometry-v2from
codex/studio-timeline-d-playhead-follow-v2
Draft

perf(studio): follow playhead across virtualized rows#2701
miguel-heygen wants to merge 1 commit into
codex/studio-timeline-d-viewport-geometry-v2from
codex/studio-timeline-d-playhead-follow-v2

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

What

Add smooth playhead following and bounded virtual timeline rows while preserving logical focus and total scroll geometry.

Why

Large projects must not mount every track, but playback still needs to follow the playhead smoothly and selection/focus must continue to address rows outside the mounted window.

How

  • Add a virtual-row model with overscan and full-height spacers.
  • Keep logical focus and reveal requests independent of current DOM mounts.
  • Follow playback horizontally while respecting explicit user scrolling.
  • Preserve visible timeline behavior through extracted row components and bounded tick generation.

This is D6 of the independent Family D draft Graphite stack. Its review base is the immutable, PR-less Family C baseline; Families A-C do not need to merge for this PR to be reviewed. It supersedes legacy PR #2638, which remains open for audit until landing.

Test plan

  • Unit tests added/updated
  • Manual testing performed
  • Documentation updated (not applicable)

Validated on the exact Family D tip with Timeline, editing, virtualization, focus-identity, and virtual-row tests; the full Studio/Server suites; both typechecks; static gates; and two strict 50,000-element Chromium passes with only 9 rows mounted.

miguel-heygen commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator Author

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