Skip to content

feat(remote): companion remote playback bar, chapter skip, and Explore search#1524

Open
l3gitpanda wants to merge 7 commits into
edde746:mainfrom
l3gitpanda:claude/companion-remote-improvements
Open

feat(remote): companion remote playback bar, chapter skip, and Explore search#1524
l3gitpanda wants to merge 7 commits into
edde746:mainfrom
l3gitpanda:claude/companion-remote-improvements

Conversation

@l3gitpanda

@l3gitpanda l3gitpanda commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Quality-of-life improvements to the companion remote (phone controlling a desktop/TV Plezy), plus two fixes found while testing them:

  • Persistent playback bar — while the host player is active, a transport bar (prev chapter · seek back · play/pause · seek forward · next chapter) stays pinned at the bottom of the remote on all three tabs, so seeking no longer requires switching to the Play tab.
  • Chapter skip — new previousChapter/nextChapter protocol commands wired to the video controls' existing chapter seek (falls back to a small time seek when the media has no chapters). Buttons live in the persistent bar and on the Play tab.
  • Explore from the remote — new tabExplore/exploreSearch commands: an Explore chip in the remote's navigation (opens the search sheet and switches the host to Explore) and an Explore card on the More tab. The typed query opens CatalogSearchScreen on the host pre-filled via a new initialQuery param, using the same TV on-screen-keyboard suppression as SearchScreen.submitSearchQuery.
  • Navigation chips stay visible during playback (previously hidden while a player was active).
  • Fix: play/pause on the remote did nothing on desktop — it was a simulated space-bar key press, which only walks the focus tree and never reaches the player's HardwareKeyboard shortcut. It now has a real onPlayPause callback (key simulation remains as app-level fallback).
  • Fix: remote-driven searches ran invisibly beneath pushed screens — remote search commands now pop to the main screen first, and repeated Explore searches replace the catalog search screen instead of stacking.

Protocol compatibility

RemoteCommandType is wire-serialized by index (append-only); the four new commands are appended at the end. Older hosts decode unknown indices to the ping fallback — a silent no-op, verified against an Apple TV running a current release build.

Note on history: the branch includes a merge + revert pair from an earlier chapter-skip experiment on the fork; they cancel to a net-zero diff.

Screenshots

image
image

Testing

  • flutter analyze clean, dart format clean, full flutter test suite passing (new widget test covers CatalogSearchScreen.initialQuery)
  • Manual: iOS phone (sideloaded) controlling a Windows desktop host — playback bar on all tabs, chapter skip with/without chapters, Explore search end-to-end, play/pause, library search after Explore search
  • Backward compat: phone with this build against an older Apple TV host — new commands safely no-op

🤖 Generated with Claude Code

https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb

claude and others added 7 commits July 10, 2026 08:45
Adds previousChapter/nextChapter commands to the companion remote
protocol (appended to the enum to keep the index-based wire format
compatible) and a chapter row on the remote's Play tab. The host wires
the commands to the existing chapter-seek logic in the video controls,
which falls back to a small time seek when the media has no chapters.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J1sgLGxtM2B2xYfGRHTzHb
…r-sg2zzv

Add skip chapter buttons to companion remote
Appends tabExplore/exploreSearch to the companion-remote protocol (index-
serialized enum, append-only), wires them on the host to tab selection and
a CatalogSearchScreen push, and adds an initialQuery to CatalogSearchScreen
that searches immediately without opening the TV on-screen keyboard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
…p-chapter-sg2zzv"

This reverts commit f1fdbcd, reversing
changes made to b5d8ff5.
…y points

The companion remote gets an always-visible transport bar (seek back,
play/pause, seek forward) pinned below the tabs while the host player is
active, so seeking no longer requires switching to the Play tab. The Play
tab gains previous/next chapter buttons wired through new index-appended
protocol commands to the video controls' existing chapter seek (which
falls back to a small time seek without chapters). The Remote tab's
navigation chips gain Explore, and the More tab gains an Explore card
that sends the typed query as an exploreSearch command.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
… Explore chip searches

Testing feedback: keep the tab-navigation chips visible during playback
instead of swapping them for the playback bar, flank the persistent bar
with previous/next chapter, and make the Explore chip open the search
sheet (switching the host to Explore) rather than only switching tabs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
… callback

Remote search commands now pop anything pushed over the main screen
first — previously a library search ran invisibly beneath a still-open
catalog search screen, and repeated Explore searches stacked screens.
Play/pause gets an onPlayPause callback wired to the player: the
simulated space bar only walks the focus tree, which the desktop
player's HardwareKeyboard shortcut never sees.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016oGGWGt2igPx8mn8k5dkJb
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.

2 participants