Releases: Uninett/Argus
Release list
[2.9.1] - 2026-05-27
The purpose for this release is primarily to aid in creating a Helm chart for Argus via changes to the production Dockerfile.
Added
- Document how to log with structured (JSON) logs and add an optional dependency to accomplish this.
Changed
- Some subdependencies were updated for security reasons.
- The production Dockerfile was changed to be able to include all plugins maintained by the same team as argus, see the README.md in the docker directory.
[2.9.0] - 2026-04-29
Frontend changes
This time around there are plenty small improvements to the planned maintenance
subsystem.
There's several small changes to the dashboard. Most importantly there's a spot
for more complex, dashboard-only, filters. First one out is a filter to hide incidents that
are "closed" AND "acked". Click on "Special filters".
It is now no longer necessary to use the Django admin for administering
sources. If a user has the is_staff flag set (easiest via Django admin) they
can easily administer sources and their tokens via some new pages accessible
via the user dropdown.
There's a new management command to check for new versions of argus-server, we
hope to eventually be able to have a subscription/notification service for
this. The command is check_version. See also the new app
argus.versioncheck if you are curious.
The styling of the fixed banner (via the BANNER_MESSAGE setting) has changed.
Less visible things
We now include a new notification plugin, for Slack. This is based on the 3rd
party library apprise. Remember to upgrade dependencies!
Finally, we have started to implement heart beat functionality. For a proper
heart beat functionality the glue services must be able to explicitly send
a heart beat, currently we only keep track of when a source (via a glue
service) last used the API.
Note:
We have changed the database backend to psycopg (from psycopg2). If you
have not altered the default database settings you need only install the new
dependency. Otherwise, see NOTES.md for details.
We have replaced the included "light" and "dark" themes with themes based on
the Sikt palette. The new ones have better contrast. To get the old themes
back, see NOTES.md.
While we have added support for running on Python 3.14, there has been some
trouble in practice, so hold off on upgrading Python for now.
Added
- Added support for testing and running on Python 3.14, also leading to various
dependency upgrades centered around pydantic.
(#1725) - Add Apprise-based notification plugin base class and built-in Slack
notification support (#1768) - Add special filters dropdown with "Hide closed acked" compound filter
(#1879) - Disabled the updating of start time for past planned maintenance tasks
(#1891) - Add "is under maintenance" column with filtering
(#1894) - Add ability to manage sources and source types directly in the Argus UI,
including token management
(#1898) - Add management command for finding newest Argus release
(#1907) - Record when a source last did something. This makes it easy to spot which
sources are actually in use, and serves as the start of heartbeat support.
Changed
- Replace psycopg2 with psycopg3, using django-psycopg-infinity for infinity
timestamp support (#942) - Remove
color_statusfrom the default built-in column preset
(#1683) - Add type-ahead search to sources filter
(#1864) - Replace tri-state range sliders with styled dropdown selects for State and
Acknowledged filters (#1865) - Improve banner message styling and make it themeable via CSS variables
(#1867) - Consolidate theme colors: replace built-in DaisyUI light/dark with Sikt
themes, align support and severity colors across all themes, and add runtime
fallback for deprecated theme names
(#1884) - Boost severity badge color visibility using OKLCH for sharper at-a-glance
identification (#1884) - Improve dropdown filter UX: fix tag selection, prevent flicker during
updates, and keep search results visible when selecting multiple items
(#1887) - Make severity level column filter more accessible
(#1890) - Blocked editing of start time for planned maintenance tasks that have already
started (#1900)
Fixed
- Make version string selectable by separating text from copy button
(#1661) - Fix insufficient contrast on content colors in the Argus theme
(#1749) - Add missing staff access control to planned maintenance filter search and
preview views (#1784) - Add maxlength and character counter to filter name input
(#1801) - Fix hardcoded border radius classes overriding theme settings
(#1817) - Add maxlength and character counter to profile and timeslot name input
(#1859) - Fixed updating managed destinations
Make it possible to change the label of managed destinations
(#1860) - Fix compact severity column filter dropdown being constrained by narrow
column width (#1866) - Remove linked incidents for all ended planned maintenance tasks
(#1885) - Link relevant incidents to all current planned maintenance tasks
(#1886) - Fix duplicate URL parameters and improve checkbox accessibility on incidents
page (#1906)
[2.8.1] - 2026-04-28
Mini-release to help something depending on the production docker image.
Fixed
- Use
django-adminto callinitial_setupinstead ofpython3 manage.pyin
production image
[2.8.0] - 2026-03-06
The most important change in this release is that we have finally added the
long awaited task queue, to handle background tasks. The task queue uses the
database for storage by default so running migrations is necessary. As part of
using the queue to send notifications we fixed several bugs that caused a lower
amount of notifications to be sent than expected. Another big change is we have
upgraded tailwind, which affects theme customization and building packages.
You must see the NOTES before updating if you or your deployment do any of
the following:
- Send notifications (
SEND_NOTIFICATIONS = True). Affected both by the new
queue and the bug-fixes. - Alter any templates or CSS, due to the upgrade of tailwind.
- Replace or rework the incident list filter box.
- Write your own media plugins.
- Build your own package (useful for bundling themes and tweaks). The release
checklist has changed.
Added
- Added support for a task queue. We're using
django-tasks, which is in the
process of being merged into Django proper, with the backend
django-tasks-db. This stores the tasks in the same database as everything
else. We're currently only using the queue to send notifications, so if you
are not using argus for that (SEND_NOTIFICATIONSis off), nothing changes.
(#1608) - Add "Create copy" action for planned maintenance tasks
(#1613) - Show name of owner for public filters
(#1748) - Add preview of incidents covered by selected filters in planned maintenance
task form (#1765) - Create admin user from env variables in docker entrypoint
(#1776) - Validate
DAISYUI_THEMESentries, skipping invalid ones with warnings
(#1819) - Add Sikt light and dark DaisyUI themes based on Sikt Design System color
tokens (#1822)
Changed
- Upgrade to Tailwind CSS v4 and DaisyUI v5. See NOTES for theme customization.
(#1262) - We are now using a task queue to send notifications instead of forking off
a process. This is to increase robustness and hopefully to increase
throughput. If argus is being used to send notifications, you MUST change
your deployment as there now is an additional service that needs to run in
order to handle the notifications on the queue. See the NOTES!
(#1608) - Refactor incident list filter UI with collapsible filterbox and dynamic bulk
actions bar. (#1693) - Improve maintenance column by adding a dropdown with tasks that affect the
incident (#1745) - Support searching for filters by first and last name of user
(#1764) - Added under maintenance column to maintenance column preset
(#1775) - Improve timeslot form with compact table layout for time recurrences
(#1794) - Consolidate notification routes under /notifications/ with tab navigation
(#1795) - Improve notification profile form with collapsible cards and inline actions
(#1796) - Moved some functionality from the email media plugin to the base class of all
media plugins. Basically, any destination can now be marked as being
"managed", which means that it is created and managed by a system outside of
an end-users control. This can be for instance email addresses or phone
numbers fetched from an account-database or address book.
(#1802) - Redesign destination page as flat table with inline editing
(#1806) - Tailwind CSS intermediate files (theme CSS, config snippets) are no longer
tracked in git. See NOTES.
(#1826) - Redesign filter toolbar with compact icon buttons and direct filter actions
(#1831)
Fixed
- Notifications are now also sent on bulk changes to incidents. Note that for
filters used for sending notifications, it will be necessary to control event
types to maintain the current expected amount of notifications sent. See
NOTES. (#1763) - Limit choices of incidents field in PM admin to open incidents
(#1789) - Make it possible to use public filters in notification profiles
(#1805) - Fixed a bug where the setting that controls whether notifications will be
sent was ignored when sending notifications in the background. The
notifications were sent regardless.
(#1808) - Allow for multiple notification profiles with no name
(#1828) - Fix showing age for stateless incidents
(#1833) - Fix theme preview showing wrong foreground text color on color swatches
(#1834)
[2.7.0] - 2026-01-23
This release improves the UX for creating planned maintenance tasks, by having
dedicated pages for it and allowing all logged in users to see the list of
future, ongoing and past planned maintenance periods. To take full advantage of
thisi column, see NOTES.md.
Furthermore, admins can create filters that can be used (but not edited) by
everyone.
The sorting of the incident list can now be controlled via relevant columns,
but only one column at a time.
There are lots and lots of new columns! See NOTES.md
There are two new column presets, one for making notification filters and
another for making planned maintenance tasks.
A long-standing bug has been fixed that prevented the sending of notifications,
see NOTES.md.
Added
-
Added searchable
idcolumn
(#1288) -
Made it possible to filter on event types
(#1455) -
Added column for marking incidents as under maintenance
(#1589) -
Prohibited editing planned maintenance task closed for longer than 12 hours
(#1648) -
Added pictures of each column type to docs
(#1653) -
Save current incident filters as a user preference and restore on page load
(#1682) -
Added a new column showing all tags of an incident.
(#1698) -
Add new
end_timeandnarrow_end_timecolumns to display theend_timeof
an incident (#1715) -
Add compact severity columns with filtering and sorting
(#1717) -
Added management command to connect incidents to new planned maintenance
tasks (#1734) -
Added first version of pages for CRUD-ing planned maintenance tasks. Everyone
can see them but only admins can alter anything
(#1735) -
Added management command to remove incidents from ended planned maintenance
tasks (#1736) -
Made it possible to mark a filter as "public". This means that anyone can use
it in the incident list, for notification profiles or for making planned
maintenance tasks. The flag can currently only be set via the admin
interface, and is thus limited to administrators.
(#1742) -
Add sortable columns to incident table
(#1980) -
Added a very rough and ready column to show an incident's events.
-
Added two new column presets:
- "notifications" with columns useful for making notification profiles
- "on maintenance" with columns useful for finding things that will be on
planned maintenance
-
Argus now supports Django 6.0
Changed
- Implemented a Contributor License Agreement for Argus, based on the Free
Software Foundation's Fiduciary License Agreement
(#956) - Replace column filter button with debounced auto-submit
(#1575) - Improve toast notification accessibility with ARIA attributes and screen
reader support (#1711) - Changed label of start time column to 'Start time'
(#1718) - Renamed column
start_time_and_agetonarrow_start_time_and_ageand added
wider column namedstart_time_and_age
(#1719) - The buttons in the column layout preview were disabled.
- The theme chooser on the user preferences page now shows the text color for
each color palette in addition to the background color.
Fixed
- Added key requirements to error message in tag validation
(#511) - Fixed dropdown multi-select fields (e.g. Source Types) selecting first item
when clicked (#1697) - Show meaningful error messages in UI and log full tracebacks for HTMX errors
instead of generic "500 Internal Server Error" and HTML content
(#1702) - Fixed page size preference being reset to default when visiting the incidents
page without apage_sizeURL parameter
(#1704) - Fix bug where multiselect is not cleared when de-selecting all options
(#1751) - Fixed longstanding bug that led to fewer notifications than expected. Instead
of checking when an event happened in order to decide whether to send
a notification, we only checked when the incident started. So, no
notifications could be sent for long-lasting incidents if they started
outside of all active timeslots. - Missing filters are now handled better. If a filter was deleted while it was
in use by the incident list page, the page would get stuck with a "500 Server
Error" until the filter was manually removed from the session.
[2.6.0] - 2026-01-06
This is a tiny release to finish up what was started at the end of 2025.
Added
- Add preview for incident table preferences
(#1658)
Fixed
- Filter on source type in dashboard. The previous release made it work for
notifications but not in the incident list in the frontend. - Fix bug where the incident table overlaps filter dropdowns
(#1669)
[2.5.0] - 2025-12-04
The big new thing this time around is a way to prevent notifications from
certain incidents by masking them via a planned maintenance filter stored in
a planned maintenance task. This task works just like a notification profile:
more filters add precision. The only way to set up a filter right now is via
the admin. Users with admin-access can click on the admin link, see the section
"ARGUS_PLANNEDMAINTENANCE".
We want some feedback on the feature before we add support
for setting up planned maintenance tasks via the API and the frontend.
Otherwise: work on increasing consistency in the frontend continues, and the
version number of argus should now always be available.
Customizers, please see the NOTES.md, the preferences page has more changes.
Remember to migrate if upgrading.
Added
- Add preview for theme and date format preferences
(#1557) - Add model for planned maintenance tasks
(#1586) - Added functionality to add/edit planned maintenance tasks to Django admin
(#1587) - Filter out events covered by ongoing planned maintenance tasks from being
sent (#1588) - Added Argus version number to user menu dropdown and login page
(#1650)
Changed
[2.4.0] - 2025-11-28
The most important feature this release is being able to filter on source
system type. If you have multiple source systems in a filter, all of them of
the same type, it might pay off to switch over to using the source system type
instead.
The rest is frontend improvements: The tags filter now has typeahead find. The
header and footer of the incident list never scroll off screen. The status
columns have variants with icons instead of text, and there's new columns
showing an incident's age (time since it happened).
See NOTES.md for further detail.
Added
- Added test error page (#1024)
- Add age columns to incident table
(#1552) - Made it possible to filter on a source's type in the incident list, API, and
for sending notifications. Also added a new built-in column "source type" for
the incident list. When there are very many sources of the same type, the
filter and column become useful.
(#1556) - Add status columns that use icons instead of text
(#1635) - Made a system for rendering previews of preference choices.
Changed
[2.3.0] - 2025-11-20
This release has numerous improvements to the frontend. The various
widgets on the incident list page now work better together, and where
there are more than one to choose from the choices are now sorted
alphabetically. No user preferences are left in the user menu. The
preference page has had a slight rework though more is planned.
The big new thing is the possibility to select more than one column
layout. You can now choose a preferred layout on the user preferences
page if any have been configured in addition to the standard one.
A nice looking preview of each configured layout is planned for the
next release.
Due to the possibility of choosing between multiple column layouts,
several new types of columns have been added. There's also a new
section in the reference documentation explaining and naming all the
built-in column types.
See NOTES.md for how to convert an existing column layout to the new format.
Added
- Sort list of filters in filter dropdown alphabetically
(#1553) - Sort list of sources in filter dropdown alphabetically
(#1554) - Added and documented more searchable columns for the incident list:
search_description,select_levels,has_ticket_url,
search_ticket_url, and a way to mass-produce single-field forms to
add even more searchable columns and eventually systematize the
incident filter forms in the topmost box. - Make it possible to define more than one column layout, and make it
possible to switch between them via a user preference. Fixes #1581,
#1582. - Added the column
narrow_start_time.
Changed
- Remove user preferences from global header dropdown
(#1567) - Use DaisyUI dropdowns in searchable columns
(#1574) - Sort filter dropdowns for update / delete filter alphabetically
(#1592) - Add consistent title to notification config pages
(#1606) - Auto-align filterable column dropdown if it extends beyond the screen
(#1607) - Fixed several problems with filtering the incident list in the
frontend: the various widgets were stepping on each others toes.
Made much easier by turning all GET-abble filters into Django forms. - Improved documentation of how notificationprofiles with multiple
filters work, with changes to the user manual, new tests, and a help
text added to the field in question in the frontend. - Preferences are all now properly backed by forms, inheriting from
SimplePreferenceFormwhich is a perfect fit for preferences where
you choose one of several options. UsingPreferenceFielddirectly
will still work, but the form used now receives the request on
__init__. It is therefore necessary to upgrade the old forms by
either mixing in theClassicPreferenceFormMixin, which will
discard the passed-inrequest, or writing your own__init__that
will prevent passing in therequestviasuper().__init__(*args, **kwargs). - User preferences were refactored. This is to increase consistency,
cut down on copypasta, and eventually use Django forms on the user
preference page, but more importantly: Django settings are no longer
read on import. Turns out, preferences that depend on Django
settings sometimes read the settings too soon, before the
settings-file was complete, and therefore getting the wrong or no
setting.
[2.2.2] - 2025-11-03
Added
- Frontend: Added the beginnings of a style guide at /styleguide/. The look of the form
inputs that were not manually laid out have in some cases also changed, for
greater consistency. (#1558) - Added
zino-argus-glueto documented list of known glue services
Changed
- Increased logging verbosity when finding destinations for notifications and
actually sending the notifications, to aid in debugging production systems.
Now also logs which destination id's are found and used.
(#1563)
Fixed
- The development docker compose had stopped working due to changes outside of
our control (pip, git, the very distro) and has been updated.