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