Skip to content

v0.30.0

Compare
Choose a tag to compare
@m17ch m17ch released this 20 Sep 15:23
· 3241 commits to master since this release
31bdea6

GoAlert v0.30.0

This version has many improvements and features that have been in the works for a while for users, admins, and developers!

In addition to the binary release below, this release is also available in container image form: goalert/goalert:v0.30.0

Note to Admins: Public URL Configuration is Changing

First and foremost, no breaking changes. Without configuration updates, the new version should behave like the old. However, the global Public URL config is now deprecated.

We added a new --public-url flag (or GOALERT_PUBLIC_URL env var), which is now the preferred way to configure the public address for things like auth, Twilio/Slack callbacks, SMS URLs, and redirects. You should test and update your environments accordingly. Most users can simply start GoAlert with --public-url set to their current Public URL config value; additional notes are below under "Migration Notes"

Things of note:

  • GoAlert will start without the new flag set and fall back to the old behavior. Upgrading to 0.30.0 should be as safe as all other versions with no breaking/behavioral change without explicit opt-in.
  • The new flag replaces all uses of Public URL (in config under General), Referrer URLs (in config under Auth), and the --http-prefix flag. Using it will cause said deprecated settings to be ignored.

This was done to simplify fragile code that caused problems, particularly with various reverse-proxy setups and confusion around deployments behind a route prefix. Redirects and validation no longer use the host header to guess the environment and will always assume it is available at the configured URL.

Migration Notes

  • If you have multiple required Auth Referrer URLs, run separate instances connected to the same DB, one for each URL.
  • If you are using --http-prefix, just ensure the same prefix is set as the path of your --public-url value

New Paint!

A long time coming, we finally added some color to the application and dark-mode support! Changing the color for yourself from the new settings popover is now possible (can be useful for those that use multiple environments).

new-ui

  • Adds a Current User Avatar to the top app bar. (#2212)
  • Adds a button for dark-mode to the user profile. (#2174)
  • Adds a color picker to the Theme Mode (now renamed to Appearance) ButtonGroup in the Settings Popover. (#2393)

Slack Account Linking

Slack account linking is finally supported without running the goalert-slack-email-sync tool. Linking allows a user to close or acknowledge an alert from Slack that previously needed to be maintained by an admin.

When a user attempts to interact with an alert for the first time in Slack, a private message will prompt them to link their account. After confirming in GoAlert, their initial action will be taken (e.g., close or ack), and their account will remain linked for future interactions.

Note: in response to feedback, we've updated the Slack notifier to only include the summary in messages, reducing channel noise.

slack-flow

  • Updates the Slack notification sender to only include the summary in the message payload. (#2478)
  • Adds the ability to link accounts directly from Slack in response to user interaction (#2564)

Maintenance Mode

We've made it possible to put a service in a temporary maintenance mode, which will still allow alerts to be created/acknowledged/closed but prevents escalations (including the first) so your phone isn't going off while you're working to fix an issue :)

image

  • Adds maintenance mode option to snooze alert notifications (#2512)

Alert Metrics for Services

We've added a metrics page for services so you can visualize alert counts, escalations, and time to acknowledge and close. It also allows you to export up to one year of alert data (including timing information) as a CSV.

You can find Alert Metrics under Quick Links on your service details page.

image

  • Adds Alert Metrics dashboard feature accessible from a Service Details quick link. (#2085)
  • Introduces a new engine module for creating and populating a new alert_metrics table. (#2177)
  • Styles the alert metrics graph using our MUI theme and MUI Paper, Typography elements for the graph's tooltip. (#2323)
  • Adds a new chart for visualizing time to acknowledge and time to close averages for daily alerts. (#2347)
  • Moves graph and CSV processing to a web worker when supported. (#2465)
  • Adds escalated alert count to the metrics graph and the information to the table and CSV export. (#2430)
  • Adds new daily_alert_metrics table that aggregates metrics from alert_metrics. (#2272)
  • Use alerts query as the source of truth. Additionally, closedAt is added to the table and CSV export. (#2448)
  • Use autosizer for rechart graphs (#2529)
  • Adds loading status to web worker (#2542)

Grafana Integration

Grafana Alerting is now supported, along with support for images!

image

  • Adds ImageURL to alert details, when available, for Grafana-generated alerts. (#2468)
  • Adds support for Grafana 8.x webhooks. (#2087)

Admin: Message Logs

A new Message Logs page allows admins to view metadata about recently sent notifications.

image

  • Adds Outgoing Logs view from the Admin page. (#2061)
  • Adds debugMessages query that an admin can use to retrieve a list of recent messages from the outgoing_messages table. (#2052)

Admin: Alert Counts Visualization

The new Alert Counts page will help admins find "busy" services and correlate high-alert events when necessary.

image

  • Adds records to the alert_logs table when running make regendb. (#2150)
  • Updates resetdb to include randomly generated escalation logs. (#2430)
  • Adds admin Alert Counts page (#2509)

Admin: Twilio Key Rotation

It is now possible to do a smooth key rotation with Twilio:

  1. Generate secondary auth token
  2. Set secondary as auth token
  3. Set primary as alt. auth token
  4. promote secondary to primary
  5. clear alt auth token

image

  • Add alternate auth token for use during key rotation (#2588)

Developer Experience Improvements

There is now a Dev link in the main navigation menu when starting in development mode (i.e., make start), giving quick access to tools and configuration for local development. In addition, there were several process improvements and paid tech debt with this release, such as a huge speed improvement with the switch to esbuild.

Some of these tools have been available and running with make start but the new dashboard will hopefully make it a lot easier to discover and use the bundled tools!

image

  • Adds "Dev" page in dev mode (#2555)
  • Adds runproc tool, a simpler alternative to runjson. (#2080)
  • Fixes some noise issues in the make start log output. (#2172)
  • Adds the ability to manipulate time within the confines of a Postgres database. (#2438)
  • Updates build-env image to have the necessary dependencies to run Cypress tests, allowing all build steps to be run in the same container. (#2400)
  • Adds a new tool, slowproxy that can simulate network latency, jitter, and throughput constraints for testing. (#2307)
  • Replaces webpack with esbuild for building app.js. (#2314)
  • Replaces the use of webpack-dev-server and the required proxy with a method that will serve files from the local filesystem or in memory. (#2246)
  • Removes old GraphQL code that has been deprecated/unmaintained for the past few releases. (#2051)
  • Allow setting PUBLIC_URL in dev (#2553)
  • Add testing section and move smoketests to test/smoke (#2590)

Bug Fixes/Misc

  • Fixes an issue where invalid int. keys returned 400 instead of 401 (#2546)
  • Add --public-url flag and strictly validate URLs (#2421)
  • Many accessibility improvements & javascript conversions to typescript. (#2318)
  • Some deadlock issues around rotations were fixed by introducing rather aggressive locks. (#2491)
  • Fix for user deletion causing rotation advancement. (#2375)
  • Increase maximum alert summary length to 1 KiB. (#2073)
  • Adds alert summary to status update messages. (#2074)
  • Increase the calendar subscription window of calculated shifts from 1 month to 1 year. (#2388)
  • Removes unmaintained tracing code and dependencies. (#2420)
  • Replaces the use of react-router-dom with wouter. (#2415)
  • Adds support for application/json in incoming webhook. (#2161)
  • Fixes an issue preventing switchover (#2552)
  • Fix/cleanup for Go 1.19 (#2563)
  • Fix make start issue when restarting postgres (#2580)
  • Allow setting SIZE= with make regendb to test various data sizes (#2580)
  • Fixed first-startup race conditions, as well as quick shutdown ones (#2580)
  • Add speedbump as a devtool to replace slowproxy (#2580)
  • Fixed a display bug with contact method verification when using message SIDs (#2580)
  • Update voice code to use encoding/xml (#2582)
  • Update SMS country-code restrictions (#2607)

Version Updates: