v0.14.6-tt1 — first TripTech stewardship release
Superseded by v0.14.6-tt2. This build crashes at boot unless
SENTRY_DSNwas baked in at build time orCRASH_REPORTING_DISABLED=1is set —Sequin.Sentry.init/0raises on a nil compile-time DSN. Fixed in tt2.
First release of the maintained fork, on top of upstream's final release (v0.14.6).
Fixed
- MutexOwner no longer crashes on transient Redis errors (upstream PR sequinstream/sequin#2131, fixes sequinstream/sequin#2072). When Redis (or a Redis-compatible store like Dragonfly/KeyDB) restarted, MutexOwner returned an invalid gen_statem value, crashed, and the :one_for_all supervisor cascade took down every consumer — unrecoverable without a full restart. It now retries with exponential backoff (capped at 1 hour) and re-acquires when Redis returns. Multi-node split-brain window documented in the moduledoc.
- LiveView metrics pages no longer crash when Redis-backed metrics are unavailable —
{:ok, _} =crash patterns replaced with float-safe fallbacks (an integer fallback would have re-crashedFloat.ceil/1). - Empty
SENTRY_DSNno longer breaks the Docker build — normalized to nil in config/prod.exs.
Tests
MutexOwner behavior is now exercised against the real handle_event/4 and a live process via an injectable Redis client — deterministic, no iptables/root required.
Diff: v0.14.6...v0.14.6-tt1