Supersedes v0.14.6-tt1. Running in production at TripTech since 2026-06-12.
Fixed (new in tt2)
- DSN-less builds no longer crash at boot —
Sequin.Sentry.init/0raisedSENTRY_DSN was not set at build timein prod whenever no DSN was baked into the image. A nil DSN now cleanly disables Sentry, consistent with theCRASH_REPORTING_DISABLEDescape hatch.
Carried from tt1
- MutexOwner no longer crashes on transient Redis errors (upstream PR sequinstream/sequin#2131, fixes sequinstream/sequin#2072): retries with exponential backoff (capped at 1 hour) instead of an invalid gen_statem return that cascaded through the :one_for_all supervisor and killed every consumer until manual restart. Recovers automatically when Redis/Dragonfly/KeyDB returns.
- LiveView metrics pages survive Redis outages — float-safe fallbacks instead of
{:ok, _} =crash patterns. - Empty
SENTRY_DSNbuild-arg normalized to nil in config/prod.exs. - Deterministic MutexOwner test suite via an injectable Redis client.
Image
docker pull ghcr.io/triptechtravel/sequin:v0.14.6-tt2 (linux/amd64)
Diff: v0.14.6...v0.14.6-tt2