Skip to content

notifuse

v31.0 Bugfix

This release fixes issues for SREs watching stability and regressions.

Published 15d Communication & Email
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

api email mailing-list newsletter self-hosted transactional

Summary

AI summary

Fixed self‑loop in segment recompute trigger and ensured timeout timestamps are stored as UTC.

Changes in this release

Bugfix Medium

Trigger short-circuits on segment membership events in queue_contact_for_segment_recomputation migration v31.0.

Trigger short-circuits on segment membership events in queue_contact_for_segment_recomputation migration v31.0.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Bugfix Medium

Recurring tasks via HTTP now write timeout_after in UTC.

Recurring tasks via HTTP now write timeout_after in UTC.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Bugfix Medium

GetWorkspaceConnection health check uses isolated context for pool.PingContext.

GetWorkspaceConnection health check uses isolated context for pool.PingContext.

Source: granite4.1:8b-q6_K@2026-05-19

Confidence: high

Full changelog

Database Schema Changes

  • Migration v31.0 updates the queue_contact_for_segment_recomputation trigger function on every workspace database to short-circuit when the inserted contact_timeline row is itself a segment membership event (kind IN ('segment.joined', 'segment.left')).

Fixes

  • Fix: queue_contact_for_segment_recomputation trigger no longer re-enqueues contacts when the inserted contact_timeline event is itself a segment membership change (segment.joined/segment.left). Removes a self-loop where every membership write re-queued the same contact.
  • Fix: Recurring tasks dispatched via HTTP now write timeout_after in UTC. The column is TIMESTAMP WITHOUT TIME ZONE and the scheduler compares it against time.Now().UTC(); on non-UTC hosts the local-time value caused the task to appear "still running" for the host's UTC offset. Same fix applied to the broadcast-pause next_run_after.
  • Fix: GetWorkspaceConnection's pool health check now uses an isolated context for pool.PingContext instead of the caller's. A caller-context cancellation no longer triggers pool eviction.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track notifuse

Get notified when new releases ship.

Sign up free

About notifuse

Notifuse is an open-source & modern emailing platform

All releases →

Related context

Earlier breaking changes

  • v30.1 SMTP auth with SMTP_USE_TLS=false now uses PLAIN-NOENC explicitly instead of auto-discover

Beta — feedback welcome: [email protected]