• v0.24.0 725ef4bd74

    v0.24.0
    All checks were successful
    Wiki Documentation / update-wiki (push) Successful in 17s
    / build-and-push (release) Successful in 1m29s
    Tests / test (push) Successful in 1m53s
    Tests / tag-format (push) Successful in 5s
    Stable

    nhpro released this 2026-06-06 12:29:33 +02:00 | 29 commits to master since this release

    First release under the new SemVer-by-content versioning policy. See VERSIONING.md for the rules and CHANGELOG.md for the full diff.

    Highlights since the previous tag

    • Atomicity — 9 transactional flows now run inside a single db.Transaction: user.Register, RegisterAdmin, CreateFromFederation, SendVerificationEmail, invitation.Create, account.RequestEmailChange, ConfirmEmailChange, ForgotPassword + AdminTriggerPasswordReset, RequestDeletion. Side-effect failures (role assignment, session revoke, email enqueue) roll back the whole flow instead of being swallowed with slog.Warn.
    • Clock injection — pkg/clock with Real + Fake; threaded through user, oauth, oidc, session, outbox. Lockout windows, signing-key rotation, and token TTLs are now deterministically testable.
    • Middleware decoupling — ClientAuth, BearerAuth, RequireClientScope consume narrow interfaces (ClientFinder, TokenLookup, SessionValidator) instead of *gorm.DB. Unit-testable without a database.
    • Outbox observability — orionauth_outbound_email_queue_depth (Gauge) + orionauth_outbound_email_delivered_total (CounterVec by outcome). OutboxWorker.Stop(ctx) drains the in-flight tick before exit so SIGTERM during an SMTP send no longer risks double-delivery at next boot.
    • Versioning hygiene — 63 legacy tags (-hf*, -pre*, -b*, -pr* typo) remapped to stable vX.Y.Z by scripts/remap-tags.sh. CI tag-format gate prevents the suffix soup from coming back.
    Downloads