This release is the first to support Django 6.1, and no longer supports Django
6.0.
Remember to migrate, and this time there is a manual step to clean up some
migration cruft as well, see NOTES.
Big new features, in brief
- Heartbeat functionality
- Kiosk mode, see the new link in the filter box
- About-page, with a button that can check for a for new release
See the copious NOTES.
Removed
- Removed outdated migrations files. See NOTES!
(#2022) - Removed support for testing on Django 6.0, as that version is EOL-ed.
(#2025)
Added
-
Added warnings to be shown for destinations and notification profiles where
the medium is not installed
(#1453) -
Added
INCIDENT_RESTARTevent type to allow source systems to reopen incidents
(#1502) -
Add maintenance API endpoints
(#1774) -
Implemented detailed Slack URL validator
(#1919) -
Add docs for using the base apprise plugin directly
(#1921) -
Added a kiosk mode to the main view, providing a minimal version of the
incident list suitable for passive Argus usage.
(#1938) -
Added new API endpoint to explicitly update the
last_seenfield for
a source system. (#1939) -
Added a way to to store expected heartbeat frequency (as a Postgres interval,
minimum 60 seconds) to a source system, and made the new field visible in the
admin. (#1941) -
Added management command suitable to run as a cronjob that looks for dead
incidents (as per heartbeat frequency and last seen heartbeat). Dead sources
are reported as incidents, formerly dead sources get their respective
incidents auto-closed.
(#1954) -
Show
last_seenandheartbeat_frequencyin the source list and allow
alteringheartbeat_frequency.
(#1962) -
The time zone is now configurable via the
TIME_ZONEenvironment variable
(defaultEurope/Oslo, unchanged). TheTIME_ZONEvariable already shipped
indocker-compose.ymlpreviously had no effect.
(#1963) -
Added reference documentation for Argus's own incidents.
(#1964) -
Added the boilerplate for API v3 for incidents, with an altered SourceSystem
serializer showing thelast_seenfield as read only to serve as an example.
(#2010) -
Added support for testing on Django 6.1.
(#2025) -
Add an "about"-page (#2042)
-
Added function to return a ticket identifier for an incident to the base
ticket class (#2047) -
Added button to about page to trigger a check for new versions. Staff only!
(#2052) -
A new endpoint dedicated to health checks was added, on "/.still-alive/".
This is to make it easier to filter out in access logs. -
Added
zabbix-argus-glueto documented list of known glue services -
Added a new log level: TRACE, for stuff even less important than DEBUG. In
the process, moved logging helpers to a dedicated home in anticipation of
supporting better logging in production.This new level is really not a good match for use in production, expect a lot
of noise. See NOTES. -
The Docker image publishing workflow can now be triggered manually to
(re)build any past release, and tags the newest release aslatest.
Changed
-
Changed API to allow for an incident to have multiple
INCIDENT_ENDevents
(#1502) -
Represent tickets using a per-plugin identifier.
(#1710) -
Made Apprise an optional dependency
(#1920) -
Collected the validation functionality of the media plugins in the base
class, removed the ability to version a media plugin, and changed the plugins
that are shipped with Argus to use new validation functionality.This will break existing 3rd party media plugins. See NOTES.
(#2023) -
Updated CONTRIBUTING file to be more naggy, we really want everyone to
use the PR template and to write proper commit messages!
(#2026) -
Changed versioncheck to use the PyPI upload time instead of Argus' visit time
to register new versions.
(#2051) -
Whether a destination medium is marked as installed or not is now visible and
filterable in the admin.
Fixed
- Simplified the tags API (in version 3) so that the internal structure of tags
is properly hidden. This will make altering the actual structure a smaller
task. (#136) - Slimmed down the production Docker image with a multi-stage build, so the
build toolchain and the full source tree (including its git history) are no
longer baked into the published image.
(#923) - Added check for whether notifications are globally enabled before sending
email and SMS notifications
(#1918) - Fixed incident list not reacting to filtering changes when a saved filter is
selected (#1940) - Fixed planned maintenance filter selection freezing the drop-down
(#1958) - Added check on startup for if an Apprise-derived medium is activated without
the Apprise package itself being installed.
(#1965) - Fixed searching by description being case sensitive
(#1978) - Fixed state- and ack-field being empty after selecting and deselecting
filters (#2000) - Fixed filter tag dropdown closing when unselecting last item
(#2005) - Sorted the destination dropdown by media when adding/updating a notification
profile (#2017) - Show the destination label set by the user in the dropdown when
adding/updating a notification profile
(#2018) - Correct the input format of v3 of the destination API
(#2029) - Fixed incident table becoming unresponsive when a bulk action dialog box was
open during a table refresh.
(#2030) - Fixed the incident list sorting configuration not being preserved after a
refresh and after changing the page
(#2036) - Ensured that kiosk mode always resets to page 1 to avoid strange behaviour
(#2044) - Fixed connecting ongoing planned maintenance tasks with incidents that are
being covered by them (#2049) - Pinned
django-psycopg-infinityto 0.1.0. Version 0.1.1 changed infinity
timestamps loaded fromtimestamp with time zonecolumns from local time to
UTC. Since infinity is represented as a wall-clock sentinel rather than
a true instant, the two are not equal, so an incident'send_timeno longer
compared equal to the infinity constant after being reloaded from the
database. Among other things this made notifications for open incidents
render an explicit far-future timestamp instead of "Still open".