Commit Graph
333 Commits
Author SHA1 Message Date
Matthias Endler 11c428d4ff fix(ses): emit List-Unsubscribe inside the header section, not the body
The raw MIME template in sendRawEmail produced a blank line between Content-Type and List-Unsubscribe whenever no custom headers were passed, because the ternary for custom headers expanded to an empty string surrounded by newlines.

Per RFC 5322 §2.1 a blank line terminates the header section, so List-Unsubscribe ended up as the first line of the body. Lenient clients (Gmail, Outlook) recover; strict clients (Thunderbird) do not, breaking one-click unsubscribe and degrading Gmail/Yahoo bulk-sender deliverability signals.

Collect optional headers (custom + List-Unsubscribe) into an array, filter empties, and append them to the Content-Type line with a single newline separator. No codepath can now produce a blank line inside the header block.
2026-04-30 15:20:06 +02:00
Dries Augustyns 2eb407993b feat: add configurable attachment limits for email service
Closes #358
2026-04-29 08:48:03 +02:00
Dries Augustyns 10946511b0 feat: enhance contact data handling by filtering empty strings and allowing null to delete fields 2026-04-27 16:59:18 +02:00
Dries Augustyns 5f741c66c7 fix: update project icon colors for improved visibility and consistency 2026-04-24 19:23:33 +02:00
Dries Augustyns d7eb85ffdd fix: update project disabled messages for clarity and consistency 2026-04-24 19:21:07 +02:00
Dries Augustyns 1c89ed083e feat: implement CommandPalette for enhanced navigation and recent pages tracking 2026-04-24 18:42:04 +02:00
Dries Augustyns f40cc86cec fix: Harmonize rings and hover states 2026-04-24 16:01:18 +02:00
Dries Augustyns 6f31fa2503 feat: add updateActiveProject function for in-place project updates 2026-04-24 14:58:06 +02:00
Dries Augustyns 98f1e80fca fix: prevent unnecessary state updates in search input effect 2026-04-24 13:49:16 +02:00
Dries Augustyns c1bcd358cc fix: Consistency across buttons and labels 2026-04-24 13:35:25 +02:00
Dries Augustyns 517753c420 fix: Consistency across cards 2026-04-24 12:54:43 +02:00
Dries Augustyns ab3edd7dc9 fix: improve layout and accessibility of workflow header and buttons 2026-04-24 12:09:54 +02:00
Dries Augustyns c910d20bb7 feat: Enhance ease of use of workflow editor 2026-04-24 11:56:43 +02:00
Dries Augustyns bdc9b30ef2 fix: standardize step type labels and update visual styles in workflow components 2026-04-24 10:17:10 +02:00
Dries Augustyns c8190b953f fix: Content negotiation for xml and txt 2026-04-23 08:04:39 +02:00
Dries Augustyns 1637d54e1b fix: add project name and sender email parameters to phishing content check 2026-04-22 22:03:57 +02:00
Dries Augustyns 15294a40d8 fix: add project name and sender email parameters to phishing content check 2026-04-22 22:03:53 +02:00
Dries Augustyns bb78c86c40 fix: update phishing confidence threshold to 95% 2026-04-22 21:59:34 +02:00
Dries Augustyns 208c809a90 fix: Add in-memory cache for lower-confidence phishing checks 2026-04-22 07:40:23 +02:00
Dries Augustyns b7eb2549d4 fix: turn warning into success log 2026-04-21 22:08:07 +02:00
Dries Augustyns 91d0d2d297 fix: update response format for phishing analysis and improve JSON parsing comment 2026-04-21 21:53:16 +02:00
Dries Augustyns 862875428d fix: log message for projects passing phishing checks 2026-04-21 21:49:57 +02:00
Dries Augustyns 2da8b065d0 feat: implement phishing detection using OpenRouter API with configurable sampling rate 2026-04-21 21:28:31 +02:00
Dries Augustyns 60146fcc10 ui: replace custom loading spinners with IconSpinner component across multiple files 2026-04-21 16:28:03 +02:00
Dries Augustyns c278a0fd94 feat: add className prop to EmptyState component for custom styling 2026-04-21 10:31:17 +02:00
Dries Augustyns 0b3aa28101 feat: add middleware support for .md file rewrites 2026-04-21 10:29:15 +02:00
Dries Augustyns ecaf99665a ui: Update empty states 2026-04-21 10:24:35 +02:00
Dries Augustyns 3d9b4e4eb3 ui: Update empty states 2026-04-21 10:22:05 +02:00
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 AugustynsandGitHub bfdfde68fb Merge pull request #352 from wcatbb/next 2026-04-20 19:48:04 +02:00
Dries Augustyns 3649392b47 fix: Sync display name in TemplateSearchPicker when initialName changes 2026-04-20 19:47:39 +02:00
Dries Augustyns cbde3cce3f fix: Sync display name in TemplateSearchPicker when initialName changes 2026-04-20 19:38:20 +02:00
Dries Augustyns b79d416667 feat: implement AWS SNS signature verification in SecurityService 2026-04-20 18:40:19 +02:00
Dries Augustyns bf12392b88 feat: integrate DOMPurify for sanitizing HTML content 2026-04-20 18:33:23 +02:00
Dries AugustynsandGitHub 35a830fa7b Merge pull request #350 from useplunk/dependabot/npm_and_yarn/next-16.2.3 2026-04-20 18:26:00 +02:00
Dries Augustyns 545d733794 docs: Add content negotiation to apps/wiki 2026-04-20 17:51:02 +02:00
Dries Augustyns 37ed1e49b7 fix: Implement content negotiation for markdown and html in middleware 2026-04-20 17:20:34 +02:00
Dries Augustyns df76be1b87 feat: Add accept/markdown to apps/landing 2026-04-20 17:09:56 +02:00
Dries Augustyns bd5a085802 feat: Add onboarding flow 2026-04-19 11:26:12 +02:00
Dries Augustyns bc4c79235e Resolve linting error 2026-04-19 10:03:14 +02:00
Dries Augustyns f2ebce0ef2 feat: Enhance login forms with last used authentication method 2026-04-19 09:53:28 +02:00
Dries Augustyns 52fc7f73ce ui: Use Link instead of a 2026-04-19 09:18:50 +02:00
Dries Augustyns 428079e632 ui: Transparent logo backgrounds 2026-04-19 09:09:46 +02:00
Dries Augustyns 19ea8b0122 ui: Polish details 2026-04-19 09:03:50 +02:00
Dries Augustyns 6fdc29fc0f ui: Fix double period in SEO description 2026-04-18 20:19:17 +02:00
Dries Augustyns c91d8c2e29 ui: Polish marketing website 2026-04-18 13:39:22 +02:00
Dries Augustyns 28fe7093f4 ui: Enhance contact details page with improved layout and loading indicators 2026-04-17 12:31:51 +02:00
Dries Augustyns 0803fd7bc4 ui: Clean up empty states, modals, animations 2026-04-17 12:27:40 +02:00
Dries Augustyns 03a058ad48 ui: Update user management pages 2026-04-17 11:03:12 +02:00