Skip to content

feat(livetv): add guide search with jump-to-channel/program#1526

Open
l3gitpanda wants to merge 3 commits into
edde746:mainfrom
l3gitpanda:feat/livetv-guide-search
Open

feat(livetv): add guide search with jump-to-channel/program#1526
l3gitpanda wants to merge 3 commits into
edde746:mainfrom
l3gitpanda:feat/livetv-guide-search

Conversation

@l3gitpanda

@l3gitpanda l3gitpanda commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

What

Adds a search to the Live TV guide: a search icon on the Guide tab opens a sheet that filters channels (name, call sign, number) and programs airing in the next 24 hours (title / series name) as you type. Selecting a result closes the sheet and jumps to it in the guide — shifting the guide's time window when the airing isn't in the current one, scrolling to the channel row, and landing d-pad focus on the matched program block.

Screenshots

image image image

How

  • New GuideSearchSheet modeled on the existing subtitle-language filter sheet (FocusableTextField + in-memory filter + FocusableListTile rows), shown via OverlaySheetController.showAdaptive like the reorder-favorites sheet. Programs come from one fetchSchedule(now, now+24h) fan-out over liveTvServers when the sheet opens; each program's channel is resolved once so keystroke filtering stays cheap.
  • Two new public methods on GuideTabState (jumpToChannel / jumpToProgram) reuse the existing day/time-picker window mechanics, _scrollToChannel / _scrollToProgramTime, and the focusContent() keyboard-mode gating.
  • Companion remote: while the sheet is open it takes over CompanionRemoteReceiver.onSearchAction (same save/restore idiom as the video player's overrides) so a query typed on the phone lands in the guide search with the TV keyboard dismissed; the global Search tab handler is restored on close. No protocol changes.
  • Searching covers all channels; jumping to a non-favorite while the favorites filter is on drops the filter so the target row exists.
  • 5 new i18n strings (base locale only, fallback_strategy: base_locale).

Testing

  • flutter analyze clean; dart format (120) applied.
  • Manually verified on Windows desktop and TV (d-pad): filter/jump for channels and programs incl. window shift for later airings, OSK focus flow, companion-remote query submit into the open sheet, and restore of global search after closing.

🤖 Generated with Claude Code

@l3gitpanda l3gitpanda force-pushed the feat/livetv-guide-search branch 4 times, most recently from 67be12f to da62643 Compare July 12, 2026 19:00
l3gitpanda and others added 3 commits July 12, 2026 16:22
Search icon on the guide tab opens a sheet that filters channels and
the next 24h of programs in memory; selecting a result closes the
sheet, shifts the guide window if needed, scrolls to the channel row
and lands d-pad focus on the match. While the sheet is open it takes
over the companion-remote search callback (save/restore, same idiom
as the video player overrides) so queries typed on the phone land in
guide search with the TV keyboard dismissed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UnEMtLJYbRim4k7YLCwvyZ
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UnEMtLJYbRim4k7YLCwvyZ
The search action was only rendered while the guide tab was selected,
but the d-pad route into the app-bar action bar traverses the tab
chips, and RIGHT selects each tab it crosses - so focus could only
enter the bar with What's On (or Recordings) active, after the search
button had already been unmounted.

Show the search action on every Live TV tab instead, and switch back
to the guide tab when a result is picked. Since a tab switch builds
GuideTab fresh, its jump methods now stash a jump requested while
programs are still loading and replay it once the load completes,
in place of the default scroll-to-now anchoring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QBt1MzBDJXssuRNH1CBGRC
@l3gitpanda l3gitpanda force-pushed the feat/livetv-guide-search branch from 9a699d5 to dd69af0 Compare July 12, 2026 23:28
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