v0.30.0
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).
- 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.
- 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 :)
- 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.
- 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 fromalert_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!
- 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.
- 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 theoutgoing_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.
- Adds records to the
alert_logs
table when runningmake 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:
- Generate secondary auth token
- Set secondary as auth token
- Set primary as alt. auth token
- promote secondary to primary
- clear alt auth token
- 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!
- Adds "Dev" page in dev mode (#2555)
- Adds
runproc
tool, a simpler alternative torunjson
. (#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
withwouter
. (#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=
withmake 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 replaceslowproxy
(#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: