What's New
🔒 Fixed a multi-worker race in Now Playing's viewer detection
- Every Dispatcharr worker process ran Tickarr's background poller independently with no coordination — a single viewer connecting could trigger 2+ simultaneous profile clones and restarts for the same channel
- Now uses a Redis-based leader-election lock so only one worker runs the poller, sports sweep, EAS sweep, and now-playing sweep loops
⏱️ Fixed on-demand restart timing
- The overlay restart used to fire the instant a channel reached "active" state — exactly the moment a player transitions from buffering to playing, guaranteeing an interruption
- Now waits up to 20 seconds for the channel to go active, then gives it a 5-second grace period of real playback before restarting for the profile swap
- Significantly reduces playback interruptions on players sensitive to mid-stream restarts (Plex, some web/VLC setups)
🆕 Always On trigger mode for Now Playing
- Previously on-demand only; now supports the same Trigger Mode choice as Custom Text and Sports Ticker
- Always On assigns the overlay profile permanently at enable time, before any viewer connects — eliminates the restart-on-connect entirely
- Steady-state cost is unchanged: FFmpeg only runs while a channel is actively connected, regardless of trigger mode
📖 Documentation
- Clarified that Now Playing requires a genuinely audio-only base profile — no
-c:v/-vcodecflag, not even-c:v copy— since Tickarr generates its own video canvas for the overlay and misclassifies profiles carrying a leftover video flag - Added an example audio-only profile and a Trigger Mode reference entry to the User Guide
Bundled Files
This release includes: plugin.py, plugin.json, logo.png, eas_tone.wav, eas_tone_ca.wav, ca_city_names.json, channels.json, channel_aliases.json
Checksums
SHA-256: 2a4a7192bf6b21e98094b450938f8f90a159b7ab7594dc47591cfb55ccd20fa1
MD5: fc6498692454c22fa910b3236c5a34b5