Problem
The Live TV search field only matches channel names. _filteredChannels() (flutter_client/lib/features/live_tv/live_tv_screen.dart:211-230) filters on channel.name.toLowerCase().contains(query) and nothing else, so searching for a programme ("Breaking Bad") returns nothing — you can only find a network by its name.
Proposal
Add a Shows results section to the Live TV screen, rendered above the channel content and below the category bar, so it appears identically in all three view modes (list / logo grid / EPG timeline grid).
Constraints
- Channel-name filtering stays synchronous and unchanged — typing must not become network-gated on a screen that is currently instant.
- Show search is debounced with a staleness guard, mirroring the pattern already proven in
ShowsScreen (shows_screen.dart:51-96).
- Show results stay out of the channel list, so
List<Channel> remains the contract feeding all three view builders.
Problem
The Live TV search field only matches channel names.
_filteredChannels()(flutter_client/lib/features/live_tv/live_tv_screen.dart:211-230) filters onchannel.name.toLowerCase().contains(query)and nothing else, so searching for a programme ("Breaking Bad") returns nothing — you can only find a network by its name.Proposal
Add a Shows results section to the Live TV screen, rendered above the channel content and below the category bar, so it appears identically in all three view modes (list / logo grid / EPG timeline grid).
XtreamService.searchEpgShows(xtream_service.dart:1303, m3u-editor'ssearch_epg_showsaction), already wrapped byAppShell._searchEpgShows(app_shell.dart:778) and currently handed only toShowsScreen.MediaPreviewSectionrail (shared/media_browsing_widgets.dart:566) used by Home and AIOStreams./dvr/shows/<normalized-title>), which already carries the DVR record actions from Allow scheduling a single (or multiple) airing from DVR Shows search, not just "Record Series" #204/Show episode names (EPG subtitle) once the server exposes them (blocked on m3ue/m3u-editor#1409) #207.Constraints
ShowsScreen(shows_screen.dart:51-96).List<Channel>remains the contract feeding all three view builders.