Scrubbing backward in a movie or episode works while it is playing.
- Rewinding only stuck if you paused first. A playing episode treated the rewind as a glitch and jumped back to the old spot. The timestamp now stays where you put it.
Movies start encoding as soon as the download has an audio track.
- The audio check was rejecting every file, so playback sat on “first video segment still being prepared” until the entire movie finished downloading. It now sees the audio track and starts.
Movies and episodes start again when the opening segment is already encoded.
- Playback was stuck on “first video segment still being prepared” with a 503, even after the video file had been created. A blank playlist no longer blocks a segment that is ready to play.
Phones try the raw live stream before re-encoding a channel.
- On a phone, live TV opens the provider’s MPEG-TS stream directly. The server only re-encodes to H.264 and AAC when the phone still cannot decode the channel.
Episodes play as video again, with sound, and without the short replay.
- Episodes were advancing as a series of still pictures. They play as normal video again, keep the stereo soundtrack, and no longer replay about a second of picture as they move forward.
Episode picture no longer repeats itself while the soundtrack plays.
- After sound came back, the picture looped for about a second at a time and then carried on. Playback now stays smooth and keeps the stereo soundtrack.
Episodes play with sound, including ones opened from a plain link.
- Episodes still played the picture with no sound. Every episode now gets a stereo soundtrack the browser can play, including playlists and plain links.
Episodes play with sound, including ones that arrive as a playlist.
- Episodes still played the picture with no sound. Playlist episodes and MP4 files now get a stereo soundtrack the browser can play.
Episodes play with sound, including MP4, and each playlist keeps its own Continue Watching.
- Episodes still played the picture with no sound, including MP4 files. Those files now get a stereo soundtrack the browser can play.
- Switching playlists no longer leaves the previous provider's Continue Watching and My List on screen. Each playlist keeps its own list, including the episode you were on.
Episodes play with sound in the browser, and Continue Watching can be removed from Live TV, Movies, and Series.
- Episodes played the picture with no sound in the browser, including MP4 files. The soundtrack was in the file; the browser was skipping it.
- Continue Watching on Live TV, Movies, and Series can be removed the same way as on Home.
Search lists every matching channel, episode rows use the real titles, and North America leaves out Chile and the Dominican Republic.
- Continue Watching can be removed from Home or the full list, including on other devices that share the account.
- Episode lists show the real episode name instead of the filename a provider attached.
- The top search bar lists every matching channel, not just one.
- North America no longer includes Chile or the Dominican Republic, including 24/7 loops named for those places. Adult and XXX categories stay hidden while that filter is on.
Episode soundtracks that are surround play in the browser.
- Episode files whose real soundtrack is surround (AC-3) were copying a stub AAC track the browser plays as silence. That mix is re-encoded to AAC instead.
Next episode during the credits advances, and an episode can start while another title is warming.
- Play next during the credits stayed on the current episode and rewound it a little. The leftover playhead from the episode being left is ignored until the next title is actually on screen.
- Episodes were stuck on 503 while a next-episode warm held an encode slot. That warm no longer counts as a viewer, so a real play can take the slot. Playback also starts from the first ready segment instead of waiting through a string of 503s.
- Repeated play/pause taps, seeks that do not land, and reloading the same page are reported so a stuck control can be traced without a support message. The API health watch mail names encode slots that are full, and provider 5xx responses.
Skip intro shows during series openings, and movies in a series can be flipped from the info page or the credits.
- Skip intro appears in the opening of an episode. Chapter marks are used when the file has them; otherwise a standard opening window is used, and skipping it remembers that timing for the show.
- A movie that belongs to a series lists the prequels and sequels from your library on its info page.
- During the credits, the next movie in that series can start after a short countdown, the same way the next episode does.
A VOD episode that hits a brief server error keeps playing instead of jumping back to the start.
- When a segment fails to load, playback retries that moment instead of restarting the episode.
- If the playhead still snaps to the opening, it is put back where you were.
Next episode and skip intro show up during series, timed to the credits and the opening.
- The next-episode card appears when the credits start, then plays the next episode after a short countdown. Watch credits stays on the ending.
- Skip intro shows when the file has chapter marks, or after you skip an opening once. Later episodes of that show reuse the same timing.
- Those times are saved per episode, so the buttons do not depend on the last few seconds of a transcode.
- While the next-episode card is up, the following episode starts encoding from the beginning — only after this episode has finished downloading.
iPhone playback controls stay tappable while a channel is playing, including mute.
- Player buttons receive taps on iPhone instead of the video layer, so pause, close, and mute work while the stream keeps playing.
- The mute icon follows the real muted state. A saved volume no longer shows muted while iPhone audio is actually on.
Marking an episode watched stays on that season, watched episodes follow your account, and a live channel that keeps freezing is restabilized.
- Checking off an episode in a later season no longer jumps the list back to season 1.
- Watched episodes sync with your Streamly account, including titles the provider didn't give a runtime for.
- A frozen live channel is recovered without jumping the live edge, then copied into a short stable window after two stuck recoveries.
A VOD episode that lost its opening segment now starts over instead of failing to load.
- Playback waits and rebuilds when the first few seconds of a cached encode are missing.
- Only one encoder runs per episode, so the opening file is not deleted mid-play.
The remaining small VOD skip was one video frame repeated at every segment edge.
- New encodes use fragmented MP4 so segment edges no longer overlap by a frame.
- An episode already on disk is encoded again the next time you play it.
The VOD skip guard now runs on the player object that was actually seeking.
- Segment-boundary jumps were still coming from the live gap controller. That is the controller that is now turned off.
VOD no longer skips ahead when a segment boundary looks like a gap.
- The player was jumping the playhead forward at each segment, and pulling that jump back made it worse. The playhead stays put.
VOD playback no longer jumps ahead a second or two at each segment.
- A brief wait at a segment boundary was seeking the playhead forward. That jump is put back, and automatic nudges stay under a fraction of a second.
Replaying an episode no longer reuses a transcode full of one-frame scraps.
- A cached episode with lots of sub-second segments is thrown out and encoded again.
- New encodes no longer insert an extra keyframe that was creating those one-frame pieces.
- While an episode is still encoding, the player keeps a steady lead instead of catching the last segment.
VOD episodes keep a buffer instead of pausing at every segment.
- Finished transcode segments stay in the playlist. Only the newest one is held back, so playback is not stuck waiting on each 5–10 second piece.
VOD downloads stay within the disk cap, and episodes no longer hitch every few seconds.
- Source files played in the last few hours are still deleted once STREAM_VOD_SOURCE_MAX_BYTES is exceeded. Only an in-flight download is kept.
- Source and HLS caches also shrink when the volume has under 8 GB free, so the disk does not have to hit 100% first.
- Capacity samples keep recording when the disk is almost full, and the collector log moves off the root volume.
- VOD episodes no longer hitch for a split second every few seconds at each segment boundary.
TV live recovers a frozen fullscreen stream the same way flipping the channel does.
- TV live HLS no longer recaps quality when the player goes fullscreen (that wedged Tizen/webOS).
- Entering or leaving fullscreen resumes playback if the TV paused MSE.
- A freeze that survives play / media recover / reload now rebuilds the player pipeline — the same teardown as flipping away and back.
Live TV search puts the event you’re looking for above generic network channels.
- Searching “ufc” ranks a channel named or playing UFC 311 above UFC Network.
- On-air programme title matches now outrank channel-name-only hits.
- Numbered event names beat generic NETWORK / Fight Pass style channels.
Mark as watched actually marks the episode, and transcode mkdir retries after a full disk.
- Series mark-watched now treats the saved 92% bookmark as completed — uneven episode runtimes used to stay unwatched.
- The episode circle fills in as soon as you tap it, including rows with no Xtream runtime.
- Xtream duration_secs sent as a string still counts, so the toggle shows on more episode rows.
- If the VPS is out of space, creating a transcode folder sweeps old HLS cache and retries (Fixes JAVASCRIPT-NEXTJS-1K).
Stop the VPS disk from filling with old HLS transcodes, and stop capacity mail from staying red after a prune.
- Finished transcodes are LRU-evicted once the HLS cache hits STREAM_TRANSCODE_MAX_BYTES (default 20 GB; 15 GB on this VPS).
- Capacity disk alerts use the latest sample, so a cache prune does not keep firing upgrade_now.
VOD transcode no longer paints a grey, color-smeared picture, and keeps encoding if you pause.
- 1080p HEVC is scaled to a 16-aligned ~540p height (not a 540-pixel-wide smear).
- x264 stays Main profile so TVs and browsers can decode the stream.
- ffmpeg waits for more of the file, then keeps encoding after pause until the episode is done.
Live TV Auto quality is no longer stuck on the lowest rung, and movies can load panel sidecar subtitles.
- Chrome/Brave live Auto now uses the best H.264/AAC variant the browser can decode, instead of pinning 480p.
- Desktop live no longer downscales to the player window size; phones and TVs still do.
- Captions button lists HLS, CEA-708, and Xtream SRT/VTT sidecar tracks when the provider sends them. Live DVB/teletext still is not available in the browser.
Episode VODs stutter less — playback stays behind the transcode instead of freezing every few seconds.
- Transcoded series wait for a few HLS segments before starting, and hide the encode tip earlier.
- Default HLS segments are 4 seconds (was 2), so a stall is less frequent if the encode is still catching up.
- More of the episode is downloaded before ffmpeg starts, so the encoder is less likely to run out of source mid-play.
Mark episodes as watched from the series page and keep finished episodes tracked.
- Each episode row has a mark-watched toggle — tap again to mark unwatched.
- Finishing playback now saves a completion bookmark instead of clearing progress.
- Resume, scrub, close, and ended events share one persist path so watch state stays consistent.
Jumping ahead in a transcoded episode no longer freezes on a Cloudflare 524.
- Mid-file encode restarts return 503 quickly instead of holding the request until Cloudflare times out.
- Playback keeps going until the new playlist is ready; 524/504 are treated as “still preparing.”
Clicking the VOD seek bar on transcoded episodes (MKV series) now jumps to that time.
- The bar uses the same duration clock as ±10s, plus Xtream episode runtime when the probe is late.
- Clicks land on the track itself — a disabled range input can no longer swallow the seek.
Seek jumps work again — fragment loads no longer crash reading playlist text.
- hls.js media segments use arraybuffer XHRs; reading responseText threw and aborted those loads.
- Duration is still read from playlist responses and headers; ±10s was never affected because those segments were already buffered.
Clicking the VOD seek bar jumps to that time instead of restarting the title.
- Seek clicks use the pointer position on the track, not the range input’s stale playhead.
- Seeks are ignored until title duration is known, so an empty bar cannot send playback to 00:00.
The VOD seek bar stays visible even when title duration is still probing.
- Player: movies and episodes always show the seek bar — a late duration probe no longer hides it.
- Transcode playlists publish #EXT-X-STREAMLY-DURATION-SEC and the client reads the tag if the duration header is missing.
- Seek track and thumb stay visible on phones and TVs (no hover-only fade).
Desktop playback keeps going when you leave the tab, and GitHub plus Ko-fi are visible in the app chrome.
- Player: desktop and phone tabs keep playing on hide; Tizen/webOS/Silk still suspend after 5s; Picture-in-Picture is never paused.
- Home, login, blog, and the logged-in banner now link the GitHub repo next to Discord.
- Sidebar and mobile More: Support opens ko-fi.com/freeforall.
TV-safe share links play without login, and production Sentry errors from stream/xtream/img are fixed.
- Pasting a TV-safe /api/stream URL in Chrome (including incognito) opens a standalone player instead of a raw playlist.
- VLC, Infuse, Kodi, and other TV players are allowed through the stream proxy UA gate.
- Share menu opens the proxied stream in a new tab; provider URLs are copied instead of opened in Chrome.
- Sentry: client-abort / pipe-reset noise, invalid Xtream server URLs, oversized HLS rewrite, Safari login NotFoundError.
- TV-safe /api/stream browser redirect uses a relative /play Location so production is not localhost.