Dries Augustyns and GitHub
6759bffd2a
Merge pull request #381 from taniasanz7/patch-29-contact-email-link
...
feat(contacts): make email cell a link to the contact detail page
2026-05-16 21:45:25 +02:00
Dries Augustyns and GitHub
d2496bc51d
Merge pull request #368 from ReylanLugo/feat/domains-api-key-auth
...
feat(api): allow API key authentication for domain endpoints
2026-05-16 21:42:43 +02:00
Tania Sanz
6d98d51222
feat(contacts): make email cell a link to the contact detail page
...
Currently the only entry point from the /contacts list to a contact's
detail page is the small Edit icon-button in the actions column. Make
the email itself a Link to /contacts/:id so the obvious affordance
("click the thing that identifies the row") works too. Applied to both
the desktop table cell and the mobile card variant.
2026-05-16 21:26:18 +02:00
taniasanz7 and Tania Sanz
c484da88ab
feat: render template variables in WEBHOOK step url, headers and body
2026-05-16 08:11:35 +02:00
Dries Augustyns
9e4aa9443b
fix: improve iframe height adjustment logic in EmailEditor component
2026-05-13 19:22:17 +02:00
Dries Augustyns
a27d564e1a
fix: implement mergeContactData method for efficient contact data updates
2026-05-13 19:19:11 +02:00
Dries Augustyns
4e95c5a4e4
seo: implement OpenAPI operation rendering and add llms documentation
2026-05-13 17:37:02 +02:00
Dries Augustyns and GitHub
463301b5db
Merge pull request #373 from taniasanz7/patch-18-configurable-mail-from-subdomain
...
feat: make MAIL FROM subdomain configurable via MAIL_FROM_SUBDOMAIN env
2026-05-12 22:00:21 +02:00
Dries Augustyns
6195b39f3d
feat: add SwitchOffer component to promote switching from competitors for enhanced user engagement
2026-05-12 21:48:35 +02:00
Tania Sanz
e0bf0f628a
feat: make MAIL FROM subdomain configurable via MAIL_FROM_SUBDOMAIN env var
2026-05-12 20:35:53 +02:00
Dries Augustyns
715961c007
fix: handle undefined path in footer component for improved stability
2026-05-12 08:35:12 +02:00
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
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
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
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