First release under the new calver scheme (1.26.{DDD}{HHMM}), matching the Lineuparr / Channel-Mapparr / EPG-Janitor cohort. Use python3 bump_version.py to cut a new version — it keeps plugin.py and plugin.json in lockstep.
Highlights since v0.8.0
Provider-friendly pacing
- New ⏳ Per-Stream Cooldown setting (
stream_check_delay, default 2 s). Each worker waits this long after finishing a check before taking the next stream, so providers with concurrent-connection caps stop rejecting rapid re-dials as "Server Error" / "Stream Unreachable". - Retry passes wait
3 × cooldownbefore firing so upstream slots can release. - Real-world result: dropping from the old zero-delay parallel loop to 2 workers + 2 s cooldown turned a 124-stream Family group from "everything dead" into 101 alive / 23 dead (81.5%).
Cancel actually cancels
cancel_checknow stops work promptly instead of letting all 124 queued futures drain:executor.shutdown(..., cancel_futures=True)drops queued tasks.- In-worker short-circuit: if
_stop_eventis set, the worker returns aCancelledresult without launching ffprobe or waiting out the cooldown. - Retry loop and inter-pass backoff both honor
_stop_event.
- The 🛑 Cancel Check button now has a confirmation dialog that explains what cancel does (keeps already-probed results, aborts queued/in-flight work).
ETAs that match reality
- Upfront "Estimated time" message now models the real cost per stream:
(1 − dead_rate) × (analysis + overhead) + dead_rate × probe_timeout × (1 + retries) + cooldown, divided by workers. Defaults: 20 % assumed dead rate, 2 s probe overhead.- Sanity-checked against real runs: 124 streams → 23.6 min estimated vs 23.5 min actual. 14 streams → 2.7 vs 2.7.
- Runtime
view_progressETA no longer hits 100 % at the end of the first pass. When retries begin,check_progress.totalgrows to include the retry budget andcurrentadvances as each retry lands.
Plugin Hub-ready manifest
plugin.jsonnow declareslogo+icon(newlogo.png) andauthor: PiratesIRCso the plugin presents properly in the Dispatcharr v0.23+ Plugin Hub.
Settings GUI (Event-Channel-Managarr pattern)
- 28 flat settings split into 8 labeled sections via
"type": "info"dividers:
📥 Group Selection · 🔍 Check Behavior · ✏️ Dead Handling · 🐌 Low FPS · 🎬 Format Suffixes · 🔗 Webhook · ⏰ Scheduling · ⚙️ Advanced - All 18 actions now have consistent
button_variant+button_color+ emojibutton_label:outline/blue for diagnostics (Validate, View Progress, View Results, …)outline/orange for cleanup (Cancel Check, Cleanup Orphaned Tasks)filled/green for primary actions (Load Groups, Start Stream Check, Save Schedule, Export CSV)filled/red for destructive (rename/move/delete), all still gated byconfirmdialogs.
Notification messages
- Success toasts from Load Groups and Start Stream Check are now single-line and avoid redundant ✅ prefixes (the frontend already paints the toast green for success / red for error).
Versioning change
0.X.Y semver → calver 1.26.{DDD}{HHMM} (UTC day-of-year + UTC hour-minute). Sibling cohort: Lineuparr, Channel-Mapparr, EPG-Janitor.
bump_version.py automates the bump; never hand-edit the version strings.
Commits since v0.8.0
5854dd3v1.26.1081815 — Realistic ETA: model cooldown, dead rate, retries5fdadd4v1.26.1081725 — Confirm dialog on Cancel Stream Check238bc30v1.26.1081724 — Make Cancel Stream Check actually cancel work86c2269v1.26.1081717 — Section headers and consistent button grammare41eff5Adopt calver versioning (1.26.DDDHHMM) with bump_version.py64e013cv0.8.1 — Per-stream cooldown to respect provider concurrency limitsb34de62Add logo, simplify notification messages
Full Changelog: 0.8.0...1.26.1081815