v34.1
adbar/trafilaturav34.1Jun 26, 2026by pierre-b
AI Summary
This update addresses stability and integration issues, fixing SMTP connections for Azure, restoring notification center unsubscribe functionality, preventing console crashes for new root accounts, and correcting MJML button padding styles in Gmail.
Key Highlights
- SMTP AUTH LOGIN support for Azure Communication Services
- Fixed notification center unsubscribe endpoint
- Fixed root account console crash on first login
- Fixed MJML button padding visibility in Gmail
New Features
- SMTP AUTH LOGIN support
- Unsubscribe endpoint updates
- Root account API fix
- MJML CSS compilation
Full Release Notes
- **Fix**: Workspace SMTP integrations now connect to servers that advertise only `AUTH LOGIN` (such as Azure Communication Services) — the raw SMTP sender hardcoded `AUTH PLAIN` and was rejected with a 504 before credentials were ever checked. It now reads the AUTH mechanisms advertised in EHLO and uses LOGIN when PLAIN isn't offered, preferring PLAIN when both are available (#368). - **Fix**: Unsubscribing from the notification center works again. The widget's "Unsubscribe" action and per-list toggle (and the console) now post to a dedicated `/unsubscribe` endpoint, while `/unsubscribe-oneclick` is reserved for the RFC 8058 mail-client one-click carried in the `List-Unsubscribe` header (it still accepts the legacy JSON body as a backward-compatible shim). When v34.0 made `/unsubscribe-oneclick` strictly RFC 8058 for the Gmail/Yahoo one-click fix, the notification center's JSON request was rejected with `400 "Invalid request"` and contacts stayed subscribed (#371). - **Fix**: A freshly installed root account no longer crashes the console on first login. Before any workspace existed, `user.me` returned `"workspaces": null` instead of `[]` for the `ROOT_EMAIL` user — the root path returns the workspace list straight from the database, which is a nil slice when empty — and the console crashed with `Cannot read properties of null (reading 'length')` instead of redirecting to workspace creation. The repository now returns an empty (non-nil) slice so the API always serializes `[]`, and the console normalizes a null `workspaces` to an empty array as a safeguard (#367). - **Fix**: An `mj-button` (or `mj-social`) whose inner padding was edited in the visual editor no longer vanishes in Gmail — the inner-padding object was compiled into the CSS as a Go map literal (`padding:map[bottom:0px top:0px]`) that strict clients reject; it now compiles to a valid CSS shorthand, and the editor no longer stores padding as an object (#369).