Skip to content

feat(player): autoplay, prev/next episode, glass control menus (v0.25.0)#107

Merged
detain merged 1 commit into
masterfrom
feat/u2-player
Jun 12, 2026
Merged

feat(player): autoplay, prev/next episode, glass control menus (v0.25.0)#107
detain merged 1 commit into
masterfrom
feat/u2-player

Conversation

@detain

@detain detain commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Features

Autoplay (#7) — the player starts playing once the source is ready (opt-in autoplay prop set by PlayerPage). Suppressed while the resume prompt / transcode-preparing is shown; on NotAllowedError it retries muted (user can unmute) and never throws an unhandled rejection.

Prev/next episode (#2) — for series content, Previous/Next-episode buttons flank play/pause. Episodes are ordered across the whole series by (season, episode) with cross-season rollover (last ep of a season → first of the next); buttons disable at the ends and are hidden for movies. Specials (season 0) are excluded from auto-advance. The adjacent episode loads via /app/player/:id and the player fully re-initializes (source/resume/autoplay/neighbours recomputed). The ordered list is cached per series-root id so binge navigation doesn't refetch the series tree.

Player dropdown styling (#8)Select gains an opt-in tone="glass" variant (translucent dark + white text, legible hover/selected) used by the player Speed/Quality menus, replacing the old opaque white-bg/black-text look. Select is unchanged for all non-player consumers (CaptionsMenu sits in an opaque panel and was intentionally left default).

Review

0 HIGH findings; autoplay promise handling + route-change re-init verified correct. Fixed the two findings: binge-nav fetch storm (now cached) and finale→Specials auto-advance (Specials excluded from the chain).

Tests / verification

+46 vitest tests (autoplay, episode-order incl. specials/rollover, prev/next nav + cache hit, glass variant). typecheck + build + test:run (1947) green. Rebuilt dist/. v0.24.0 → 0.25.0 + CHANGELOG.

🤖 Generated with Claude Code

- Autoplay on load: Player attempts video.play() once the source is ready
  (opt-in autoplay prop, set by PlayerPage). Suppressed while the resume
  prompt or transcode-preparing is shown; on a NotAllowedError it retries
  muted (user can unmute), never throws an unhandled rejection.
- Prev/next episode buttons for series content: episodes ordered across
  the whole series (season, episode) with cross-season rollover; buttons
  flank play/pause, disabled at the ends, hidden for movies. Specials
  (season 0) are excluded from the auto-advance chain. Adjacent episode
  loads via /app/player/:id and the player fully re-initializes.
- The whole-series ordered list is cached per series-root id so binge
  navigation (Next, Next, Next) doesn't refetch the series tree.
- Select gains an opt-in tone="glass" variant (translucent dark + white
  text) used by the player Speed/Quality menus so they match the player
  chrome instead of the old opaque white-bg/black-text; Select is
  unchanged for every other consumer.

Rebuilt bundle. typecheck + build + 1947 tests green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@detain detain merged commit 72b7815 into master Jun 12, 2026
@detain detain deleted the feat/u2-player branch June 12, 2026 22:00
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