Releases
v0.18.0
Compare
Sorry, something went wrong.
No results found
0.18.0 (2026-10-28)
Features
Add throttle for transactional emails and workflows (f228961 )
api: let headless senders point List-Unsubscribe at their own one-click link (50be3c9 )
let headless senders point List-Unsubscribe at their own one-click link (d5c5f89 )
Verify SES configuration sets on startup (2f3cb50 )
Bug Fixes
api: encode non-ASCII headers and attachment filenames (ea3e7ae )
api: encode non-ASCII headers and attachment filenames (de90dae )
api: honour data-plunk-one-click for headless sends only (6f9cebf )
api: verify request origin on session-authenticated routes (00177cc )
api: verify request origin on session-authenticated routes (6eacbfc )
Cancel workflow executions and scheduled campaigns when a project is disabled (cf2d384 )
contacts: honour the status filter in select-all bulk actions (0fe3b07 )
contacts: honour the status filter in select-all bulk actions (d794c5a )
Correctly end job if last step of workflow is delay (18f18c1 )
landing: Remove inbound attachment and threading claims (beac2e3 )
mcp: page through campaigns and templates with page/pageSize (e720913 )
mcp: page through campaigns and templates with page/pageSize (28e0aa4 )
mcp: read the bare array GET /segments returns in plunk_list_segments (3de3369 )
mcp: read the bare array GET /segments returns in plunk_list_segments (674c2f5 )
Only accept SNS messages from topics in our own AWS account (4c84f64 )
segments: filter by segment membership without loading members (5848c60 )
segments: filter by segment membership without loading members (d44788f )
segments: scope referenced segments to the project (ce58df5 )
templates: only accept filters that keep the unsubscribe URL intact (6f2508c )
templates: recognise spaced unsubscribe placeholders in the headless warning (3e7ee20 )
templates: recognise spaced unsubscribe variables in the headless warning (dd2c6c0 )
webhooks: ignore opens SES marks as automated (3c1af34 )
webhooks: ignore opens SES marks as automated (032b868 ), closes #531
web: refetch project data once the active project is known (537d5a4 )
web: refetch project data once the active project is known (b7e1265 )
web: start from an empty cache after signing out (1097f0c )
workflows: keep cancelled executions from resuming (189b907 )
workflows: keep cancelled executions from resuming (7792d6b )
workflows: mark only the step that failed (2c11c81 )
workflows: mark only the step that failed (ee8db3f )
workflows: resume a waiting step once (d0f5471 )
workflows: resume a waiting step once (9c333bb )
workflows: treat a zero wait timeout as no limit (0ab8bf9 )
workflows: treat a zero wait timeout as no limit (006cc4c )
Performance Improvements
contacts: serve the contact field list from Redis (627f7e9 )
contacts: serve the contact field list from Redis (af0007f )
Code Refactoring
web: correct comments around the active project choice (df2f38b )
Documentation
Add open tracking and workflow improvements to the changelog (1fe84b5 )
document data-plunk-one-click for sender-hosted one-click unsubscribe (77e85b8 )
tracking: explain how automatic opens are left out (9805c18 ), closes #531
workflows: say what cancelling an execution stops (cf264fa )
workflows: suggest the email event names workflows receive (bf6a6ef )
workflows: suggest the email event names workflows receive (2eac0dd )
You can’t perform that action at this time.