feat(ui): programme details in the live channel context menu - #1387
feat(ui): programme details in the live channel context menu#13874gray wants to merge 3 commits into
Conversation
The Xtream and Stalker live sidebars hide the per-row (i) button by design — the current programme is already inline — which left no way to read a programme description without switching channels. Right-click now offers "Show program details" (opening the existing EPG description dialog) in both portal sidebars and in the favorites/recently-viewed lists, whenever the row has a current programme. The context menu is no longer gated on EPG-mapping support alone, so the item also works in the PWA. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Greptile SummaryThis PR adds programme-description access to live-channel context menus without increasing per-row action density.
Confidence Score: 5/5The PR appears safe to merge; no concrete changed-code failure remains. The new menu actions consistently resolve the selected row’s existing programme association, preserve capability gating for EPG mapping, and defensively no-op if programme data is unavailable. Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant Row as Live channel row
participant Menu as Context menu
participant EPG as Current programme map
participant Dialog as Programme details dialog
User->>Row: Right-click channel
Row->>EPG: Check current programme
EPG-->>Row: Programme or none
Row->>Menu: Open when an action is available
User->>Menu: Select Show program details
Menu->>EPG: Resolve row programme
EPG-->>Dialog: EpgProgram
Dialog-->>User: Show programme description
Reviews (1): Last reviewed commit: "feat(ui): offer programme details from t..." | Re-trigger Greptile |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9ca7175bff
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| /** Whether right-click has anything to offer for this row. */ | ||
| hasChannelContextMenu(item: XtreamChannelListItem): boolean { | ||
| return this.supportsEpgMapping || this.epgPrograms.has(item.xtream_id); |
There was a problem hiding this comment.
Populate EPG data before enabling PWA menu support
When running as a PWA (window.electron is absent), supportsEpgMapping is false and epgPrograms can never make this fallback true: every Xtream population path is guarded by supportsEpg, which itself requires Electron bridge methods. The same problem affects the other changed surfaces—the Stalker layout explicitly clears epgPreviewPrograms when supportsEpg is false, and UnifiedLiveTabComponent clears the favorites/recent EPG map—so the new program-details action remains unavailable throughout the PWA despite the change's intended PWA support. Populate portal-provided EPG independently of the Electron-only capability, and cover the actual PWA path rather than only injecting a map in unit tests.
AGENTS.md reference: AGENTS.md:L79-L85
Useful? React with 👍 / 👎.
EPG previews are populated only where supportsEpg (Electron), so the programme-details menu item cannot appear in the PWA today; the data-presence gate is future-proofing, not PWA support (Codex review). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
The main layout spec was one effective line under the 1200 max-lines test budget; the new context-menu test tipped it over and failed CI lint. Following the playback-session-key precedent, the test moves into its own template-less spec — which also restores the negative assertion, since this harness runs without EPG-mapping support. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Superseded: instead of hiding programme details behind the context menu, the (i) button now appears in all live lists with the row actions stacked vertically (star on top, info below, reserved slot — no horizontal cost, no layout jumps). Landing as part of #1341 where the row layout was already being reworked. |
Follow-up to the discussion in #1341: the Xtream and Stalker live sidebars intentionally have no per-row (i) button (the current programme is already shown inline), but that left no way to read a programme description without switching channels. Instead of adding a third button to every row, the programme details are now reachable through the row context menu, consistently across live lists.
What changed
portal-channels-list) and Stalker ITV sidebar (stalker-live-stream-layout): right-click now offers "Show program details" (opens the existingEpgItemDescriptionComponentdialog) whenever the row has a current preview programme.global-favorites-list, used by the portal favorites/recent tabs and global favorites): the same item appears when the row has a current programme.supportsEpg(Electron), so in the PWA the maps stay empty and the item does not appear — behavior there is unchanged. If portal EPG previews ever land in the PWA, the menu lights up automatically. "Map EPG" itself stays Electron-gated.EPG.PROGRAM_DIALOG.SHOW_PROGRAM_DETAILSkey — no new translations needed. Icon isevent_noteto avoid clashing with the M3U "Show details" (channel metadata) item that already usesinfoin the favorites menu.Rationale
The sidebar row already shows the programme title, time, and progress inline, and selecting a channel opens the full EPG timeline — a third per-row button would add action density to a high-frequency zapping surface and appear/disappear per row depending on EPG coverage. The context menu gives consistent access everywhere with zero visual noise.
Tests
portal-channels-listspec: menu offered only when a programme exists (no mapping support in harness), programme lookup, dialog open.stalker-live-stream-layoutspec: programme lookup and dialog open via the preview-programme map.global-favorites-listspec: enriched-row programme flows into the menu and opens the dialog.nx build web(template typecheck) passes; release note added (release:notes:validatepasses).🤖 Generated with Claude Code