asteroid/playlists
Glenn Thompson 10c75f04e1 Stream sync, countdown timer, playback state fix, buffer bloat detection
Multi-pronged attempt to fix cumulative lag between audio playback,
now-playing display, and browser notifications:

== Synchronization (work in progress) ==
- Server-side time-based metadata delay via get-listener-now-playing
  with configurable *browser-buffer-seconds* parameter
- First track after restart syncs perfectly; subsequent tracks drift
  due to browser audio buffer bloat (buffer grows unbounded over time)
- Added client-side buffer bloat detection: monitors audio.buffered
  vs audio.currentTime and auto-reconnects when buffer exceeds 15s
- Added [STREAM-SYNC], [NOTIFY], [BUFFER] diagnostic logging to
  browser console for ongoing diagnosis

== Countdown timer ==
- Server exposes remaining seconds via pipeline-track-remaining
- now-playing JSON API includes 'remaining' field adjusted for
  browser buffer delay
- Player frame shows [mm:ss] countdown next to track title
- Main page now-playing area also shows countdown with its own
  polling (15s interval) and local 1-second ticker
- LASS styles for .track-countdown and .track-countdown-mini

== Playback state fix ==
- Fixed save-playback-state saving one track ahead of what was
  actually playing (was saving the track loading during crossfade)
- Uses *pending-save-file* with one-track delay so the saved state
  reflects the track that was actually heard

== Notifications ==
- All notification conditions working correctly per diagnostic logs
- show-track-notification logs supported/permission/enabled/last/title
- Notifications fire consistently on track changes
2026-04-09 16:32:58 +01:00
..
user-submissions feat: Custom user playlists with submission and admin review 2025-12-22 21:42:06 -05:00
Asteroid-Low-Orbit-DOCKER.m3u Replace Autechre tracks with flow-state alternatives, add Underworld 2026-01-12 20:31:46 -05:00
Asteroid-Low-Orbit.m3u Replace Autechre tracks with flow-state alternatives, add Underworld 2026-01-12 20:31:46 -05:00
afternoon-orbit.m3u Fix broken file paths in all 5 scheduler playlists 2026-03-05 20:13:35 +03:00
ceres-rising.m3u fix: Scheduler retry logic + comprehensive documentation update 2026-02-10 07:16:27 -05:00
deep-focus.m3u Stream sync, countdown timer, playback state fix, buffer bloat detection 2026-04-09 16:32:58 +01:00
escape-velocity.m3u Replace Autechre tracks with flow-state alternatives, add Underworld 2026-01-12 20:31:46 -05:00
evening-descent.m3u Fix broken file paths in all 5 scheduler playlists 2026-03-05 20:13:35 +03:00
geostationary_stream_queue.m3u Replace Autechre tracks with flow-state alternatives, add Underworld 2026-01-12 20:31:46 -05:00
midnight-ambient.m3u Fix broken file paths in all 5 scheduler playlists 2026-03-05 20:13:35 +03:00
morning-drift.m3u Fix broken file paths in all 5 scheduler playlists 2026-03-05 20:13:35 +03:00
new-years-eve-2025.m3u Replace Autechre tracks with flow-state alternatives, add Underworld 2026-01-12 20:31:46 -05:00
playlist.m3u move m3u files into dedicated directory. 2025-12-07 19:44:04 -05:00
solar-flare.m3u fix: Scheduler retry logic + comprehensive documentation update 2026-02-10 07:16:27 -05:00
solstice-lights.m3u feat: Make YP directory publishing configurable via ICECAST_ENABLE_YP env var 2026-01-02 07:42:11 -05:00
stream-queue-CURATED.m3u move m3u files into dedicated directory. 2025-12-07 19:44:04 -05:00
underworld-and-friends.m3u Fix broken file paths in all 5 scheduler playlists 2026-03-05 20:13:35 +03:00