Commit Graph
100 Commits
Author SHA1 Message Date
4gray ade043d427 fix(remote-control): use iptvnator favicon (#1023) 2026-06-02 10:39:36 +02:00
4gray 1badb9a057 refactor(electron): share typed preload bridge contract (#1018)
* refactor(electron): share typed preload bridge contract

* refactor(electron): tighten bridge review fixes

* refactor(electron): tighten playlist bridge returns

* refactor(electron): use bridge epg progress type

* refactor(epg): alias progress bridge types
2026-06-01 09:52:22 +02:00
4gray 4847eb5241 refactor(electron): split epg event services
Split EPG IPC orchestration, worker lifecycle, and query logic into focused services. Harden clear-worker lifecycle after review with timeout/exit handling and regression coverage.
2026-05-27 22:05:40 +02:00
4gray edaa981061 refactor(electron): split external player sessions
Split the Electron external-player IPC monolith into focused launch-context, playback-request, runtime, MPV session, and VLC session modules. Includes Greptile follow-up fixes for Homebrew Cask VLC path resolution and VLC spawn-error promise handling, with regression coverage.
2026-05-26 23:15:28 +02:00
4gray 701cf23299 chore(frontend): clean logging and lint suppressions 2026-05-26 20:18:12 +02:00
4gray a1b0d9186c chore(test): clean lint and warning baseline 2026-05-26 19:30:21 +02:00
4gray 3d4d2ca9bf fix(angular): remove template diagnostics warnings (#1011)
* fix(angular): remove template diagnostics warnings

* fix(angular): preserve template fallback behavior
2026-05-26 18:33:44 +02:00
4gray 1bbe8f794e refactor(workspace): split workspace shell facade
Split WorkspaceShellFacade into focused component-scoped services and keep the facade as the stable template-facing delegation layer.
2026-05-26 17:51:02 +02:00
4gray 82c725ea5a refactor(playback): add playback position runtime bridge (#1009)
* refactor(playback): add playback position runtime bridge

* test(services): avoid angular testing import in playback specs
2026-05-25 01:14:11 +03:00
4gray 520b1628f4 Merge pull request #1008 from 4gray/fix/pwa-csp-stylesheet-regression
Fixes #1007
2026-05-24 17:21:59 +03:00
4gray 697eab6e73 refactor(epg): route renderer calls through runtime bridge
Add typed EPG runtime bridge, split EPG runtime capabilities, migrate renderer EPG callers away from direct window.electron access, and address Greptile review feedback.
2026-05-24 13:45:51 +03:00
4gray 87c1c6240d Merge pull request #1005 from 4gray/agent/electron-security-hardening
feat(electron): harden renderer security
2026-05-23 19:37:24 +03:00
4gray 2184fd7c45 Merge pull request #899 from 4gray/dependabot/npm_and_yarn/axios-1.15.2
chore(deps): bump axios from 1.15.0 to 1.15.2
2026-05-22 17:23:27 +03:00
4gray dba639a693 Merge pull request #999 from 4gray/dependabot/npm_and_yarn/serialize-javascript-7.0.5
chore(deps): bump serialize-javascript from 6.0.2 to 7.0.5
2026-05-22 17:23:06 +03:00
4gray 4d28c962ad Merge pull request #1004 from 4gray/agent/pwa-electron-runtime-consolidated
refactor(runtime): consolidate PWA and Electron capability gates
2026-05-22 15:18:23 +03:00
4gray 615ad98566 Merge pull request #1003 from 4gray/agent/docker-build-platform-stage
fix(docker): build app on native build platform
2026-05-22 13:27:50 +03:00
4gray 138d02e1c4 Merge pull request #980 from 4gray/agent/app-runtime-capabilities
refactor(app): use runtime capabilities for shell gates
2026-05-22 13:10:59 +03:00
4gray 33df53f266 Merge pull request #979 from 4gray/agent/downloads-runtime-capabilities
refactor(downloads): use runtime availability capability
2026-05-22 13:04:50 +03:00
4gray abbce3f928 Merge pull request #978 from 4gray/agent/playback-view-runtime-capabilities
refactor(playback): use runtime capability for external fallback
2026-05-22 12:48:29 +03:00
4gray 2db1a56007 Merge pull request #977 from 4gray/agent/playlist-context-runtime-capabilities
refactor(playlist): use runtime capability for xtream sections
2026-05-22 12:41:17 +03:00
4gray e5e58d8b33 Merge pull request #976 from 4gray/agent/playlist-import-runtime-capabilities
refactor(import): use runtime capability for url hint
2026-05-22 12:33:52 +03:00
4gray 9db5bd2b6a Merge pull request #975 from 4gray/agent/workspace-player-runtime-capabilities
refactor(workspace): use runtime player capability
2026-05-22 12:28:20 +03:00
4gray d53c112304 Merge pull request #974 from 4gray/agent/workspace-shortcuts-runtime-capabilities
refactor(workspace): use runtime shortcuts capability
2026-05-22 12:18:17 +03:00
4gray 5456e7a3e3 Merge pull request #973 from 4gray/agent/dashboard-runtime-capabilities
refactor(dashboard): use runtime activity capability
2026-05-22 12:08:38 +03:00
4gray d68d1a551f Merge pull request #972 from 4gray/agent/workspace-shell-runtime-capabilities
refactor(workspace-shell): use runtime capabilities
2026-05-22 12:02:15 +03:00
4gray 6211bd2f94 Merge pull request #971 from 4gray/agent/portal-ui-runtime-capabilities
refactor(portal-ui): use runtime capabilities
2026-05-22 11:50:59 +03:00
4gray ebd3b2dcfb Merge pull request #969 from 4gray/agent/playlist-ui-runtime-capabilities
refactor(playlist-ui): use runtime capabilities
2026-05-22 11:43:23 +03:00
4gray 2fc3d4295f Merge pull request #968 from 4gray/agent/playlist-refresh-action-boundary
refactor(playlists): move refresh action to ui boundary
2026-05-22 11:33:05 +03:00
4gray 45eba8e685 Merge pull request #967 from 4gray/agent/web-runtime-boundary-typing
refactor(web): harden runtime service payloads
2026-05-22 11:26:25 +03:00
4gray 76346a569b Merge pull request #966 from 4gray/agent/playlist-delete-lifecycle
refactor(playlists): centralize delete lifecycle
2026-05-22 11:18:15 +03:00
4gray 6a4c4c49c2 Merge pull request #965 from 4gray/agent/runtime-capabilities
refactor(runtime): centralize platform capabilities
2026-05-22 11:08:40 +03:00
4gray 39c1c10492 Merge pull request #964 from 4gray/agent/pwa-self-hosted-hardening
fix(pwa): harden self-hosted runtime boundaries
2026-05-22 10:37:35 +03:00
4gray c96a805b47 Merge pull request #987 from 4gray/agent/electron-ipc-sqlite-contracts
test(electron): add sqlite ipc contract coverage
2026-05-22 09:39:25 +03:00
4gray 9d69443d01 Merge pull request #963 from 4gray/agent/embedded-mpv-ci-runtime-cache
ci: cache embedded mpv runtime
2026-05-22 09:38:26 +03:00
4gray 0345ad7e5e Merge pull request #970 from 4gray/agent/web-strict-mode
chore(web): enable strict TypeScript mode
2026-05-22 09:31:41 +03:00
4gray ff9c13058c Merge pull request #955 from 4gray/claude/elegant-hertz-40b11b
Unified color, rebuilt dashboard, polished Settings & Multi-EPG
2026-05-22 01:58:57 +03:00
4gray 67d512d44c Merge pull request #961 from 4gray/agent/pwa-provider-target-flow
fix(docker): exclude agent worktrees from build context
2026-05-22 00:47:22 +03:00
4gray b2909a1186 feat(workspace): add keyboard shortcuts help (#957)
* feat(workspace): add keyboard shortcuts help

* style(workspace): polish keyboard shortcuts dialog

* fix(workspace): address shortcuts review feedback

* docs(workspace): clarify desktop shortcut availability

* refactor(workspace): split keyboard shortcut definitions
2026-05-21 19:15:46 +03:00
4gray 5d31c1d49a ci(docker): publish images after trusted events 2026-05-21 09:37:43 +02:00
4gray fd59447064 docs(docker): restore self-hosted PWA compose flow
* docs(docker): restore self-hosted PWA compose flow

* fix(docker): supervise self-hosted runtime processes

* fix(docker): exit cleanly on container stop
2026-05-21 09:30:57 +02:00
4gray 5b091809ef fix(xtream): ignore future recently added dates
## Summary
- Normalize Xtream recently-added timestamps across UI, import, and dashboard query paths.
- Filter future/invalid provider dates before ranking rails and migrate legacy millisecond cache rows.
- Add regression coverage for future timestamps, series date priority, and DB migration behavior.

## Validation
- GitHub checks passed, including Unit Tests and Typechecks, Web E2E, Electron E2E on macOS/Ubuntu/Windows, CodeQL, builds, and Greptile Review.
2026-05-19 14:39:38 +02:00
4gray 20e7322353 refactor(portal): split collection data access (#953) 2026-05-19 00:01:34 +02:00
4gray 118d4fce32 fix(playback): improve inline stream diagnostics (#952)
* fix(playback): improve inline stream diagnostics

* fix(playback): preserve headers in diagnostics wrapper

* fix(portal): align unified live player imports
2026-05-18 23:59:20 +02:00
4gray 32cc0b74e8 feat: add self-hosted PWA backend runtime (#944)
* feat(web-backend): add self-hosted proxy app

* feat(web): enable runtime PWA configuration

* test(web-e2e): cover self-hosted backend proxy

* test(web-e2e): clean self-hosted lint warnings

* fix(web-backend): validate proxied provider URLs

* fix(web-backend): proxy through registered provider targets

* fix(web-backend): document CodeQL SSRF validation boundary

* test(web-e2e): mock provider target registration

* fix(web): address self-hosted review feedback
2026-05-16 00:10:03 +02:00
4gray 5e5a89a300 refactor(ui): remove dead portal code and share detail styles (#946) 2026-05-16 00:09:29 +02:00
4gray 0ec9b29993 fix(playlist): preserve auto-refresh on manual refresh (#947)
* fix(playlist): preserve auto-refresh on manual refresh

* test(playlist): cover disabled auto-refresh preservation
2026-05-15 23:10:35 +02:00
4gray 272e0e772e fix(stalker): preserve explicit portal identity (#941) 2026-05-15 18:34:49 +02:00
4gray 2d5c4fa4f9 chore: tighten validation and runtime logging
* chore: tighten validation and runtime logging

* fix(i18n): localize new settings labels
2026-05-15 17:43:42 +02:00
4gray d24c77a143 chore(nx): enforce scoped workspace boundaries (#942) 2026-05-15 09:59:06 +02:00
4gray 4a4334cb64 feat(playback): improve browser-player diagnostics (#939)
* feat(playback): diagnose browser stream access errors
Entire-Checkpoint: f957cd9849e0

* feat(playback): expose browser-player diagnostic details
Entire-Checkpoint: f957cd9849e0

* fix(playback): keep media path extensions authoritative
Entire-Checkpoint: f957cd9849e0

* fix(playback): tighten browser access diagnostics
Entire-Checkpoint: f957cd9849e0

* fix(playback): align diagnostic followups
Entire-Checkpoint: f957cd9849e0

* fix(playback): narrow declared stream metadata
Entire-Checkpoint: f957cd9849e0

* fix(playback): preserve explicit extension overrides
Entire-Checkpoint: f957cd9849e0

* fix(playback): keep mpeg-ts out of unsupported containers
Entire-Checkpoint: f957cd9849e0

* refactor(playback): split diagnostics utilities
Entire-Checkpoint: f957cd9849e0

* fix(playback): treat mpegts early eof as media fallback
Entire-Checkpoint: f957cd9849e0
2026-05-15 00:55:23 +02:00
4gray 8232a86a1e feat(portal): add category sorting controls (#940)
* feat(portal): add category sort modes

* fix(portal): address category sort review feedback
2026-05-15 00:28:32 +02:00
4gray 2a5b1d1da7 fix(xtream): keep live playback on category switch (#936) 2026-05-14 20:52:02 +02:00
4gray a40d5447e7 feat(settings): add external player arguments (#932)
* feat(settings): add external player arguments

* fix(settings): address external player argument review

* fix(settings): require external player argument settings

* feat(settings): add external player argument placeholders

Closes https://github.com/4gray/iptvnator/issues/835
2026-05-14 11:04:01 +02:00
4gray 9ae984ad7f feat(portal): add series quick start CTA (#925)
* feat(portal): add series quick start CTA
Entire-Checkpoint: f957cd9849e0

* fix(portal): address series quick start review
Entire-Checkpoint: f957cd9849e0

* docs: use repo-relative quick start path
Entire-Checkpoint: f957cd9849e0
2026-05-12 23:45:02 +02:00
4gray e7db920543 fix(settings): clarify external player path hints (#929)
* fix(settings): clarify external player path hints

* fix(settings): gate external player hints to desktop
2026-05-12 19:49:14 +02:00
4gray a33d506266 fix(stalker): play radio collections with audio layout (#930)
* fix(stalker): play radio collections with audio layout

* fix(stalker): address radio review feedback
2026-05-12 19:48:38 +02:00
4gray 6ae1251ad1 fix(playback): use inline player for collection VOD (#928)
* feat(portal): add series quick start CTA
Entire-Checkpoint: f957cd9849e0

* fix(playback): use inline player for collection vod

* fix(playback): address inline collection review feedback

* fix(playback): ignore stale vod position loads
2026-05-12 19:26:40 +02:00
4gray a2ecdc358f fix(electron): resolve macOS external player app paths (#924)
* fix(electron): resolve macOS external player app paths

* fix(electron): make macos player executable mapping explicit
2026-05-10 23:36:35 +02:00
4gray 1ca291d35c chore(nx): update Nx to 22.7.1 (#923)
* chore(nx): update Nx to 22.7.1
Entire-Checkpoint: f957cd9849e0

* fix(ci): patch nx-electron package metadata copy
Entire-Checkpoint: f957cd9849e0

* fix(packaging): preserve electron package metadata
Entire-Checkpoint: f957cd9849e0

* fix(packaging): address package verifier review
Entire-Checkpoint: f957cd9849e0
2026-05-10 22:01:25 +02:00
4gray 6305dcf00e Add browser playback diagnostics and MPV/VLC fallback (#921)
* feat(playback): add codec diagnostics fallback
Entire-Checkpoint: f957cd9849e0

* fix(playback): address diagnostics review feedback
Entire-Checkpoint: f957cd9849e0

* fix(playback): ignore recoverable hls diagnostics
Entire-Checkpoint: f957cd9849e0

* fix(playback): polish diagnostic fallback banner
Entire-Checkpoint: f957cd9849e0

* fix(xtream): preserve live category search scope
Entire-Checkpoint: f957cd9849e0
2026-05-10 17:27:54 +02:00
4gray 5f4cf01467 fix(playback): avoid redundant VideoJS source resets (#920)
* fix(playback): avoid redundant VideoJS source resets

* fix(playback): clean up cleared VideoJS sources

* refactor(playback): use signal APIs in VideoJS player

closes #608
2026-05-10 15:32:00 +02:00
4gray 724e4b1ab3 feat(playback): add embedded mpv (macos) stream recording (#916)
* feat(playback): add embedded mpv stream recording
Entire-Checkpoint: f957cd9849e0

* fix(playback): address embedded mpv recording review
Entire-Checkpoint: f957cd9849e0

* fix(playback): track mpv recording auto-stop replies
Entire-Checkpoint: f957cd9849e0
2026-05-10 12:27:09 +02:00
4gray eb0da5951f Merge pull request #914 from 4gray/codex/fix-linux-window-identity
fix(linux): align packaged app identity
2026-05-09 20:11:07 +02:00
4gray 4a755b43ec Merge pull request #885 from sapireli/fix/xtream-catchup-server-timezone
fix(xtream): use server timezone when constructing catchup/timeshift URLs
2026-05-09 19:28:16 +02:00
4gray 134b5fb779 Merge pull request #911 from 4gray/codex/stalker-radio
feat(stalker): add radio support
2026-05-09 15:50:10 +02:00
4gray 9261794b4a Merge pull request #902 from weeco/feat/xtream-xmltv-epg-fallback
feat(xtream): fall back to uploaded XMLTV when provider has no EPG
2026-05-09 13:06:51 +02:00
4gray e9875f9f29 Merge pull request #903 from sapireli/search_all_fix
Fix Xtream section search across categories
2026-05-08 22:09:36 +02:00
4gray f884c3479a Merge pull request #906 from TeddJohnson/codex/double-click-stream-start
feat: Add double-click stream open setting
2026-05-08 20:08:23 +02:00
4gray d0b08b9f1d feat(player): add embedded-mpv player for macOS as experimental feature (#877)
Merge PR #877: feat(player): add embedded-mpv player for macOS as experimental feature
2026-05-02 03:34:46 +02:00
4gray e35b96d55d Merge pull request #864 from sapireli/epg-hardening-invalid-rows
Harden EPG channel lookup and invalid rows
2026-04-16 23:42:52 +02:00
4gray 595213d3dc Merge pull request #854 from 4gray/feat/xtream-epg
Feat: Xtream Code API EPG improvements
2026-04-06 18:18:17 +02:00
4gray dd265f15e9 Merge pull request #853 from 4gray/feat/workspace-dashboard-improvements
Feat: xtream and workspace improvements
2026-04-05 18:58:50 +02:00
4gray 2e29523078 Merge pull request #844 from 4gray/claude/fix-e2e-playlist-tests-ZB1XE
fix(e2e): use mat-button-toggle value selectors for playlist type selection
2026-04-04 13:49:56 +02:00
4gray e579c21486 Merge pull request #803 from GiviMAD/fix_epg_ignored_programs
fix: epg ignored programs
2026-03-17 23:30:42 +01:00
4gray ea55c485a7 Merge pull request #801 from markc1984/master
fix: support raw MPEG-TS (.ts) streams in all embedded video players
2026-03-05 23:42:38 +01:00
4gray ef65c48f11 Merge pull request #775 from 4gray/claude/dazzling-lamport
feat(website): add Astro landing page and blog with cinematic broadcast design
2026-02-14 21:25:12 +01:00
4gray d7953d9e13 Merge pull request #771 from 4gray/refactor/stalker-portals
Refactor: Stalker portal store
2026-02-14 16:27:33 +01:00
4gray ac2ca36470 Merge pull request #769 from 4gray/feat/remote-control-for-xtream
Feat: Remote control for xtream/stalker
2026-02-14 16:16:55 +01:00
4gray 12bbdf562a Merge pull request #765 from 4gray/fix/pre-v0-19-release-fixes
Fix/0.19 release fixes
2026-02-13 20:59:38 +01:00
4gray 516461c4a1 Merge pull request #766 from hasanbeder/master 2026-02-13 07:47:57 +01:00
4gray 7415de5f0b Merge pull request #761 from 4gray/feat/search-in-visible-categories
feat: add excludeHidden option to search functions for filtering results
2026-02-10 22:35:54 +01:00
4gray 355b5083bd Merge pull request #759 from 4gray/style/compact-navigataion-bar
style: adjust sidebar and navigation styles for improved layout and c…
2026-02-09 23:45:52 +01:00
4gray 856f529b9a Merge pull request #758 from 4gray/feat/search-feature-improvements
Feat/search feature improvements
2026-02-08 20:40:55 +01:00
4gray d5a0136d9a Merge pull request #754 from 4gray/feat/xtream-search-and-ui-improvements
Feat/xtream-search-and-ui-improvements
2026-02-08 16:16:34 +01:00
4gray b101dfaf91 Merge pull request #751 from 4gray/fix/epg-keep-expired-items
Fix/epg-keep-expired-items
2026-02-03 07:49:43 +01:00
4gray 243213dc5b Merge pull request #750 from 4gray/refactor/optimize-m3u-module
Refactor/optimize-m3u-module
2026-02-01 22:51:53 +01:00
4gray 6b18d91ca7 Merge pull request #749 from 4gray/feat/custom-sorting-for-playlists
Feat/custom-sorting-for-playlists
2026-02-01 16:40:56 +01:00
4gray 0526d69a4c Merge pull request #747 from 4gray/refactor/xtream-stalker-code-generalization
Refactor/xtream stalker code generalization
2026-02-01 16:06:09 +01:00
4gray 25e8c78df1 Merge pull request #743 from 4gray/feat/download-manager-ui
feat: add download manager feature
2026-01-27 13:25:49 +01:00
4gray 84a2cc8822 Merge pull request #737 from 4gray/feat/playback-position-persistence
feat: playback position persistence
2026-01-23 21:08:10 +01:00
4gray d218dc0ad2 Merge pull request #730 from 4gray/fix/hls-quality-selector
fix(vjs-player): replace HLS quality plugin and add plugin guards
2026-01-14 18:03:09 +01:00
4gray 1bbad6920a Merge pull request #729 from 4gray/ci/update-github-action-files
ci: run workflows on master branch instead of nx
2026-01-12 22:25:37 +01:00
4gray d27268ca04 Merge pull request #726 from 4gray/fix/pre-release-fixes-v0-18
fix/pre-release-fixes-v0-18
2026-01-12 21:38:34 +01:00
4gray 33d8036ecc Merge pull request #724 from 4gray/refactor/store-refactoring
refactor/store-refactoring
2026-01-12 00:40:40 +01:00
4gray fcc0e558d4 Merge pull request #725 from 4gray/fix/stalker-favorites
fix/stalker-favorites
2026-01-12 00:40:24 +01:00
4gray a37192c2ad Merge pull request #721 from 4gray/feat/introduce-playlist-switcher
feat/introduce-playlist-switcher
2026-01-10 17:40:45 +01:00
4gray 2c5fc7e1ab Merge pull request #717 from 4gray/e2e-tests
e2e smoke tests
2026-01-09 15:38:45 +01:00
4gray c7fff52bc9 Merge pull request #715 from 4gray/feat/category-management-xtream
Feat/category management xtream
2026-01-09 00:28:54 +01:00
4gray 834841b549 Merge pull request #712 from 4gray/style/stalker-porta-series-view
feat: enhance favorites button and series view with loading states and improved styling
2026-01-06 17:58:13 +01:00
4gray 0a4d00c081 Merge pull request #711 from 4gray/feat/epg-improvements
feat/epg-improvements
2026-01-06 00:40:07 +01:00