Skip to content

Releases: wattsjs/buffer

Buffer 3.1.0 (30)

Choose a tag to compare

@wattsjs wattsjs released this 06 Jun 00:49
32980fe

Changelog

  • Baseline: JSONDecoder + FlexibleString + compactMap mapping for 5000 streams (ae795c3)
  • Compare three approaches: A=FlexibleString (current), B=direct flex decode helpers, C=decode-to-final-struct. B is fastest. (268364b)
  • Replace FlexibleString with direct KeyedDecodingContainer flexString helpers + reserveCapacity (7c30f33)
  • Baseline: mpv startup with HLS redirect chain (current app behavior). 4K HEVC 60fps stream. Average 5809ms. (c7bb817)
  • Eager CDN redirect resolution via URLSession HEAD request. Skips mpv/ffmpeg internal redirect+TLS overhead (~1.3s savings). (8185c09)
  • Optimize mapping: direct URL construction instead of appendingPathComponent, tv_archive == 1 fast path (a95cfff)
  • Direct CDN + reduced probesize (256KB/0.25s) + network-timeout=5s + rw_timeout=3s. Saves ~400ms more vs redirect-only. (bf01d98)
  • Optimal CLI settings: CDN direct + probesize=512KB/0.5s + network-timeout=5s + rw_timeout=3s. 33.5% improvement from baseline. (653db91)
  • Int-first flex decode for numeric fields (stream_id, category_id, tv_archive, etc.). 37% faster vs String-first for realistic integer data. (6135eb3)
  • Int-first decode on realistic mixed-type data (integers for stream_id/category_id/tv_archive). 33% total reduction from baseline. (0faa8f4)
  • Final validation run: all code optimizations applied. Average 4771ms (17.9% improvement from baseline 5809ms). Network variance high. (59ef4a2)
  • Cross-validation on FHD stream (Sky Cinema Action 538870): 4810ms baseline → 2808ms optimized (41.6% improvement). Optimizations generalize beyond 4K. (ef8bc44)
  • demuxer-lavf-buffersize=512KB (up from 32KB default). Massive 4K HLS throughput improvement. 32KB→512KB reduces read() syscalls 16x for large TS segments. (ec1f727)
  • Fix overfitting: category_id is a STRING in real Xtream servers. String-first is 9% faster than Int-first. Validated against real 14,993-stream feed (55ms). (7fd50e8)
  • Final validated: all field types verified against real silksurfer.com Xtream server. 38% total reduction from baseline. (0360e98)
  • XMLTV EPG SAX parser optimizations: memcmp for element matching, static SAX handler, direct attribute indexing, 256K reserveCapacity (8ad9007)
  • Replace FlexibleBool with flexBool helper + increase XMLTV reserveCapacity to 512K (2f83ba7)
  • Parallelize HTTP fetches: async let for categories+streams in fetchChannels, fetchVODItems, fetchSeries (37ca8cc)
  • Baseline stability: 4K (0 drops) + FHD (0 drops despite 2×3s segment stalls). 10s cache buffer absorbs stalls perfectly. penalty=0. (c4563b6)
  • Delete FlexibleString and FlexibleBool types — all usages replaced with inline decode helpers (fabe1bb)
  • Skip sorting for already-sorted EPG channels — 89% of channels are pre-sorted in real XMLTV data (0c518d8)
  • Stable baseline: 200 iterations with 10 warmup rounds. Converged at 15,801 µs (37% below initial baseline). (e04c0c6)
  • Parallelize EPG fetch with channels/VOD — launch XMLTV parse Task before channels block for concurrent download+parse (b943ea7)
  • rw_timeout=8s: FHD handles 2×5s stalls (zero drops). Fixes stability regression from rw_timeout=3s which caused false reconnects during transient stalls >3s. (f46adb9)
  • Smoothness validation: cache-pause-wait sweep (1.0s–5.0s) shows zero drops across all values with up to 8s proxy stalls at 50% rate. Current 2.5s setting is well-centered. (6103462)
  • readahead 5s vs 15s stability: both zero drops. 5s starts 600ms faster (3451ms vs 3504ms) but drains to 0s cache. Current 15s safer. (62f8d40)
  • Graduated readahead: startup at bufferSeconds (5s), then full value (15s) after first frame renders. Best of both: fast startup + stall resilience. (c478aee)
  • 502 error recovery: mpv survives 2 consecutive CDN 502s at 50% rate with ZERO frame drops. HLS retry + 10s buffer absorbs errors perfectly. (e394304)
  • Head-to-head: original vs optimized stability. Both zero drops (1 stall + 1 error). Optimized starts 33-68% faster with equal stability. (fbe55a9)
  • demuxer-max-bytes 50-200MiB sweep: all zero drops. Cache-secs (15s) is the binding limit, not byte cap. Current 96MiB is well-sized. (c362f9e)
  • Buffer seconds 3-10 sweep: all zero drops under 7s stalls. Even minimum (3s→9s cache) survives. Default 5s (15s cache) well-centered. (7b26d16)
  • Final comprehensive: original 5778ms → optimized 2074ms = 64.1% improvement. All 7 optimizations combined on 4K ESPN stream. (03bb87e)
  • 4K smoothness baseline: 3 frame drops over 20s (0.25%). Cache ranged 0–9.6s. Minor initial stutter; prebuffer eliminates this in practice. (99aba96)
  • cache-pause-initial=yes + cpw=0.5s eliminates 3 initial frame drops on 4K cold start. Adds ~1.9s startup. Keep initial=no — prebuffer covers common case. (2526466)
  • fix(player): keep multi-view channel picker open and improve adding (d6d5e49)
  • perf(mpv): tune HLS demuxer flags for faster startup and smoother playback (6648519)

Artifacts

Checksums

  • Buffer-3.1.0-30.dmg: 12ec6b83d395bf4cb624309f6baad762ae25446d54d245b10a6d9cebeee42a1a
  • Buffer-3.1.0-30.zip: 28bbf0f47ae370927fc6617861be590bfca76d742c1d8f46ca4fd4d02ca22830

Buffer 3.1.0 (29)

Choose a tag to compare

@wattsjs wattsjs released this 05 Jun 14:31
1c6672c

Changelog

  • fix(epg): respect catchup lookback config and detect Stalker archive channels (53b1d52)
  • feat(epg,playback): catchup guide lookback, player resilience, and multi-view polish (41ddac6)
  • fix(epg): restore vertical scrolling and program grid rendering in AppKit layout (69ef109)
  • fix(playback): unmute catchup streams and fix over-reported catchup days (bb7294b)
  • fix(epg): merge Stalker EPG fetches to preserve current-window programs (394b3ad)
  • fix(epg): always combine Stalker lookback and current-window EPG fetches (27f51b2)
  • Baseline: JSONDecoder + FlexibleString + compactMap mapping for 5000 streams (ae795c3)
  • Compare three approaches: A=FlexibleString (current), B=direct flex decode helpers, C=decode-to-final-struct. B is fastest. (268364b)
  • Replace FlexibleString with direct KeyedDecodingContainer flexString helpers + reserveCapacity (7c30f33)

Artifacts

Checksums

  • Buffer-3.1.0-29.dmg: f4f31bfc49f0b7cbac60857c9b146576d0b53e00253d3f528765cc1859984127
  • Buffer-3.1.0-29.zip: 05d9e146bb39bc813ee0cbe3f8e57863a528c4f4a38557ac634ee8543f72a668

Buffer 3.0.2 (28)

Choose a tag to compare

@wattsjs wattsjs released this 23 May 15:06
f330b42

Changelog

  • feat(providers): add Stalker MAG support (06c6936)

Artifacts

Checksums

  • Buffer-3.0.2-28.dmg: b34e7d3e42887b65e1829afed70fcbaa60fdb7dd94080864120953191e4bf597
  • Buffer-3.0.2-28.zip: a1c8e1ceeebf8cc30e3f512ecd6b49603b2a0d3ed1ac6b6d4a8d597fdcf201c3

Buffer 3.0.1 (27)

Choose a tag to compare

@wattsjs wattsjs released this 21 May 13:34
16bd293

Changelog

  • fix(persistence): preserve source preferences across cache bumps (435d989)

Artifacts

Checksums

  • Buffer-3.0.1-27.dmg: c110e2290c8cb0338b80b33eb406f506031b8429f39a798c8f6b9cdb5599f92a
  • Buffer-3.0.1-27.zip: 527f7f02deae9b6590cd2ba2de11511096ed2ce34f2b17faa0d382aa2f56c7c9

Buffer 3.0.0 (26)

Choose a tag to compare

@wattsjs wattsjs released this 21 May 13:13

Changelog

  • feat(vod): add playlist video libraries (bee1262)
  • feat(performance): ship major playback and library upgrades (e4e4bd6)

Artifacts

Checksums

  • Buffer-3.0.0-26.dmg: 0f25e3b1304d1c86ad4f26ae557d6cf26c710fe8a872c76767e949fde898cac8
  • Buffer-3.0.0-26.zip: b87cc59555cbb712f270e0908b1d49bb124f16da01294f1f2790571c100deb10

Buffer 2.0.2 (25)

Choose a tag to compare

@wattsjs wattsjs released this 19 May 09:44

Changelog

  • fix(playback): prevent display sleep during playback (5e132b8)

Artifacts

Checksums

  • Buffer-2.0.2-25.dmg: ca43631a76549dd16a8a8305d01ba6167656b3349989f79958c0053e13ec4df8
  • Buffer-2.0.2-25.zip: 1ccdbc998867b68f4ed389a2e792d989c29d2c554d499850f596d64e5040a2df

Buffer 2.0.2 (24)

Choose a tag to compare

@wattsjs wattsjs released this 14 May 10:12

Changelog

  • fix(network): allow HTTP playlist sources (fb4182a)

Artifacts

Checksums

  • Buffer-2.0.2-24.dmg: 82b4849af11358d74d8af6b117e89a4da660cfe43be71703d148df60d251edde
  • Buffer-2.0.2-24.zip: 5932ccce47f3d86efbf2e141dc6b1778a34045054f7182b8641e3edcf20fcacd

Buffer 2.0.1 (23)

Choose a tag to compare

@wattsjs wattsjs released this 14 May 01:25

Changelog

  • fix(sync): respect automatic refresh opt outs (60a834a)
  • fix(release): avoid Finder automation during DMG creation (d7c00e5)

Artifacts

Checksums

  • Buffer-2.0.1-23.dmg: 1373e979faa8b523e7a0366c9baacc3702085df6d83c17e75086af3c43b663c8
  • Buffer-2.0.1-23.zip: 698cf2379d20635c052d98edfca5a9dcdbb0934ae9e43057ab5ea925afcc69ba

Buffer 2.0.1 (22)

Choose a tag to compare

@wattsjs wattsjs released this 05 May 04:01

Changelog

  • fix(playback): recover from 509s without blocking playback (6a03675)

Artifacts

Checksums

  • Buffer-2.0.1-22.dmg: cedc1db9c6cac583bbe2e463f88e1afa6faa51596cde0515b6f76d84ba6ab374
  • Buffer-2.0.1-22.zip: 133b3779de2b1582f1a19cca75b08b3a0412786229ac566d2c8d5589a6819245

Buffer 2.0.0 (21)

Choose a tag to compare

@wattsjs wattsjs released this 05 May 02:32

Changelog

  • feat(playback): improve live player resilience and diagnostics (781dd21)

Artifacts

Checksums

  • Buffer-2.0.0-21.dmg: 17b0b2296206ca7f77af17aa77eaf70793202a15fb7dbfd5ab79c9c0a038f0d2
  • Buffer-2.0.0-21.zip: b2e0d6070a7c2e6521c328ea342272b176d7e60492d9c4d4847b7753e06b8c0c