GoAlert v0.34.0
We're excited to announce GoAlert v0.34.0! This release continues building on the foundation laid in v0.33.0, with significant improvements to messaging capabilities, administrative tools, and system reliability.
⚠️ Important: PostgreSQL Version Support
GoAlert v0.34.0 adds full support for PostgreSQL 17!
- ✅ Fully tested with PostgreSQL 13, 14, 15, 16, and 17 (all versions pass our complete test suite)
- 🏭 PostgreSQL 13 and 17 validated in production environments
- 📅 PostgreSQL 13 reaches EOL in November 2025
- ⭐ PostgreSQL 17 is now our recommended version for all deployments
For those looking to upgrade their DB without downtime (live migration from old to new), we have documentation around the Switchover feature here. As with any major DB change make sure to take, and validate, a full backup just in case.
While this isn't a new feature, it may be the first time some are hearing about it. For those interested, there is additional information about how it works here and here.
🚀 New Features
RCS Messaging Support
GoAlert now supports Rich Communication Services (RCS) through Twilio. If your Twilio messaging service is configured for RCS, GoAlert will automatically leverage the enhanced messaging capabilities including better delivery tracking and richer content support.
2 PRs by @mastercactapus
- notification/twilio: add base RCS support by @mastercactapus in #4315
- twilio/sms(RCS): Fix display bugs by @mastercactapus in #4328
Heartbeat Monitor Muting (API Only)
You can now mute heartbeat monitors during planned maintenance or expected downtime, preventing unnecessary alerts during known service interruptions. This helps reduce alert fatigue and keeps your alert history clean during maintenance windows.
1 PR by @mastercactapus
- heartbeat: allow muting a heartbeat monitor by @mastercactapus in #4103
Calendar Subscription Enhancements
Calendar subscriptions now support JSON format in addition to existing iCal formats, and you can generate direct links for creating schedule overrides, making it easier to share override creation workflows with team members.
2 PRs by @mastercactapus
- calsub: Add JSON as a supported format for calendar subscriptions by @mastercactapus in #4196
- schedules: add support for linking directly to creating a new schedule override by @mastercactapus in #4242
Enhanced Alert Statistics
Services now expose detailed alert statistics through the GraphQL API (alertStats
field), providing administrators with better insights into service performance and alert patterns for reporting and analysis.
2 PRs by @codylewandowski, @mastercactapus
- graphql: add
alertStats
field onService
by @mastercactapus in #4293 - fix: Correct Average Ack Time in reporting by @codylewandowski in #4375
Administrative Maintenance Tools
New admin maintenance page provides tools for system maintenance tasks, including the ability to re-encrypt stored data when needed for security or compliance requirements.
1 PR by @mastercactapus
- admin: Add maintenance page, with action to re-encrypt data by @mastercactapus in #4323
Service Search Enhancement
The service search functionality now supports an "only" filter option, allowing for more precise filtering of services.
1 PR by @weefatboi
- Feat: ServiceSearch "only" by @weefatboi in #4384
🛠️ Universal Integration Keys Improvements
Continued enhancements to the experimental Universal Integration Keys feature (enabled with --experimental=univ-keys
):
6 PRs by @ethan-haynes, @KatieMSB, @mastercactapus
- uik: Add code editor for Expr fields by @mastercactapus in #4151
- adding info link to expr syntax by @ethan-haynes in #4194
- uik: Single dialog for default actions by @mastercactapus in #4193
- uik: Update rules list for single-dialog and re-ordering by @mastercactapus in #4195
- uik: add direct links for externally created uik with warning by @KatieMSB in #4392
- services/search: enhance integration key input handling and add user guidance by @mastercactapus in #4388
🔧 System Improvements
Message Status Tracking
Enhanced notification system now records and displays complete message status history, providing administrators with full visibility into notification delivery status and helping with troubleshooting delivery issues.
1 PR by @mastercactapus
- messages: record and display full message status history for notificaitons by @mastercactapus in #4324
Performance & Reliability
Improved shared locking enables better concurrent work processing, database indexing improvements for better performance with large message volumes, and enhanced testing capabilities for better performance validation.
3 PRs by @mastercactapus
- engine/processinglock: enable shared locking for concurrent work by @mastercactapus in #4153
- db: create index on message_id to help with cascading deletes and lookups by @mastercactapus in #4350
- test/load: Expands operations performed and use unique users for each VU by @mastercactapus in #4141
Security Enhancements
Added comprehensive HTTP security headers and enhanced route security with proper HTTP method restrictions and response codes.
3 PRs by @mastercactapus
- http: Add Secure Headers by @mastercactapus in #4071
- http: Add method restrictions to routes, fix response codes by @mastercactapus in #4243
- fix various HTTP response codes by @mastercactapus in #4403
🐛 Bug Fixes
Critical Fixes
6 PRs by @mastercactapus
- feat: fix rotation advance when removing a user by @mastercactapus in #4260
- schedules: Fixes a bug where 'replace' overrides would behave as an 'add' + 'delete' rather than replace by @mastercactapus in #4306
- rotations: fix v1 -> v2 migration logic by @mastercactapus in #4292
- sqlutil: fix deadlock in NOTIFY listener (refactor) by @mastercactapus in #4299
- fix(lifecycle): skip shutdown wait on run failure by @mastercactapus in #4261
- fix: fix override dialog extra button by @mastercactapus in #4368
Reliability Improvements
5 PRs by @mastercactapus
- fix: Exclude disabled subscriptions from inactivity queries by @mastercactapus in #4320
- engine: update rate limit rules for on-call user notifications by @mastercactapus in #4262
- service: fix label error messaging for create and edit by @mastercactapus in #4259
- profile: Fix on-call assignments page data by @mastercactapus in #4343
- fix: increase timeout in TestIDLocker_CancelQueue for better stability by @mastercactapus in #4385
🔌 Integration Improvements
Twilio Enhancements
1 PR by @mastercactapus
- feat: add Twilio configuration check in AdminToolbox component by @mastercactapus in #4255
Slack Integration
1 PR by @mastercactapus
- dest/slack: add bot name and hint to slack channel selection by @mastercactapus in #4367
🏗️ Behind the Scenes
This release includes significant architectural improvements that lay the groundwork for future enhancements. Notably, v0.34.0 represents a major milestone in our migration to a job queue architecture, which will enable better multi-instance deployments and improved performance at scale in future releases.
Job Queue Migration
Continued migration of background processes to job queue architecture for better reliability and performance at scale. These improvements are largely invisible to end users but provide a foundation for better multi-instance support and performance improvements in future releases.
11 PRs by @mastercactapus
- event: add event bus to replace manual trigger of periodic jobs by @mastercactapus in #4185
- engine: migrate status update manager to job queue by @mastercactapus in #4164
- engine/cleanupmanager: move alert cleanup to job queue and sqlc by @mastercactapus in #4186
- engine/cleanupmgr: Migrate shifts to job queue by @mastercactapus in #4192
- engine/cleanupmgr: move schedule data cleanup to job queue by @mastercactapus in #4203
- engine/cleanupmgr: individualize schedule data cleanup jobs by @mastercactapus in #4209
- engine/cleanupmgr: move alert log operations to job queue by @mastercactapus in #4211
- engine/cleanupmgr: finalize migration to job queue for cleanup operations by @mastercactapus in #4218
- engine: refactor rotations to process through job queue by @mastercactapus in #4269
- river: call
.Start()
synchronously by @mastercactapus in #4336 - engine/schedulemanager: refactor schedule calculation for maintainability and job queue migration by @mastercactapus in #4391
Architecture & Performance Improvements
5 PRs by @Forfold, @mastercactapus
- schedule: migrate schedule store to sqlc by @mastercactapus in #4394
- dataloader: refactor for simplicity and param support by @mastercactapus in #4381
- dataloader: add aggregate functions by @mastercactapus in #4387
- auth-check: replace "auth check" mechanism with proper external call counting by @mastercactapus in #4397
- chore: update pg_query_go to fix MacOs build error by @Forfold in #4393
Code Quality & Development
Ongoing TypeScript migration, SQLC migration for type-safe database queries, code modernization efforts, and build system improvements including the migration from Yarn to Bun for faster package management.
14 PRs by @Azakahul, @KatieMSB, @cwhy22, @mastercactapus
- build: yarn to bun by @mastercactapus in #4083
- Converted all remaining selection .js to typescript by @Azakahul in #4282
- Jsx to tsx convert calendar subscribe jsx files by @Azakahul in #4300
- ui/icons: convert icon components to typescript by @KatieMSB in #4278
- ui/service: convert ServiceLabelForm to typescript by @KatieMSB in #4279
- ui/util: convert js files to typescript by @KatieMSB in #4283
- dev: migrate from JSX.Element -> React.JSX.Element (part 1) by @mastercactapus in #4258
- ui/dev: Introduce CompList to replace FlatList by @mastercactapus in #4304
- ui/dev: Add ReorderGroup and ReorderableItem for CompList by @mastercactapus in #4305
- ui/services: migrate service components from FlatList to CompList by @mastercactapus in #4313
- ui/users: migrate user components from FlatList to CompList by @mastercactapus in #4314
- engine/compatmanager: migrate to sqlc by @mastercactapus in #4104
- Sqlc alert store by @cwhy22 in #4307
- dev: cache gettool by @mastercactapus in #4339
Dependencies & Build System
This release includes comprehensive dependency updates for both Go and JavaScript packages to ensure security and compatibility, along with improvements to our CI/CD pipeline.
🙏 New Contributors
Thanks to our new contributors who helped make this release possible:
- @Azakahul made their first contribution in #4282
- @cwhy22 made their first contribution in #4307
- @codylewandowski made their first contribution in #4375
- @weefatboi made their first contribution in #4384
Full Changelog: v0.33.0...v0.34.0