Releases: triptechtravel/sequin
v0.14.6-tt2 — boot fix for DSN-less builds
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
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
Sequin v0.14.6 production Docker image archive
Archive of the upstream Sequin v0.14.6 Docker image (the final upstream release), preserved when this fork took over stewardship.
- Source: docker.io/sequin/sequin:v0.14.6
- Digest: sha256:336759c1c632ebdc87939bcea70b26b46df6593e666088e1bf29058209437d3e
- Restore:
gunzip -c sequin-v0.14.6-docker-image.tar.gz | docker load - Also available as
ghcr.io/triptechtravel/sequin:v0.14.6
Archived 2026-06-12. Upstream (Sequin Labs, Inc.) announced acquisition Aug 2025, shut down Sequin Cloud Oct 2025, and maintainer activity ceased Feb 2026. For maintained releases see v0.14.6-tt1 and later.