Releases: wattsjs/buffer
Releases · wattsjs/buffer
Release list
Buffer 3.1.0 (30)
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
- DMG:
Buffer-3.1.0-30.dmg - Sparkle ZIP:
Buffer-3.1.0-30.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-3.1.0-30.dmg:12ec6b83d395bf4cb624309f6baad762ae25446d54d245b10a6d9cebeee42a1aBuffer-3.1.0-30.zip:28bbf0f47ae370927fc6617861be590bfca76d742c1d8f46ca4fd4d02ca22830
Buffer 3.1.0 (29)
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
- DMG:
Buffer-3.1.0-29.dmg - Sparkle ZIP:
Buffer-3.1.0-29.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-3.1.0-29.dmg:f4f31bfc49f0b7cbac60857c9b146576d0b53e00253d3f528765cc1859984127Buffer-3.1.0-29.zip:05d9e146bb39bc813ee0cbe3f8e57863a528c4f4a38557ac634ee8543f72a668
Buffer 3.0.2 (28)
Changelog
- feat(providers): add Stalker MAG support (06c6936)
Artifacts
- DMG:
Buffer-3.0.2-28.dmg - Sparkle ZIP:
Buffer-3.0.2-28.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-3.0.2-28.dmg:b34e7d3e42887b65e1829afed70fcbaa60fdb7dd94080864120953191e4bf597Buffer-3.0.2-28.zip:a1c8e1ceeebf8cc30e3f512ecd6b49603b2a0d3ed1ac6b6d4a8d597fdcf201c3
Buffer 3.0.1 (27)
Changelog
- fix(persistence): preserve source preferences across cache bumps (435d989)
Artifacts
- DMG:
Buffer-3.0.1-27.dmg - Sparkle ZIP:
Buffer-3.0.1-27.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-3.0.1-27.dmg:c110e2290c8cb0338b80b33eb406f506031b8429f39a798c8f6b9cdb5599f92aBuffer-3.0.1-27.zip:527f7f02deae9b6590cd2ba2de11511096ed2ce34f2b17faa0d382aa2f56c7c9
Buffer 3.0.0 (26)
Changelog
- feat(vod): add playlist video libraries (bee1262)
- feat(performance): ship major playback and library upgrades (e4e4bd6)
Artifacts
- DMG:
Buffer-3.0.0-26.dmg - Sparkle ZIP:
Buffer-3.0.0-26.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-3.0.0-26.dmg:0f25e3b1304d1c86ad4f26ae557d6cf26c710fe8a872c76767e949fde898cac8Buffer-3.0.0-26.zip:b87cc59555cbb712f270e0908b1d49bb124f16da01294f1f2790571c100deb10
Buffer 2.0.2 (25)
Changelog
- fix(playback): prevent display sleep during playback (5e132b8)
Artifacts
- DMG:
Buffer-2.0.2-25.dmg - Sparkle ZIP:
Buffer-2.0.2-25.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-2.0.2-25.dmg:ca43631a76549dd16a8a8305d01ba6167656b3349989f79958c0053e13ec4df8Buffer-2.0.2-25.zip:1ccdbc998867b68f4ed389a2e792d989c29d2c554d499850f596d64e5040a2df
Buffer 2.0.2 (24)
Changelog
- fix(network): allow HTTP playlist sources (fb4182a)
Artifacts
- DMG:
Buffer-2.0.2-24.dmg - Sparkle ZIP:
Buffer-2.0.2-24.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-2.0.2-24.dmg:82b4849af11358d74d8af6b117e89a4da660cfe43be71703d148df60d251eddeBuffer-2.0.2-24.zip:5932ccce47f3d86efbf2e141dc6b1778a34045054f7182b8641e3edcf20fcacd
Buffer 2.0.1 (23)
Changelog
- fix(sync): respect automatic refresh opt outs (60a834a)
- fix(release): avoid Finder automation during DMG creation (d7c00e5)
Artifacts
- DMG:
Buffer-2.0.1-23.dmg - Sparkle ZIP:
Buffer-2.0.1-23.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-2.0.1-23.dmg:1373e979faa8b523e7a0366c9baacc3702085df6d83c17e75086af3c43b663c8Buffer-2.0.1-23.zip:698cf2379d20635c052d98edfca5a9dcdbb0934ae9e43057ab5ea925afcc69ba
Buffer 2.0.1 (22)
Changelog
- fix(playback): recover from 509s without blocking playback (6a03675)
Artifacts
- DMG:
Buffer-2.0.1-22.dmg - Sparkle ZIP:
Buffer-2.0.1-22.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-2.0.1-22.dmg:cedc1db9c6cac583bbe2e463f88e1afa6faa51596cde0515b6f76d84ba6ab374Buffer-2.0.1-22.zip:133b3779de2b1582f1a19cca75b08b3a0412786229ac566d2c8d5589a6819245
Buffer 2.0.0 (21)
Changelog
- feat(playback): improve live player resilience and diagnostics (781dd21)
Artifacts
- DMG:
Buffer-2.0.0-21.dmg - Sparkle ZIP:
Buffer-2.0.0-21.zip - Sparkle appcast: https://raw.githubusercontent.com/wattsjs/buffer-updates/main/appcast.xml
Checksums
Buffer-2.0.0-21.dmg:17b0b2296206ca7f77af17aa77eaf70793202a15fb7dbfd5ab79c9c0a038f0d2Buffer-2.0.0-21.zip:b2e0d6070a7c2e6521c328ea342272b176d7e60492d9c4d4847b7753e06b8c0c