What changed in Healthchecks from 3 to 4
6 releases numbered after v3.13 up to and including v4.4, stable releases only. v3.13 and v4.4 are the newest stable releases of 3 and 4 we track; this page follows them as new ones ship.
- 2 remove or deprecate something
47 changes across 6 releases
Added 7
- Add a note about unset ping key in the check details page
- Let users specify alert priorities in the "Add Gotify" form
- Add ability to edit existing Gotify integrations
- Implement Markdown formatting in Ntfy notifications
- Add rate-limiting by email in the /accounts/signup view
- Add a one-line summary at the top of monthly/weekly/daily reports
- Add data migration to update legacy timezones to current canonical timezones
Changed 15
- Send flapping notices to all team members instead of just the owner
- Upgrade to Django 6.1
- Send "Monthly Phone/SMS/WA Limit Reached" notice to all team members instead of just owner
- Include notification text in the "Monthly Phone/SMS/WA Limit Reached" notice
- Switch from Selectize to Tom Select for dropdown controls
- Update alert templates to report downtime duration
- Switch to Argon2 as the default hasher for passwords and login tokens
- Optimize DB queries for team membership lookups and for the "Get Pings" API call
- Update the email alert template to cut the beginning of the last ping body
- Update the email integration to attach email pings as .eml attachments
- Upgrade to Django 6.0
- Update the Matrix integration to use Matrix v3 API
- Update email alert template to use user's preferred time zone
- Update the web UI to use user's preferred timezone instead of browser's timezone
- Switch to using multicolor icon font for integration icons
Fixed 22
- Fix the email integration to sanitize long lines in .eml attachments
- Fix race conditions when concurrent requests update the same check
- Fix bounce signing code to produce shorter signatures
- Fix WebhookValidator to handle input that contains square brackets
- Update Check.rename_and_delete() to better handle race conditions
- Enforce check limit (times two) when pinging by slug
- Fix the "Edit Ntfy" form to preserve selected priorities when the form reloads
- Fix the parsing of inbound emails with UTF8 body
- Fix the email integration to handle deep attachment stacks in last ping body
- Fix check name and tag escaping in the Shell integration
- Fix sendalerts to avoid crashing on a timed out db connection
- Fix the update_timeout view to also kick off nags
- Fix a formatting issue in Matrix notification template
- Fix emails to never use non-breaking spaces in plain text emails
- Fix the Change Email form to warn the user about TOTP 2FA
- Fix daily reports to show downtime stats for the previous 2 days instead of months
- Fix incorrect Bearer token handling in the Prometheus metrics endpoint
- Fix the Clone function to copy the filter_http_body and filter_default_fail fields
- Fix the ping handler to reject uppercase letters in slug values
- Fix the text version of email report for recently created checks
- Fix prepare_durations() to assert ping ordering by id not by created date
- Fix the Pause API call and UI action to no-op if the check is already paused
Removed 2
Security 1
- Fix the email verification link to depend on the email address
Original release notes, newest first
The list above is our reading of these notes; the originals from Pēteris Caune are here, one fold per release.
v4.4
Important: this Healthchecks release is using Django 6.1, which has dropped support for PostgreSQL < 15, MySQL < 8.4, MariaDB < 10.11.
Improvements
- Send flapping notices to all team members (not just the owner)
- Upgrade to Django 6.1
Bug Fixes
- Fix the email integration to sanitize long lines in .eml attachments
- Fix race conditions when concurrent requests update the same check
- Fix bounce signing code to produce shorter signatures
- Security: fix the email verification link to depend on the email address
v4.3
Improvements
- Send "Monthly Phone/SMS/WA Limit Reached" notice to all team members (not just owner)
- Include notification text in the "Monthly Phone/SMS/WA Limit Reached" notice
- Add a note about unset ping key in the check details page (#1295)
- In the "Add Gotify" form, let users specify alert priorities (#990, @BeyondMagic)
- Add ability to edit existing Gotify integrations
- Switch from Selectize to Tom Select for dropdown controls
- Implement Markdown formatting in Ntfy notifications
- Update alert templates to report downtime duration (#1309)
- Switch to Argon2 as the default hasher for passwords and login tokens
- Optimize DB queries for team membership lookups and for the "Get Pings" API call
Bug Fixes
- Fix WebhookValidator to handle input that contains square brackets
- Update Check.rename_and_delete() to better handle race conditions
- Enforce check limit (times two) when pinging by slug
- Fix the "Edit Ntfy" form to preserve selected priorities when the form reloads
- Fix the parsing of inbound emails with UTF8 body (#1311)
- Add rate-limiting by email in the /accounts/signup view
v4.2
Improvements
- Update the email alert template to cut the beginning of the last ping body (#939)
- Update the email integration to attach email pings as .eml attachments
Bug Fixes
- Fix the email integration to handle deep attachment stacks in last ping body
- Fix check name and tag escaping in the Shell integration
v4.1.1
Bug Fixes
- Fix sendalerts to avoid crashing on a timed out db connection (#1267)
- Fix the update_timeout view to also kick off nags
v4.1
Improvements
- Remove team size limits: users on all plans can now invite many team members
- Add a one-line summary at the top of monthly/weekly/daily reports
Bug Fixes
- Fix a formatting issue in Matrix notification template (#1264, @neoscaler)
- Fix emails to never use non-breaking spaces in plain text emails
- Fix the "Change Email" form to warn the user about TOTP 2FA
- Fix daily reports to show downtime stats for the previous 2 days (not months)
- Fix incorrect Bearer token handling in the Prometheus metrics endpoint
- Fix the "Clone" function to copy the filter_http_body, filter_default_fail fields
- Fix the ping handler to reject uppercase letters in slug values (#1271)
v4.0
This release drops support of Python 3.11 and below. The minimum required Python version is 3.12.
Improvements
- Upgrade to Django 6.0
- Update the Matrix integration to use Matrix v3 API (#1244)
- Update email alert template to use user's preferred time zone (#1230)
- Update the web UI to use user's preferred timezone instead of browser's timezone
- Add data migration to update legacy timezones to current canonical timezones (#1250)
- Switch to using multicolor icon font for integration icons
Bug Fixes
- Fix the text version of email report for recently created checks (#1236, @adelton)
- Fix prepare_durations() to assert ping ordering by id not by created date
- Fix the "Pause" API call and UI action to no-op if the check is already paused