A bug-fix patch release for self-hosted PostgreSQL (TLS/SSL) deployments and
webhook delivery deduplication. Backward compatible; defaults are unchanged.
Added
- Dashboard / Setup: The Infrastructure screen now exposes a Verify SSL Certificate toggle (
DATABASE_SSL_REJECT_UNAUTHORIZED), shown when SSL is enabled, so managed-Postgres TLS can be configured end-to-end from the UI without hand-editing.env. Defaults to verifying certificates; turn it off only for managed Postgres with self-signed certs (Supabase, Heroku, Render, Railway).
Fixed
- Database: The runtime PostgreSQL TypeORM connection now honors
DATABASE_SSLandDATABASE_SSL_REJECT_UNAUTHORIZED. Previously SSL was wired only into the migration CLI, soDATABASE_SSL=truewas silently ignored on the live connection. Defaults are unchanged (ssl: false), so existing deployments are unaffected. Thanks @farrasyakila (#205, closes #204). - Webhooks: Fixed idempotency-key generation for
message.received,message.sent,message.ack, andmessage.revoked. The dispatched payload is anIncomingMessagecarryingid(notmessageId), but the resolver short-circuited on a truthy'unknown'fallback and never readid, so every incoming-message webhook was keyedmsg_unknown— collapsing all messages into one deduplication bucket for consumers relying on theX-OpenWA-Idempotency-Keyheader. The resolver now usesid ?? messageId, with regression tests for the id-only and both-present payload shapes. Thanks @Singh1106 (#179). - Dashboard: The Login screen now derives the displayed version from
package.jsonat build time instead of a hard-coded literal, so it always reflects the installed release rather than a stale placeholder (closes #88).