Skip to content

Releases: jstevenscl/ticker

v0.5.03

Choose a tag to compare

@jstevenscl jstevenscl released this 13 Sep 05:40

Fixed

  • EAS stale-id safety bug: after a channel/database migration or reimport, saved EAS Apply-To ids could go stale β€” either matching nothing ("No channels found") or, worse, silently pointing at a different live channel and having its stream profile flipped/restarted. _resolve_channels() now names the stale id in its error message, and _mapping_identity_ok() refuses to act on any saved mapping whose recorded channel name no longer matches the channel currently at that id (enable/disable/test EAS + EAS Canada, and Disable All).
    • If you're affected: re-open EAS Weather Alerts (and Weather Canada) settings, re-select your Apply To channel/group, and run Save Settings once.

Added

  • Per-severity EAS display cadence: three new Display Interval settings (Moderate/Severe/Extreme, seconds, 0 = constant) plus a shared Display Duration, under EAS Shared Settings. Lets a low-severity alert (e.g. a Heat Advisory) flash on screen periodically instead of scrolling for the alert's entire duration, while Severe/Extreme can stay constant. Independent of the siren tone's own interval.

v0.5.02

Choose a tag to compare

@jstevenscl jstevenscl released this 08 Sep 16:42

Fixed

  • Satellite radio channel-name matching bug in `_match_channel()` (used by Sort Channels, Fill EPG, and Assign Logos). Channel names weren't stripped of stray leading/trailing whitespace before comparison, and the normalized-key fallback couldn't match multi-word names against the catalog dict. On a real-world install this caused 242 of 441 SiriusXM channels to be skipped β€” landing outside the intended number block with no station-number prefix and an order that looked scrambled relative to the correctly-matched channels.
  • Corrected the stale "Refresh Channel Data" action description, which undersold that it repairs channels with no satellite radio station match β€” exactly the fix for "no now-playing data" reports.

Added

  • Save Settings action: a no-op action that exists purely to force Dispatcharr to persist the Settings tab. Dispatcharr's plugin framework only writes Settings to disk alongside an Action run, not on field change β€” a setting toggled and left alone (dialog closed, no action run) silently reverts to its old value next session. Click Save Settings after changing anything in Settings if you're not about to run another action. A warning banner now also appears at the top of the Settings tab, and the User Guide has a new Troubleshooting entry ("Settings changes not saving").

SHA-256: 09b3c746026747d954f35071be827b4183dba805d07aee21fafc3deb8ce9ae30
MD5: e3d85d9d5bdb782701482dc1f85f05c5

v0.5.01

Choose a tag to compare

@jstevenscl jstevenscl released this 05 Sep 16:59

Adds Migrate from Tickarr: a one-time bridge-migration action for users still running the pre-v0.5.00 Tickarr plugin alongside Ticker. See docs/USERGUIDE.md#upgrading-from-the-old-tickarr-plugin for details.

SHA-256: d052b2bc110d75959f715bda3813d0bb11de54341f48c202295bc9ceb8ed5445
MD5: d780ae1b75d76ba6f5ffaca17bd3dc63

v0.5.00

Choose a tag to compare

@jstevenscl jstevenscl released this 04 Sep 16:57

Ticker v0.5.00 β€” project renamed from Tickarr to Ticker

Full rebrand: repos, docs, and the plugin's on-disk key/data directory all
renamed Tickarr β†’ Ticker. This is a breaking change β€” Dispatcharr sees
this as a brand-new plugin. Existing installs must:

  1. Remove the old tickarr plugin folder from /data/plugins/.
  2. Install this release fresh under the new ticker plugin key.
  3. Reconfigure Now Playing / Sports Ticker / EAS channel mappings β€” old
    mappings.json data does not carry over.

Also includes the SiriusXM lineup-change fix from the previous release:
live channel-catalog fetch from StellarTunerLog instead of a stale bundled
snapshot, plus corrected aliases for channels SiriusXM renamed/moved.

Checksums (ticker-0.5.00.zip):

  • MD5: 223d3e284f353426956f53d0ffdab8e6
  • SHA256: 7d8c1daf4e9f80d9c3b8b32fcd7341738ec454ab9469cc37e7527c5ff668411b
  • Size: 2185482 bytes

v0.4.02

Choose a tag to compare

@jstevenscl jstevenscl released this 30 Aug 04:56

Fixed

  • Corrupt or transiently-unreadable mappings.json no longer spams ERROR logs forever. Genuinely corrupt content (unparseable JSON) is now backed up and self-healed to an empty mapping set on first read. A transient I/O error (file lock, permission blip, race with a concurrent writer) is logged once and does not touch or reset the file, so valid mapping data can't be destroyed by a passing glitch.

Compatibility

  • Reviewed against Dispatcharr v0.30.0's release notes, in particular the logo-assignment changes (Logo model auto-truncation, upload-endpoint 409/overwrite behavior). Tickarr assigns logos directly via the Django ORM, not the REST upload endpoint, so none of that applies β€” no code changes were needed for v0.30.0 compatibility.

Checksums

  • md5: 5f573ddf716712c975bbcea70f47689a
  • sha256: 7a43f404102f07e062856666f1ee75688d0625a0c0d13d8a42e867e09d14c907
  • size: 2185337 bytes

v0.4.01

Choose a tag to compare

@jstevenscl jstevenscl released this 20 Aug 20:24

Patch release: demoted a noisy sweep log line (tickarr: sweep N active, M stale (of T)) from INFO to DEBUG β€” it was firing every 15-second sweep cycle whenever there was anything to poll. No behavior change.

Checksums

  • MD5: 588a60d63980c1238d04a95a47d8bda5
  • SHA-256: a1a7e779d320956055dfc1e8c884df01f6e847d764810f217685b99880a60173

v0.4.0 β€” Shared Stream Profiles ({channelId})

Choose a tag to compare

@jstevenscl jstevenscl released this 14 Aug 06:25

What's New

πŸš€ Shared stream profiles β€” no more per-channel clones

  • Dispatcharr v0.29.0 added a {channelId} StreamProfile substitution token (closing #1252, filed by this project). Tickarr now uses it: instead of cloning one StreamProfile per enabled channel (previously up to 424 clones for the full SiriusXM lineup), all channels using the same overlay configuration now share a single StreamProfile.
  • Applies to every overlay type: Now Playing, Custom Text, Sports Ticker, and EAS/JAS Weather Alerts (USA + Canada).
  • On Dispatcharr versions before v0.29.0, Tickarr automatically detects the missing token support and falls back to the previous per-channel-clone behavior β€” no action needed.

πŸ”§ New action: Migrate to Shared Profiles

  • One-time migration for existing installs to consolidate old per-channel clones into the new shared-profile model.
  • Safe by design: profiles are only deleted once nothing still references them, so a legacy profile shared by multiple channels is never removed out from under the others.

πŸ“š Documentation

  • docs/USERGUIDE.md rewritten to document shared-vs-per-channel profile behavior and the upgrade path.
  • New screenshots throughout the README and 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: a3d42671af1d3051ded55c0f2bcbb36cb06bc12d44d22a1b8eefd83a067b0e77
MD5:     05e10e6e318c5f6d324d84c300e6c08f

v0.3.06

Choose a tag to compare

@jstevenscl jstevenscl released this 28 Jul 22:55

What's New

πŸ› Fixed Siren Tone Interval not actually disabling at 0

  • The setting's minimum was hard-floored to 30 seconds in both the form field and the code, so setting it to 0 (documented as "disable the tone entirely") silently had no effect β€” the tone kept firing every 30s during any active alert
  • Now 0 is respected end-to-end: no tone audio is injected into the cloned EAS profile

πŸ“š Documentation

  • Added a note explaining that Dispatcharr auto-sync can silently revert a Tickarr-cloned stream profile back to a channel group's configured default on every M3U refresh, and how to fix it
  • Added docs/CANADA_CITY_CODES.md β€” full list of all 844 Weather Canada city codes, browsable directly on GitHub instead of only through the in-app City Lookup action
  • Explained why there's no external lookup site for Canadian codes the way NWS/weather.gov provides for US zone codes

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: e76a22c2f7ed006ae4c019b0f37934aa8fc795a6174fb263e08f86408e5c22e0
MD5:     aeff7556515fe838cc3b098c81a3acef

v0.3.05

Choose a tag to compare

@jstevenscl jstevenscl released this 25 Jul 17:24

What's New

πŸ› Fixed Absolute mode placing unmatched channels ahead of real matches

  • Unmatched and duplicate-match-loser channels were filling free slots starting from the bottom of the reserved block (Sort Start Number, Sort Start Number+1, ...) instead of after the highest real match
  • Since SXM's own numbering starts at station 2, those low slots are never claimed by a real station β€” this bug backfilled them with unrelated content instead of leaving them for real stations or placing it at the end
  • Found via a real user report: a channel with a duplicate name landed at the very first slot instead of right after its real match
  • Now fills starting right after the highest real matched station, confirmed by reproducing the exact reported scenario before shipping

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: fd3396c4438e0a3ca00a5851bf8a114e152f2c478dc16c1f41297d1b039f896b
MD5:     e9922ddeb92fa03bd9a41f198d620056

v0.3.04

Choose a tag to compare

@jstevenscl jstevenscl released this 25 Jul 15:08

What's New

πŸ”„ Fixed SiriusXM EPG never auto-refreshing

  • The EPG source was created with refresh_interval left at 0 (disabled), so Dispatcharr's Celery Beat task was never enabled β€” the guide simply never refreshed for anyone
  • Now set to 24 hours on creation, with a one-time backfill so existing installs pick up the fix automatically on next Fill

πŸ”’ Absolute SXM channel numbering

  • New Numbering Mode on Sort Channels: Sequential (unchanged default, no gaps) or Absolute β€” channel number = Sort Start Number + real SXM station number, e.g. start 15000 + station 36 -> 15036
  • Absolute mode requires an explicit Numbering Block Size (no silent default) so channels with no station match can't drift into a neighboring channel group's range β€” verified against a real 431-channel provider lineup (99.8% of channels ≀ 999)
  • New station-number name prefix (zero-padded or plain), applied whenever Sort Channels runs

πŸ› Fixed prefix/matching stability

  • A channel already renamed to "036 Alt Nation" by a previous Sort run failed to re-match "Alt Nation" in the dataset, causing it to drift to the unmatched tail every time Sort, Assign Logos, or Fill EPG ran again. Matching now strips any existing prefix first, across every affected action
  • Two channels matching the same real station number used to silently receive the identical channel number with no warning. Duplicate matches are now detected, the second is placed in the fill pool instead of colliding, and both are named in the result message

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: b73982da652895da2dc6c660ca8885ec4955c33f9c3e43f23a16b9876d69c14b
MD5:     5971171b4a77ab426fe53fe8eaf04d3e