779 Commits

Author SHA1 Message Date
Dries Augustyns ccd516e4e8 feat: add Markdown cut link to footer and page for improved accessibility 2026-05-12 08:07:57 +02:00
ReylanLugo 6aee5db588 refactor(api): rely on auth middleware for domain endpoint permissions
Replace per-route apiKey/jwt branching with auth.projectId from middleware,
matching the contacts controller pattern. Preserve JWT admin gating on
POST/DELETE; API keys are project-scoped by design and skip the role check.
Cross-project domain access by ID now returns 404 instead of 403 to avoid
leaking existence.
2026-05-10 22:44:28 -04:00
Dries Augustyns 649bbf6d6b fix: enhance Quick Start card layout for improved responsiveness and usability 2026-05-10 13:57:46 +02:00
Dries Augustyns e43f70d8a1 fix: update activity item colors and backgrounds for improved visual distinction 2026-05-10 11:59:54 +02:00
Dries Augustyns f22da4add1 feat: implement caching for recent activity count to optimize performance and reduce database load 2026-05-10 11:37:31 +02:00
Dries Augustyns de6335e999 feat: implement bulk contact action selector for improved flexibility in bulk operations 2026-05-10 10:40:40 +02:00
Dries Augustyns 7658a59b5d feat: enhance campaign scheduling and audience settings UI for better clarity and usability 2026-05-10 09:52:25 +02:00
Dries Augustyns aaf5ac6530 feat: refactor template editing layout for improved usability and clarity 2026-05-10 09:24:21 +02:00
ReylanLugo 3f30a48c40 feat(api): allow API key authentication for domain endpoints
Switch /domains controller from `isAuthenticated` (cookie-only) to
`requireAuth` (cookie OR API key), matching the pattern used by other
project-scoped API endpoints (/v1/send, /contacts, etc.).

API keys are project-scoped credentials with full access; for write
operations the projectId in the request must equal the API key's
projectId. JWT (dashboard) auth retains role-based checks
(requireAdminAccess for POST/DELETE).

Also: improve UX when a domain is already linked to the same project
by returning a clear error instead of the generic "linked to another
project" message.

Refactor DomainService.checkDomainOwnership to make `userId` optional
(needed for API key path) while preserving its existing return shape
and adding `projectId` to the result.
2026-05-09 22:25:17 -04:00
Dries Augustyns c6340a1dc7 feat: add workflow duplication functionality with API endpoint and UI button 2026-05-09 16:51:36 +02:00
Dries Augustyns 4ba43dd3b6 feat: add external link to edit email templates in SendEmailStepDialog and WorkflowBuilder 2026-05-09 16:36:47 +02:00
Dries Augustyns d11495061d feat: add search functionality to campaigns list with debounce effect 2026-05-09 09:10:17 +02:00
Dries Augustyns fadc19d139 feat: Ability to change subscription status in workflows 2026-05-09 08:43:05 +02:00
Dries Augustyns 2ea1802290 fix: update TemplateSearchPicker to maintain selected template name on change 2026-05-08 08:03:15 +02:00
Dries Augustyns 15bdcf6e49 seo: Enhance copy of landing page 2026-05-07 09:21:30 +02:00
Dries Augustyns 2529c9b428 fix: enhance campaign finalization process to handle pending emails and ensure accurate status updates 2026-05-06 21:48:54 +02:00
Dries Augustyns 4ddafdc041 docs: expand documentation with new sections on importing contacts, unsubscribe pages, and API key management 2026-05-06 21:37:00 +02:00
Dries Augustyns 88be252a29 seo: add comparison pages for Mailjet, Buttondown, and Amazon SES 2026-05-06 20:21:49 +02:00
Dries Augustyns db5dfc46ce seo: add MX record checker and header checker tools 2026-05-06 19:40:25 +02:00
Dries Augustyns e2ce5d4e96 seo: Add dkim, dmarc, spf check 2026-05-06 17:06:14 +02:00
Dries Augustyns 735acff454 feat: add sanitize-html for improved email content sanitization 2026-05-06 11:06:50 +02:00
Dries Augustyns 1193d6c7e6 log: remove detailed logging of full SES notification for inbound email 2026-05-06 10:46:47 +02:00
Dries Augustyns 62661ae45f log: improve logging for inbound email notifications and enhance email content parsing 2026-05-06 10:37:39 +02:00
Dries Augustyns 4587e9d670 fix: enhance email content parsing and logging for better debugging 2026-05-05 20:35:36 +02:00
Dries Augustyns 88a8a02e53 ui: add SVG favicon and update favicon links for consistency 2026-05-05 08:34:41 +02:00
Dries Augustyns cbb3bffcf4 fix: update middleware matcher to exclude webmanifest files 2026-05-05 08:25:51 +02:00
Dries Augustyns 80ef65e04b docs: update README to clarify self-hosted alternative and add inbound emails feature 2026-05-04 21:15:54 +02:00
Dries Augustyns 361ec0b1eb refactor: convert forwardRef components to function components for consistency 2026-05-04 21:08:14 +02:00
Dries Augustyns ed9027b4ef refactor: implement step dialog components for workflow editing 2026-05-04 20:25:19 +02:00
Dries Augustyns d1f357c300 fix: update segment filter logic to retain value and unit, enhance activity name mapping 2026-05-04 19:39:32 +02:00
Dries Augustyns a126563542 fix: update segment filter logic to retain value and unit, enhance activity name mapping 2026-05-04 19:35:29 +02:00
Dries Augustyns a3cc62213f feat: add segment membership operators and enhance segment filter functionality 2026-05-04 19:07:04 +02:00
Dries Augustyns 2d05c3fbc1 refactor: remove unused .png files 2026-05-04 18:17:31 +02:00
Dries Augustyns c0752e1363 ui: refine README introduction for clarity and conciseness 2026-05-04 18:16:30 +02:00
Dries Augustyns 1b09ec1e13 ui: enhance Open Graph image dimensions and styling for improved social sharing 2026-05-04 18:14:55 +02:00
Dries Augustyns 0f00ca1b8c feat: add 'notTriggeredWithin' operator to segment filters for enhanced event tracking 2026-05-04 18:04:24 +02:00
Dries Augustyns 7615b62945 fix: update not found handling in GET route to return 404 response 2026-05-04 14:09:19 +02:00
Dries Augustyns ba23a1c6fa fix: replace font loading method with utility function for improved performance 2026-05-04 12:45:15 +02:00
Dries Augustyns 4b5815c1d6 ui: update Open Graph and Twitter card images for various pages to enhance social sharing 2026-05-04 12:32:51 +02:00
Dries Augustyns 29883ffc71 fix: enhance project name validation to exclude invisible and decorative characters 2026-05-03 08:14:18 +02:00
Dries Augustyns 5724ab9536 feat: add project switching functionality to command palette 2026-05-02 16:28:25 +02:00
Dries Augustyns 0c15cc84df seo: update descriptions for Brevo, Customer.io, and other email alternatives to enhance clarity and appeal 2026-05-02 15:02:23 +02:00
Dries Augustyns a729789922 seo: add spam checker tool with analysis for email content and subject lines 2026-05-02 14:03:58 +02:00
Dries Augustyns 26ec5864ae Merge branch 'next' of https://github.com/useplunk/plunk into next 2026-05-01 21:55:45 +02:00
Dries Augustyns 48425d1df1 feat: implement early fraud warning handling in webhooks 2026-05-01 21:55:32 +02:00
Dries Augustyns a5e8d239ee Merge pull request #356 from useplunk/release-please--branches--next--components--plunk v0.10.0 2026-05-01 20:13:21 +02:00
Dries Augustyns 532293e52a Resolve linting errors 2026-05-01 19:55:58 +02:00
github-actions[bot] fd066a6991 chore(next): release 0.10.0 2026-05-01 17:45:19 +00:00
Dries Augustyns bb72911fa2 feat: enhance contact addition with bulk email lookup and subscription options 2026-05-01 19:44:48 +02:00
Dries Augustyns 9fafeb7d4b ui: adjust spacing for customer logos section 2026-05-01 10:57:37 +02:00