Dries Augustyns
e048fc1570
feat: implement meter event processing with queue for Stripe billing
2026-04-20 21:30:52 +02:00
Dries Augustyns
4322de929a
fix: reconcile totalRecipients in CampaignService to prevent stuck campaigns
...
closes #348
2026-04-20 20:15:56 +02:00
Dries Augustyns
b79d416667
feat: implement AWS SNS signature verification in SecurityService
2026-04-20 18:40:19 +02:00
Dries Augustyns
5e62f517fc
feat: Update new project bounce thresholds for stricter email handling
2026-04-16 08:05:56 +02:00
Dries Augustyns
44c86572c2
feat: Block domain changes for disabled projects with appropriate error handling
2026-04-16 07:56:41 +02:00
Dries Augustyns
effdfdb6d6
test: Update absolute count ceilings tests for established projects with project aging logic
2026-04-15 21:04:53 +02:00
Dries Augustyns
c0b2abaeca
feat: Enhance security metrics handling with new thresholds and improved messaging
2026-04-15 20:55:42 +02:00
Dries Augustyns
e3395083db
feat: Enhance email processing to include parsed HTML body content in inbound email records
...
Closes #342
2026-04-13 17:58:52 +02:00
Dries Augustyns
ae64c2dbb5
feat: Add emailId field to webhook events for better correlation with send requests
...
Closes #344
2026-04-13 17:15:41 +02:00
Dries Augustyns
52cb2b6c77
fix: Refactor date filtering logic for pagination in ActivityFeed and ActivityService
2026-04-13 17:06:22 +02:00
Dries Augustyns
9e2400c6de
fix: Enhance email processing to support campaign types and improve unsubscribe logic
2026-04-02 14:09:01 +02:00
Dries Augustyns
fb5aa8796a
feat: Add headless template type
2026-04-02 12:43:27 +02:00
Dries Augustyns
284838279d
test: Mock DNS lookup in integration tests for WorkflowExecutionService
2026-04-02 07:56:54 +02:00
Dries Augustyns
2c5a71518d
fix: Implement SSRF protection in webhook handling with safeFetch method
2026-04-02 07:48:43 +02:00
Dries Augustyns
d24259e8d2
feat: Add type to campaign
2026-04-01 18:49:51 +02:00
Dries Augustyns
3343e891bd
feat: Disable projects on failed payment
2026-04-01 18:07:08 +02:00
Mathias Schüpany
7b6540a748
fix: Adapt SNS Webhook validation regex pattern to also support AWS eusc partition
2026-03-29 11:32:04 +02:00
Edvin
3b39d847cd
fix: add alt text to email badge image
2026-03-23 09:08:24 +00:00
Dries Augustyns
a99cde8839
fix: Enhance email step configuration validation and recipient handling
2026-03-19 15:18:40 +01:00
Dries Augustyns and GitHub
f44d987bc9
Merge pull request #310 from mdwt/feature/multi-branch-conditions
2026-03-14 16:21:25 +01:00
Dries Augustyns
b9d692cf5b
fix: normalize field references and handle undefined values in JSON
2026-03-13 20:26:28 +01:00
Mikkel Svartveit
4451e921ca
fix: visual editor preview
2026-03-11 14:04:47 +01:00
mdwt and Claude Opus 4.6
92949b7596
feat: Add multi-branch workflow conditions (switch/case)
...
Add a `mode: 'multi'` variant to CONDITION steps that allows matching a
field against multiple values, each routing to its own named branch.
Branches are evaluated in order; first match wins. A `default` branch
catches unmatched contacts.
- Schema: z.union for legacy binary + multi-branch condition configs
- Backend: executeCondition handles multi-branch evaluation with stable
branch IDs, falls back to default when no branch matches
- Builder: Dynamic branch rendering with per-branch colors/labels,
dagre layout spreads branches horizontally
- Config UI: Mode toggle (Simple If/Else vs Multi-branch Switch),
dynamic branch list with add/remove
- Tests: 8 new multi-branch tests covering matching, ordering, default
fallback, mixed operators, and transition routing
- Full backward compatibility: all changes gated on config.mode === 'multi'
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 12:57:05 +02:00
Dries Augustyns
1dc423a1c4
chore: Enhance image upload validation with magic byte checks
2026-03-10 20:10:13 +01:00
Dries Augustyns
cc7fcdb4ef
fix: Align preview and actual email for templates and campaigns
2026-03-05 19:45:28 +01:00
Dries Augustyns and GitHub
9b15b93b96
Merge pull request #281 from 5h0ov/multipart/related-support-embed-image
...
feat(api): support inline images in emails using Content-ID
2026-03-05 11:26:41 +01:00
dependabot[bot] and GitHub
d162f255c2
chore(deps): bump multer from 2.0.2 to 2.1.1
...
Bumps [multer](https://github.com/expressjs/multer ) from 2.0.2 to 2.1.1.
- [Release notes](https://github.com/expressjs/multer/releases )
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/expressjs/multer/compare/v2.0.2...v2.1.1 )
---
updated-dependencies:
- dependency-name: multer
dependency-version: 2.1.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-03-05 07:56:38 +00:00
Dries Augustyns
b8f1ad9ab5
fix: Verify SNS URL before sending fetch request
2026-03-03 08:02:36 +01:00
Dries Augustyns
ec1f4c9374
fix: Support any locale on creation
2026-02-26 20:57:14 +01:00
Dries Augustyns
5528288c7b
Merge branch 'next' of https://github.com/useplunk/plunk into next
2026-02-23 21:45:25 +01:00
Dries Augustyns
7bd098bdd0
fix: Add support for STATIC segment type in CampaignService
2026-02-23 21:45:17 +01:00
Dries Augustyns and GitHub
cbea263a91
Merge pull request #298 from josephsellers/fix/cookie-domain-local-tld
2026-02-23 14:17:36 +01:00
Dries Augustyns
4b51e386e3
feat: Static segments
2026-02-23 13:57:32 +01:00
josephsellers
59aa7845ba
fix: correct cookie domain for .local TLD hostnames
...
getCookieDomain() returns '.localhost' for hostnames ending in '.local'
(e.g., app.plunk.local), causing the browser to reject the cookie
because the domain doesn't match the request origin.
Split the .localhost and .local cases so that .local hostnames return
the actual base domain (e.g., .plunk.local).
2026-02-22 16:01:25 +00:00
Dries Augustyns
21af8fe05e
fix: Correctly set domain status on manual verify
2026-02-21 08:41:24 +01:00
Dries Augustyns
2c4d95e604
fix: Do not unsubscribe existing contacts
2026-02-20 16:58:17 +01:00
Dries Augustyns
573e2e8449
security: Enhance job status retrieval with project authorization
2026-02-19 19:51:22 +01:00
Dries Augustyns
eec37ecb31
feat: Ability to change workflow trigger
2026-02-18 20:26:41 +01:00
Dries Augustyns
f947ee6f22
feat: Add dedicated received type
2026-02-18 16:24:55 +01:00
Dries Augustyns
de7ed84fcf
feat: Add billing for inbound
2026-02-18 15:23:31 +01:00
Dries Augustyns
e639c72e8b
fix: Enhance email bounce notification with latest bounce details
2026-02-18 10:20:58 +01:00
Dries Augustyns
d9ae171cc7
chore: fix linting errors
2026-02-17 19:09:01 +01:00
Dries Augustyns
78d3d224af
feat: Add support for custom email recipients in workflow steps
2026-02-17 18:57:15 +01:00
Dries Augustyns
d050b55baa
feat: Add inbound handling
2026-02-17 16:52:56 +01:00
Dries Augustyns
7964563b62
feat: Add advanced DNS configuration
2026-02-17 16:33:34 +01:00
Dries Augustyns
c286f49097
feat: Add initial handling in webhook for inbound
2026-02-17 16:03:50 +01:00
Dries Augustyns
a928666dfc
fix: Update contact subscription logic for upsert operations
2026-02-17 10:25:01 +01:00
Shuvadipta Das
64ba19e589
fix(test): consolidate SES MIME boundary tests into EmailService.test.ts
2026-02-16 18:55:03 +05:30
Shuvadipta Das
3a42012ac7
fix: removed "any" data type from SESService.test.ts
2026-02-16 18:47:42 +05:30
Shuvadipta Das
08e5c0d930
fix: contentId header injection fixed and separte unit test SESService added to verify MIME boundaries
2026-02-16 18:27:32 +05:30