Commit Graph

311 Commits

Author SHA1 Message Date
22f905cd78 Merge branch 'feature/t44-full-refresh-settings-busy' into develop (#44) 2026-10-08 19:30:36 +02:00
043afde553 fix(settings): keep full refresh busy across phases
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>
2026-10-08 19:30:31 +02:00
4d02331501 Merge branch 'feature/t43-live-variant-accordion-epg' into develop (#43) 2026-10-08 19:00:20 +02:00
8f2825f697 feat(live): show language-scoped stream variants
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>
2026-10-08 19:00:14 +02:00
9e6b1d4593 Merge branch 'feature/t42-live-list-cpu-regression' into develop (#42) 2026-10-08 17:17:22 +02:00
8b1daea23c fix(live): bound live channel listing queries
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>
2026-10-08 17:17:16 +02:00
206bbe82c2 Merge branch 'feature/full-refresh-progress-state' into develop (#40 #41) 2026-10-08 16:20:48 +02:00
ddd7a3f295 fix(live): expose full refresh busy and phase progress
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>
2026-10-08 16:20:36 +02:00
09bdaa3ec1 Merge branch 'feature/t39-restore-laya-language-variants' into develop (#39) 2026-10-08 00:14:20 +02:00
a447d0dfe3 fix: restore Laya language analysis and stream variants
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>
2026-10-08 00:14:10 +02:00
240b26536e Merge branch 'feature/t38-full-rebuild-source-epg-refresh' into develop (#38) 2026-10-08 00:05:10 +02:00
b3dbb3cfba feat: run full refresh with EPG rematching
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>
2026-10-08 00:05:00 +02:00
b81bc10d49 Merge branch 'feature/t37-split-live-analysis-actions' into develop (#37) 2026-10-07 23:45:51 +02:00
4cca030afa feat: split live analysis actions and page catalog loading
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>
2026-10-07 23:45:42 +02:00
bbb1afb238 Merge branch 'feature/t36-incremental-channel-analysis' into develop (#36) 2026-10-07 23:12:54 +02:00
4319e64e1e feat: persist incremental live channel analysis
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>
2026-10-07 23:12:42 +02:00
9967fd7adf Merge branch 'fix/t35-laya-stream-performance' into develop (#35) 2026-10-07 22:44:17 +02:00
ba5b1b37a1 fix: prevent background Laya rebuilds during playback
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>
2026-10-07 22:44:05 +02:00
281a47124e Merge branch 'feature/t34-universal-browser-casting' into develop (#34)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 22:40:34 +02:00
5ee07570e0 feat(cast): add server-managed Google Cast playback (#34)
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>
2026-10-06 22:40:17 +02:00
e6e481bf0e Merge branch 'feature/t33-pwa-stream-casting' into develop (#33)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 22:08:04 +02:00
fd314f0a59 feat(player): add PWA-compatible stream casting (#33)
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>
2026-10-06 22:07:49 +02:00
d1934163ca Merge branch 'feature/t31-build-push-nodecast-and-laya-images' into develop (#31)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 21:18:40 +02:00
d64e5b6518 feat(deploy): publish Nodecast and Laya images together (#31)
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>
2026-10-06 21:18:24 +02:00
4f8d3de7be Merge branch 'feature/t30-standalone-compose-laya-optional' into develop (#30)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 21:08:04 +02:00
7fd2bea665 feat(deploy): make compose standalone with optional Laya (#30)
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>
2026-10-06 21:07:50 +02:00
1791b77a68 Merge branch 'docs/t29-readme-deployment-laya' into develop (#29)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 20:57:03 +02:00
0742ac1a08 docs(deploy): document optional Laya compose profile (#29)
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>
2026-10-06 20:56:49 +02:00
8ff0b162a5 Merge branch 'feature/t28-laya-download-unavailable-runtime' into develop (#28)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 20:31:29 +02:00
f39ee6ebd8 feat(laya): clarify unavailable runtime download flow (#28)
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>
2026-10-06 20:31:15 +02:00
aeafdea283 Merge branch 'fix/t27-tighten-bein-search' into develop (#27)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 17:48:44 +02:00
ab554e12a4 fix(live): tighten beIN Sports search matching (#27)
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>
2026-10-06 17:48:28 +02:00
0122df9489 Merge branch 'hotfix/t26-live-analysis-blank-crash' into develop (#26)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 15:14:03 +02:00
63a5946e75 fix(live): prevent analysis crash on large catalogs (#26)
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>
2026-10-06 15:13:48 +02:00
de1d3d9a6e Merge branch 'fix/t25-live-search-performance' into develop (#25)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 13:08:30 +02:00
45d1fe29d3 fix(live): keep channel search responsive (#25)
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>
2026-10-06 13:08:16 +02:00
5baf8d5a33 Merge branch 'feature/t24-epg-source-priority-order' into develop (#24)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:59:21 +02:00
803dac3788 feat(ui): add EPG source priority controls (#24)
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>
2026-10-06 11:59:06 +02:00
afe91089e5 feat(epg): order EPG sources by priority (#24)
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>
2026-10-06 11:58:50 +02:00
9718155e75 Merge branch 'feature/t23-flexible-channel-search-language-epg' into develop (#23)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:42:46 +02:00
638a31d9ef feat(ui): surface live language filters and built-in EPG sources (#23)
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>
2026-10-06 11:42:23 +02:00
2a1c745a26 feat(live): add language-aware flexible channel search (#23)
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>
2026-10-06 11:42:06 +02:00
a6759b116d fix: track Laya language batches and normalize labels (#22)
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>
2026-10-05 23:42:11 +02:00
45b56d872f fix: show live Laya analysis progress (#21)
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>
2026-10-05 23:30:35 +02:00
1abc56c90e fix: enable Laya language detection and harden live analysis (#18 #19 #20)
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>
2026-10-05 23:10:31 +02:00
9cc86485cb Merge branch 'fix/t18-live-detection-chain' into develop (#18)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-05 22:30:54 +02:00
6bb1914906 fix(live): preserve channels after empty projection rebuild (#18)
Treat successful but empty live projections with existing live input as stale, reject them on the frontend, and keep the previous visible channel state during rebuild failures.

Add DOM coverage for the Settings analysis flow and backend serialization coverage for empty projection state.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-05 22:30:37 +02:00
6dfd2ba093 test: cover functional live detection chain with Laya fallback (#18) 2026-10-05 19:34:42 +02:00
3f44217e42 Merge branch 'fix/t17-projection-rebuild-failure' into develop (#17)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 16:57:33 +02:00
6b16d2527d fix: resolve Live catalog projection failure during Analyze again in Laya mode (#17)
Fix the regression introduced by the weighted Laya signal (#16):
rebuild now merges exact fingerprints in every engine mode after
evaluating hard blockers, compares candidates against all variants
of a group, falls back to deterministic scoring when Laya is
unavailable, and reports transaction errors safely. Non-regression
tests cover the Laya-mode rebuild path; verified against a real
catalog copy (39,341 streams rebuilt successfully).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 16:57:20 +02:00