Skip to content

fix(tv): fast seek-bar scrubbing, Start Over starts from the beginning - #122

Merged
JonahMMay merged 1 commit into
mainfrom
fix/tv-seek-scrub-start-over
Sep 30, 2026
Merged

JonahMMay merged 1 commit into
mainfrom
fix/tv-seek-scrub-start-over

Conversation

@JonahMMay

@JonahMMay JonahMMay commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Seek bar is slow when holding Left/Right

Each key repeat fired a native seek, and the bar moved only after that seek finished, so holding the key crawled.

Left/Right now scrub instead:

  • The target and the preview bubble move immediately (trickplay tile, where one exists).
  • The step grows while the key is held: 10 s for the first second, then 30 s, 1 min, and 2 min after 6 s (playerSeekHoldStep). Releasing resets it.
  • One seek fires 400 ms after input settles, rather than one per repeat.

Seek preview drifted away from the thumb

The time bubble was placed as if it were always 176 px wide (a trickplay tile) and measured against the full bar width. A bare timecode, which is what every title without trickplay shows, sat about 50 px behind the thumb and drifted further toward the ends. It now lays out from its real width, centred on the thumb's position along the inset track and clamped to the bar (seekPreviewLeft, with tests).

Start Over resumed instead of starting over

The start request dropped any start_position that wasn't positive. The server reads an omitted start_position as "resume where this profile left off", so Start Over, which sent none, always resumed. Start Over now sends an explicit 0, and the request builder keeps any non-null value. Omitting it still means resume.

Testing

  • dart analyze lib test: no issues
  • flutter test (prairie_core): 199 passed, with new tests for the hold-step curve and the zero start position.
  • Not yet run on the TV.

🤖 Generated with Claude Code

…beginning

Holding Left/Right on the seek bar fired a native seek per key repeat and
only moved the bar once each seek finished, so it crawled. Left/Right now
scrub: the target and preview move immediately, the step grows while the
key is held (10s, then 30s, 1m, 2m), and one seek fires once input settles.

Start Over sent no start_position, because the request dropped any value
that was not positive, and the server reads an omitted start_position as
"resume". Start Over now sends an explicit 0, and the request keeps it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 56300bc7-091a-4db5-a5e5-a2332b3b18e8

📥 Commits

Reviewing files that changed from the base of the PR and between a29eae2 and a122c49.

📒 Files selected for processing (5)
  • flutter/packages/prairie_core/lib/src/api/playback_types.dart
  • flutter/packages/prairie_core/lib/src/screens/item_detail_screen.dart
  • flutter/packages/prairie_core/lib/src/screens/player_screen.dart
  • flutter/packages/prairie_core/test/api/playback_v3_test.dart
  • flutter/packages/prairie_core/test/screens/player_controls_focus_test.dart
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@JonahMMay
JonahMMay merged commit 0b8f2e4 into main Sep 30, 2026
7 checks passed
@JonahMMay
JonahMMay deleted the fix/tv-seek-scrub-start-over branch September 30, 2026 22:01
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