Skip to content

Releases: Uninett/Argus

[2.9.1] - 2026-05-27

Choose a tag to compare

@hmpf hmpf released this 27 May 12:12
Immutable release. Only release title and notes can be modified.

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

Choose a tag to compare

@hmpf hmpf released this 29 Apr 12:09
Immutable release. Only release title and notes can be modified.

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_status from 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

Choose a tag to compare

@hmpf hmpf released this 28 Apr 12:15
Immutable release. Only release title and notes can be modified.

Mini-release to help something depending on the production docker image.

Fixed

  • Use django-admin to call initial_setup instead of python3 manage.py in
    production image

[2.8.0] - 2026-03-06

Choose a tag to compare

@hmpf hmpf released this 06 Mar 12:09
Immutable release. Only release title and notes can be modified.

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_NOTIFICATIONS is 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_THEMES entries, 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

Choose a tag to compare

@hmpf hmpf released this 23 Jan 12:36
Immutable release. Only release title and notes can be modified.

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 id column
    (#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_time and narrow_end_time columns to display the end_time of
    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_age to narrow_start_time_and_age and added
    wider column named start_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 a page_size URL 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

Choose a tag to compare

@hmpf hmpf released this 06 Jan 13:34
Immutable release. Only release title and notes can be modified.

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

Choose a tag to compare

@hmpf hmpf released this 04 Dec 06:54
Immutable release. Only release title and notes can be modified.

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

  • Split user preferences into multiple sections
    (#1557)
  • Increase accessibility of cards by using borders instead of shadow
    (#1641)

[2.4.0] - 2025-11-28

Choose a tag to compare

@hmpf hmpf released this 28 Nov 08:42

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

  • Change incident table header and footer to always be visible
    (#1548)
  • Add clear button to search column header
    (#1573)
  • Change tags input to use searchable multiselect
    (#1604)

[2.3.0] - 2025-11-20

Choose a tag to compare

@hmpf hmpf released this 20 Nov 13:58

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
    SimplePreferenceForm which is a perfect fit for preferences where
    you choose one of several options. Using PreferenceField directly
    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 the ClassicPreferenceFormMixin, which will
    discard the passed-in request, or writing your own __init__ that
    will prevent passing in the request via super().__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

Choose a tag to compare

@hmpf hmpf released this 03 Nov 14:27

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-glue to 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.