github bscott/subtrackr v0.7.0
v0.7.0 - HTMX 4, To Cancel reminders, ntfy and Gotify

40 minutes ago

⚠️ Before You Upgrade

v0.7.0 changes how the database is stored, so take a backup first:

  1. Stop every SubTrackr process that uses the database, including the MCP server.
  2. Back up the entire data directory while they are stopped, and keep your current image tag with it.
  3. Start a single SubTrackr process for the first run so migrations can finish.

SQLite now runs in WAL mode, so -wal and -shm files may appear next to the database. Copying only the .db file while SubTrackr is running can miss recent changes. Keep the database on local storage, not NFS.

To roll back, stop SubTrackr and restore the pre-upgrade data directory together with the previous version. Don't point an older version at an upgraded database. See Upgrading and backing up existing installations in the README.

What's New

HTMX 4 (#136)

  • The interface now runs on HTMX 4.0.0, served from SubTrackr itself with an integrity check instead of loaded from a CDN.
  • Form errors show beside the form that caused them. Failed background requests show a clear error message instead of leaving the page unchanged, and an expired session sends you to the login page.
  • The add/edit form is keyboard friendly: focus moves into it when it opens, Tab stays inside it, and Escape or the backdrop closes it and returns focus to where you were. The mobile menu works the same way.

To Cancel reminders (#137)

  • Mark a subscription To cancel and get a reminder 3, 5 or 14 days before the last day you can cancel. That deadline is the renewal date minus any cancellation notice period.
  • Works for Active and Trial subscriptions. Paused subscriptions keep the choice but don't send, and marking a subscription Cancelled clears it.
  • Replaces the regular renewal reminder for that subscription, and is recorded as sent only after at least one notification channel accepts it. Failed deliveries are retried on the next daily check while the deadline is still ahead.
  • Cancel-by dates appear in the subscription list, on the calendar and in the iCal feed. Missed deadlines are shown in the app rather than sent late.

ntfy and Gotify notifications (#158)

  • Send renewal, cancellation and high-cost notifications to ntfy (ntfy.sh or your own server) or to a Gotify server, over HTTPS or plain HTTP on your LAN.
  • ntfy supports a topic, an optional access token and priority 1–5; Gotify takes an application token and priority 0–10.
  • Test Connection sends a message using the form as filled in, without saving it.

European date format (#159)

  • New DD.MM.YYYY date preference, alongside MM/DD/YYYY, DD/MM/YYYY and YYYY-MM-DD. CSV and calendar exports keep their machine-readable formats. Thanks to @cniry for the request.

Bug Fixes

  • Subscriptions created with reminders turned off (from the form, API, Wallos import, backup restore or duplicate) were saved with reminders on.
  • "database is locked" errors when the reminder scheduler and web requests wrote at the same time.
  • Foreign keys are now enforced on every database connection.
  • Restoring a backup in replace mode now checks every entry before deleting existing data.
  • Fixed calendar and iCal errors, deleting tagged subscriptions, and handling of uncategorized subscriptions.
  • Fixed theme persistence, mobile layout overflow and the mobile calendar layout.
  • The MCP server's optional inputs are no longer reported as required.

Security

  • Includes the v0.6.11 fixes for password reset link poisoning and email header injection.
  • Saved Pushover, Telegram, ntfy and Gotify tokens are no longer written into the Settings page. Leave a token field blank to keep the saved token. Changing a server URL requires entering the token again, so a saved token is never sent to a server it wasn't entered for.

Known Issues

  • When your session has expired, export links can save the login page or an error page instead of redirecting you to log in. Log in again and repeat the export.

Technical Changes

  • New Playwright end-to-end suite covering every page in Chromium, Firefox, WebKit and mobile browsers, plus an isolated server for login, password reset and data management tests.
  • Database upgrades preserve tag links, deleted-ID history and custom indexes, with upgrade tests against captured v0.3.0 and v0.6.10 schemas.
  • SQLite connections use WAL, a 5-second busy timeout and immediate transaction locks.
  • Live Pushover tests now run only when PUSHOVER_LIVE_TEST=1 is set.
  • Removed unused Go functions and static scripts.

Don't miss a new subtrackr release

NewReleases is sending notifications on new releases.