Skip to content

v0.59.0 — one governing follow

Choose a tag to compare

@crypt0rr crypt0rr released this 24 Aug 18:12
· 27 commits to main since this release
7c43fb7

Starts on the fifth review's backlog (#291) and rebuilds the part of the notification engine that backlog kept pointing at. 17 findings fixed; 27 remain open and will follow.

Five pause defects, one cause

Three different pieces of code decided which of your follows governs a given alert, and only one of them actually chose — the other two matched any follow connected to the release. That produced all five issues at once:

  • Pausing one artist could move an alert a different, still-active follow was in charge of, and could reset an ordinary retry backoff no pause had created.
  • Extending a pause left its alerts due at the old, earlier time, so they arrived while the follow still read "Paused until" a later date.
  • An alert held back by a pause, on a destination that then failed often enough to be switched off, had no automatic way back once the destination recovered. You had to know to press "Retry failed deliveries" a second time after the pause expired, which nothing told you.
  • Removing an artist from your watchlist left its already-queued alerts in place, so a notification could still arrive months later for an artist you had removed.

There is now one definition of "which follow governs this alert", and the code that admits a notification calls the same function as everything that reschedules one.

Recovering a destination now reports separately how many alerts it made runnable and how many it unblocked but is holding until a pause ends — instead of saying "0 queued for retry" beside a destination still showing failures.

Elsewhere

Pausing an artist and letting the pause lapse no longer leaves the Artists page insisting it is still paused with the Pause button replaced by "Resume now"; that page also shows the pause expiry in your own timezone rather than raw UTC.

Arriving from a homelab dashboard tile, a webmail tab, or one of this application's own calendar links no longer silently invalidates the forms you have open and loses what you had typed.

For operators

A TRUST_PROXY misconfiguration, application-log loss, and SQLite write contention are all reported rather than silent. Provider failure messages now survive a tick where the provider was deliberately not contacted, instead of being erased. Startup security warnings reach the stored log rather than only stdout. And three diagnostic fields that exist purely as operator signal — including the invite-link fingerprint added specifically so a failing link can be traced without exposing the token — are no longer destroyed by log redaction.

Destination test and retry throttles are keyed per member and checked after ownership, closing two ways the cap could be sidestepped.


Upgrade: ghcr.io/crypt0rr/artist-trackarr:0.59.0. No manual migration steps; no schema change.

Gates: go test 12/12 · -race -p 1 clean · coverage 81.3% ≥ 80.0% · lint 0 issues · govulncheck 0 · Docker test and quality stages · CI green on the merge commit and the tag.