github PiratesIRC/Dispatcharr-IPTV-Checker-Plugin 1.26.1081815
v1.26.1081815 — Provider-aware pacing, honest ETAs, working cancel

7 hours ago

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 × cooldown before 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_check now 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_event is set, the worker returns a Cancelled result 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_progress ETA no longer hits 100 % at the end of the first pass. When retries begin, check_progress.total grows to include the retry budget and current advances as each retry lands.

Plugin Hub-ready manifest

  • plugin.json now declares logo + icon (new logo.png) and author: PiratesIRC so 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 + emoji button_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 by confirm dialogs.

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

  • 5854dd3 v1.26.1081815 — Realistic ETA: model cooldown, dead rate, retries
  • 5fdadd4 v1.26.1081725 — Confirm dialog on Cancel Stream Check
  • 238bc30 v1.26.1081724 — Make Cancel Stream Check actually cancel work
  • 86c2269 v1.26.1081717 — Section headers and consistent button grammar
  • e41eff5 Adopt calver versioning (1.26.DDDHHMM) with bump_version.py
  • 64e013c v0.8.1 — Per-stream cooldown to respect provider concurrency limits
  • b34de62 Add logo, simplify notification messages

Full Changelog: 0.8.0...1.26.1081815

Don't miss a new Dispatcharr-IPTV-Checker-Plugin release

NewReleases is sending notifications on new releases.