Read source sync status when projection analysis is idle so Settings can keep Channel Analysis progress visible during startup or externally-triggered live source refreshes.
Refs #47
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Derive live channel row logos from the selected or preferred stream variant so the frontend can render logos without falling back to placeholders.
Refs #45
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Centralize persisted full-refresh phase detection so the Settings rebuild button stays in its refreshing state during Laya, projection, writing, and EPG phases.
Refs #44
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Keep live stream variant expansion scoped to the selected language while preserving the legacy all-language variants response when no language is provided.
Display projected current EPG programme data in live rows and distinguish selected streams from actively playing streams in the collapsed variant UI.
Refs #43
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Optimize the live channel page path so unfiltered catalog pages are counted and paged in SQLite before serialization and enrichment.
Add the T42 CPU regression test covering a 50000-channel projected catalog.
Refs #42
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ensure full refresh marks the live projection as building before source refresh awaits, and expose phase-specific counters so language detection progress is determinate.
Covers #40 and #41.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Run Local AI language detection during full rebuilds after identity classification and restore variant expansion with a visible playing stream indicator.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Run full live catalog refreshes through live source sync, complete channel analysis, EPG source refresh, and persisted EPG rematching while keeping check-new incremental.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Separate incremental live checks from full catalog rebuilds and page projected channel/variant loading so first live-list display stays bounded.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Persist live channel language metadata across background projection rebuilds and target Local AI identity analysis to newly detected streams unless a manual full analysis is requested.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ensure automatic live projection rebuilds use the algorithmic path so Laya identity batches are not launched during live list playback or background sync.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add server-side Google Cast discovery and sessions, signed cast media URLs, browser device picker integration, and deployment documentation.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a browser-native casting service with Live and Watch player controls for Remote Playback and AirPlay-compatible devices.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update the Docker build/push helper to build and push both application and Laya images, and document the configurable image targets.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Use configurable published images in docker-compose and update deployment docs so Compose works without a full checkout or local Dockerfiles.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update deployment guidance for standard and Laya-profile Compose flows, and mark the Laya service as profile-gated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Explain how to start the optional Laya runtime when model download fails because the service is unavailable, while keeping generic failures concise.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Require numeric query tokens to match numeric channel tokens exactly while preserving singular/plural and compact-name tolerance.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bound synchronous live channel enrichment and tolerate minimal projection payloads so analysis and listings do not blank the UI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Filter projected live channels locally in the browser and apply server-side search and language filters before costly enrichment work.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Render active and inactive EPG priority lists, support move controls, and persist complete EPG source ordering from the settings UI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add persistent EPG priority ordering, source reorder validation, and priority-aware EPG matching for live channels.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add language filter controls for projected live channels, preserve backend language views in the browser, and separate built-in EPG sources from custom sources.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add backend language detection, flexible live channel search, iptv-org catalog caching, and protected built-in EPG source registration.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Report post-projection Laya language detection as a busy analysis phase and normalize Laya language labels before caching and display.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Track the Laya identity phase separately from catalog projection progress and expose phase-specific counters through the live status API and Settings presentation.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ensure Docker images keep their container-built native dependencies, wait for the Laya sidecar healthcheck, expose accurate Laya readiness, and treat empty AI language batches as fallback failures.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>