mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-15 21:56:18 -08:00
Merge origin/master into claude/parental-control-feature-31dde2
Resolves the settings-store defaults split, the electron-conf key list and the guidance reorganization (CLAUDE.md now imports AGENTS.md; the parental lock contract is linked from the agent context map instead). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
commit
ae5d3f49de
732 files changed
+42572
-15380
No files matched your search
@@ -1,9 +0,0 @@
|
||||
---
|
||||
type: internal
|
||||
area: dashboard
|
||||
---
|
||||
|
||||
The dashboard's live "now playing" time range and progress bar now read
|
||||
pre-computed EPG timestamps as unix seconds, matching the rest of the EPG
|
||||
code. Today's dashboard lookups never carry those fields, so nothing changes
|
||||
on screen; this closes the gap before a future data path supplies them.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: perf
|
||||
area: database
|
||||
issues: [1292]
|
||||
---
|
||||
|
||||
Refreshing or removing a large Xtream playlist is several times faster: the
|
||||
"Removing cached content" stage and the re-import now commit around 5,000
|
||||
rows at a time instead of 100, and progress updates arrive at most ten times a
|
||||
second instead of once per batch.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: database
|
||||
issues: [1580]
|
||||
---
|
||||
|
||||
Updating directly from older versions no longer blocks playlist loading with a missing database column error. Existing sources, favorites, and playback history are preserved.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: internal
|
||||
area: deps
|
||||
---
|
||||
|
||||
Closes the four open Dependabot alerts on transitive npm dependencies via
|
||||
pinned pnpm overrides: browserslist (crash on untrusted stats), @xmldom/xmldom
|
||||
(XML fragment injection — its existing override target had itself fallen into
|
||||
the advisory range), @humanfs/node (recursive copy follows symlinks out of the
|
||||
tree) and postcss-selector-parser (AST recursion DoS).
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: downloads
|
||||
---
|
||||
|
||||
Download completed Xtream catch-up programmes as TS files from Live TV programme details. Find them in Downloads with the channel and broadcast date and play them offline. Interrupted archive downloads restart from the beginning.
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: embedded-mpv
|
||||
highlight: Embedded MPV reconnects dropped streams
|
||||
---
|
||||
|
||||
The embedded MPV player now reloads a live stream that drops mid-playback on
|
||||
its own, with increasing delays and an "attempt N of 6" line instead of a
|
||||
dead error screen; a new Settings > Playback toggle turns this off. The same
|
||||
section gains an advanced field for extra libmpv options (one key=value per
|
||||
line) that applies on every engine, with a short network timeout on by default.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: embedded-mpv
|
||||
---
|
||||
|
||||
When a stream refuses the connection, the embedded MPV player (frame-copy
|
||||
engine) no longer hands the URL to yt-dlp before giving up: the failure
|
||||
shows up right away and its error no longer reads "youtube-dl failed:
|
||||
unexpected error occurred", matching the native-view engines and the
|
||||
external MPV player.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: epg
|
||||
---
|
||||
|
||||
Copy a catch-up programme’s URL from its EPG details in Xtream and supported M3U sources, including Favorites and Recent, without interrupting playback. The link can be used in an external player or download tool.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: epg
|
||||
issues: [50]
|
||||
---
|
||||
|
||||
EPG settings now include a display-only time offset, making it easy to correct provider feeds with missing or incorrect timezone information without re-importing the guide.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: epg
|
||||
issues: [1586]
|
||||
---
|
||||
|
||||
EPG guides now load when a server adds gzip compression to an already compressed XMLTV file. Sources using a single gzip layer continue to work.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: epg
|
||||
issues: [171]
|
||||
highlight: Programme guide, rebuilt
|
||||
---
|
||||
|
||||
The programme guide now shows your playlist's own channels in their order,
|
||||
with the current group or favorites one click away. Click a channel to
|
||||
switch playback while the player stays on screen above the grid;
|
||||
double-click switches and closes. Open it from the new Guide button, the
|
||||
header, the command palette, or the G key. Hide channels without EPG and
|
||||
pick comfortable or compact rows.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: epg
|
||||
---
|
||||
|
||||
Removing and saving an EPG source now clears its cached programmes, including data left by previously removed sources on restart. Other configured sources and playlist guides are preserved, and Live TV stops showing programmes from the removed source.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: epg
|
||||
---
|
||||
|
||||
The EPG timeline toolbar is more compact: "Now" is an icon button, and the zoom slider is replaced by a single button that cycles day overview → by hour → detailed. Ctrl/⌘ + scroll (or a trackpad pinch) over the timeline zooms smoothly around the cursor. The channel and programme title now use all the space the controls free up.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: host-health
|
||||
issues: [1439]
|
||||
---
|
||||
|
||||
Portal recovery now waits for an active probe to finish before sending another request, even when redirects or a slow response take longer than 45 seconds. Completed and cancelled requests release the probe slot reliably.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: live-tv
|
||||
issues: [1458]
|
||||
---
|
||||
|
||||
A hidden channel list no longer looks like a playlist that lost its channels: the player now says the list is hidden and offers a "Show channels list" button, a toggle in the workspace header stays in place in both states, and hiding the list in one place (M3U player, portal Live TV, favorites/recent) no longer hides it everywhere else.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: m3u
|
||||
---
|
||||
|
||||
ClearKey channels with ordinary Base64 keys now play when imported or refreshed, including JSON playlist exports that use + and / characters. Refresh an existing playlist once to apply the fix.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: m3u
|
||||
issues: [1590]
|
||||
---
|
||||
|
||||
DASH channels, including ClearKey-protected streams, now play from Recently Viewed and Favorites using the compatible built-in player. Existing imports keep their DRM keys without needing to re-import the playlist.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: m3u
|
||||
issues: [465, 1120]
|
||||
---
|
||||
|
||||
M3U URL imports now accept a custom User-Agent for providers that require it before downloading the playlist. The value is saved and reused for playlist refreshes in the desktop app and self-hosted web app.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: m3u
|
||||
---
|
||||
|
||||
Movies and episodes recognized as video files in M3U playlists now offer playback time and seeking in built-in players, even when TMDB or movie details are disabled. Seeking remains dependent on the source's support.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: migration
|
||||
issues: [1504]
|
||||
---
|
||||
|
||||
Upgrades from older desktop versions retain all sources from the legacy profile. Already-upgraded users can choose to recover missing sources without replacing current sources or settings. Migration keeps the original data and retries safely after a failed write.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: migration
|
||||
---
|
||||
|
||||
Startup now shows a theme-aware preparation screen while loading sources and checking a large programme guide. Temporary source-read failures retry automatically; if loading still fails, you can retry without restarting the app. Recovery also completes any previously failed programme-guide cleanup before opening the library.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: packaging
|
||||
---
|
||||
|
||||
AppImage builds now include an update source for AppManager, allowing it to discover new GitHub releases and download full application updates without manually configuring the repository.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
The built-in player controls now hide on their own after you click a button
|
||||
in the bar with the mouse, such as fullscreen or mute. Previously the clicked
|
||||
button kept the bar pinned on screen until you clicked the video, which also
|
||||
paused it. Applies to the shared controls in the web players and the
|
||||
Embedded MPV frame-copy engine.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: playback
|
||||
---
|
||||
|
||||
Playback errors now explain confirmed access and DRM license failures, with stream codecs, DRM systems and failure stages in the details. Copy diagnostics creates a support report without stream URLs or credentials. No extra requests are made to your provider.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
Arrow keys and the ±10 s buttons in the Embedded MPV player now move by their
|
||||
full step every time. Pressing an arrow repeatedly, or holding it, used to
|
||||
advance only about a second per press because each step was computed from a
|
||||
stale position; steps are now relative seeks executed by mpv itself, so rapid
|
||||
presses add up.
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: playback
|
||||
issues: [48]
|
||||
highlight: Channel list in fullscreen
|
||||
---
|
||||
|
||||
Rest the mouse on the left edge (tap it on touch) or press C while a live
|
||||
channel plays fullscreen: the channel list (M3U all/groups/favorites/recent,
|
||||
Xtream, Stalker, global favorites) slides over the video with search, so you
|
||||
can zap without leaving fullscreen. Nothing covers the video while it is
|
||||
closed. M3U playlists also zap with PageUp/PageDown.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
The fullscreen channel panel stays open under the pointer when its opening animation is delayed, instead of closing before the list appears.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
With the default shared player controls, the built-in player now stays in
|
||||
fullscreen when you switch to another episode, when the next episode starts
|
||||
automatically, and when a live channel or an alternative movie source is
|
||||
switched — previously every switch dropped back to the page. The legacy
|
||||
vendor-controls opt-out keeps its previous behavior.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
Switching channels or leaving playback now closes the old picture-in-picture window in HTML5, Video.js, and ArtPlayer even when shared player controls are disabled, preventing frozen or outdated video from remaining on top. This includes Safari’s legacy picture-in-picture mode.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
issues: [1530]
|
||||
---
|
||||
|
||||
Embedded MPV controls and programme-guide panels now follow the visual theme and stay readable in light and dark mode. Video overlays retain their contrasting dark backgrounds.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
The built-in HTML5 player now plays `.mkv`, `.webm`, `.avi`, `.mov` and other
|
||||
non-HLS video files directly instead of handing them to the HLS engine, which
|
||||
failed with a "network or provider loading error" on many Xtream episodes and
|
||||
movies. ArtPlayer and the HTML5 player now choose their engine by the same rule.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
Keyboard shortcuts work again right after you click a button in the built-in
|
||||
player controls. Previously the clicked button kept the keyboard: after
|
||||
clicking fullscreen, Space left fullscreen instead of pausing, and the seek,
|
||||
volume and mute keys did nothing until you clicked the video. Applies to the
|
||||
shared controls in the web players and the Embedded MPV frame-copy engine.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
---
|
||||
|
||||
With IPTVnator's shared controls turned off, the Video.js player's keyboard
|
||||
shortcuts now work again right after you click a button in its control bar.
|
||||
Previously the clicked button kept the keyboard: after clicking fullscreen,
|
||||
Space left fullscreen instead of pausing, and the seek, volume and mute keys
|
||||
did nothing until you clicked the video.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playback
|
||||
issues: [871]
|
||||
---
|
||||
|
||||
VLC now opens without an extra console window on Windows when playback progress tracking or Reuse VLC instance is enabled.
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: playback
|
||||
highlight: See what a stream really is while it plays
|
||||
---
|
||||
|
||||
The player overlay now shows stream information: resolution, playback and source
|
||||
frame rates, stream and codec bitrates, audio details, buffer and dropped frames.
|
||||
Available in built-in web players and experimental frame-copy Embedded MPV.
|
||||
Unknown or unavailable values stay hidden; measured frame rates reflect dropped frames and
|
||||
stalls.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: playlist
|
||||
---
|
||||
|
||||
Desktop users can review inactive sources and delete selected ones together. The dialog checks the whole library, preselects confirmed expired or disabled accounts, and lets you keep individual sources. Busy sources are skipped, and deletion results are reported individually.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: playlist
|
||||
---
|
||||
|
||||
Desktop playlist lists now show availability for Stalker portals and M3U links alongside Xtream accounts. Checks share cached results, run in the background, and explain when a source could not be verified.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: playlists
|
||||
---
|
||||
|
||||
Opening an M3U playlist immediately after refreshing now waits for its pending save, so the channel list does not revert to the previous catalog.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: portals
|
||||
issues: [1438]
|
||||
---
|
||||
|
||||
Xtream and Stalker portals no longer enter a connection cooldown merely because several parallel requests fail in the same millisecond. This fixes false unavailability in both the desktop app and the self-hosted web version.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: portals
|
||||
---
|
||||
|
||||
Desktop settings now let you disable the temporary pause after repeated Xtream or Stalker connection failures, without restarting. Account info explains when requests are paused and offers an immediate retry.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: portals
|
||||
issues: [1520]
|
||||
---
|
||||
|
||||
Xtream and Stalker keep remote channel order while you browse other categories or search. Use Show playing channel to return to the current channel without restarting playback. Stalker radio supports the same behavior.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: portals
|
||||
---
|
||||
|
||||
Live TV panels now fold in steps: hide only the categories rail and keep the
|
||||
channel list, or hide both for a player-only view. With categories hidden, the
|
||||
list header becomes a category dropdown, so switching categories stays one
|
||||
click away, and hiding both panels then bringing them back returns to the
|
||||
level you had before.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
type: feature
|
||||
area: shell
|
||||
issues: [1455]
|
||||
---
|
||||
|
||||
Settings → General has a new "Window on startup" option: open the desktop app
|
||||
at its last size, maximized, or fullscreen — handy on a TV or HTPC. Starting
|
||||
with `--fullscreen` forces a single fullscreen launch without changing the
|
||||
setting, and F11 now toggles fullscreen anywhere in the app.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: stalker
|
||||
issues: [1543]
|
||||
---
|
||||
|
||||
Stalker Live TV search stays within the selected category in the sidebar and fullscreen panel, including channels beyond the first page. All Items searches the whole catalog, and the two search fields work independently.
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: stalker
|
||||
---
|
||||
|
||||
In Stalker portals, switching the Live TV or radio category in the sidebar no
|
||||
longer stops the channel that is playing. The category only changes which
|
||||
channels are listed, matching how Xtream portals and M3U playlists already
|
||||
behave.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: stalker
|
||||
---
|
||||
|
||||
Stalker series with season markers such as “s02” or “2 сезон” now show the correct season in tabs and episode labels while preserving watch progress. TMDB updates no longer reset loaded episodes, and delayed portal responses cannot mix episodes from different series.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: stalker
|
||||
---
|
||||
|
||||
Seeking in Stalker movies and series now reaches the selected position instead of jumping forward or skipping to the next episode after resuming playback.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: ui
|
||||
issues: [1506]
|
||||
---
|
||||
|
||||
Live TV now supports keyboard movement between categories and channels, and channel lists keep scrolling after mouse selection. Channel scrollbars and resize handles are independently accessible. Movie and series details support immediate keyboard scrolling and no longer hide their scrollbars.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: ui
|
||||
---
|
||||
|
||||
Detail buttons, episode cards and episode rows now keep visible backgrounds and borders in the light theme. The grid/list switch also clearly highlights the selected view in both themes.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: ui
|
||||
issues: [1570]
|
||||
---
|
||||
|
||||
Movie and series detail pages keep their Back button visible while scrolling. Escape closes the inline player to the description, then returns to the previous view. Open menus, dialogs and fullscreen retain priority.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: web-backend
|
||||
issues: [1436]
|
||||
---
|
||||
|
||||
The self-hosted backend now checks every provider redirect and pins connections to validated addresses, preventing redirects or DNS changes from bypassing private-network restrictions. Trusted LAN access remains available through the existing opt-in.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: xtream
|
||||
issues: [1513]
|
||||
---
|
||||
|
||||
Xtream Live TV in Auto can try advertised TS once when HLS initially fails with an HTTP error in a web player. The selected player and stream headers are kept. Settings explain the manual TS workaround for external players, Embedded MPV, and HLS retries that never report a terminal failure.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: xtream
|
||||
issues: [1562]
|
||||
---
|
||||
|
||||
Catch-up (timeshift) from the Favorites and Recent tabs now asks the panel for the programme you clicked: the start time is rendered in the panel's own timezone instead of your computer's. The panel's timezone is remembered per source, survives restarts, and panels that report an unusual timezone name are handled through their clock.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: xtream
|
||||
issues: [812, 816]
|
||||
---
|
||||
|
||||
Xtream category management now selects or deselects only matching categories while searching, preserving the visibility of all other categories. Button labels and availability reflect the search results, and the counter clearly shows the total selected.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: xtream
|
||||
---
|
||||
|
||||
The explicit HTTPS and HTTP connection test now detects Xtream portals that accept HTTP when HTTPS is unavailable and fills in the working address before you save. The saved address is used for catalog updates, provider EPG and playback. Connection failures now show a more specific explanation.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
type: fix
|
||||
area: xtream
|
||||
---
|
||||
|
||||
The Xtream sync panel now keeps its status text, labels and Stop sync button clearly readable in both light and dark themes.
|
||||
Reference in new issue
Block a user