Commit Graph
131 Commits
Author SHA1 Message Date
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 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 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 bf12392b88 feat: integrate DOMPurify for sanitizing HTML content 2026-04-20 18:33:23 +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 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
Dries Augustyns c0b2abaeca feat: Enhance security metrics handling with new thresholds and improved messaging 2026-04-15 20:55:42 +02:00
Dries Augustyns 52cb2b6c77 fix: Refactor date filtering logic for pagination in ActivityFeed and ActivityService 2026-04-13 17:06:22 +02:00
Doug Beatty df18979e5e extract TemplateSearchPicker to fix workflow template pagination bug 2026-04-12 10:14:34 -05:00
Doug Beatty a981a8bba4 Improve template template loading and debounced search 2026-04-12 00:33:37 -05:00
Dries Augustyns fb5aa8796a feat: Add headless template type 2026-04-02 12:43:27 +02:00
Dries AugustynsandGitHub a8014cf7cf Merge pull request #320 from hanamizuki/fix/wait-for-event-combobox 2026-04-01 18:56:00 +02:00
Dries Augustyns 3214f6c42d fix: Hint custom event names in combobox when no matches are found 2026-04-01 18:55:32 +02:00
Dries Augustyns d24259e8d2 feat: Add type to campaign 2026-04-01 18:49:51 +02:00
Hana ChangandClaude Opus 4.6 3e3117e4a7 fix: replace Select/datalist with styled Combobox for event name inputs
Replace the conditional Select/Input pattern with a unified Combobox
(Input + Command dropdown) that always allows free-text input while
offering autocomplete suggestions from previously tracked events.

Applied to both workflow creation dialog and edit page (trigger event,
add WAIT_FOR_EVENT step, edit WAIT_FOR_EVENT step).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:44:45 +08:00
Dries AugustynsandGitHub f44d987bc9 Merge pull request #310 from mdwt/feature/multi-branch-conditions 2026-03-14 16:21:25 +01:00
Dries Augustyns c32b54f588 fix: Prevent switching if nodes are attached to multi-branch 2026-03-11 15:30:00 +01:00
Dries Augustyns 2c3e8970cb fix: Connect branches smoothly to original node 2026-03-11 14:52:30 +01:00
Mikkel Svartveit 4451e921ca fix: visual editor preview 2026-03-11 14:04:47 +01:00
mdwtandClaude 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 1a1e3204ee chore: Add web analytics 2026-03-10 20:03:11 +01:00
Dries Augustyns 5f82278282 chore: Add support email in quickstart 2026-03-07 12:19:51 +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 4b51e386e3 feat: Static segments 2026-02-23 13:57:32 +01:00
Dries Augustyns 64bd094b47 feat: Sort projects alphabetically in the dashboard and fix layout 2026-02-20 16:01:57 +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 3330d83d08 feat: Add billing for inbound 2026-02-18 15:38:41 +01:00
Dries Augustyns d9ae171cc7 chore: fix linting errors 2026-02-17 19:09:01 +01:00
Dries Augustyns e4e334c77a fix: Center "Add Step" nodes below parent nodes and update positions on drag 2026-02-17 19:06:22 +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 f9b1354460 fix: Remove 'Optional' label from MAIL FROM Domain and Inbound Email headings 2026-02-17 18:19:58 +01:00
Dries Augustyns 7964563b62 feat: Add advanced DNS configuration 2026-02-17 16:33:34 +01:00
Dries Augustyns 4c81d9ec04 feat: add documentation link and redirect to WIKI_URI 2026-02-17 10:30:17 +01:00
Dries Augustyns 0cf0a26a97 feat: Integrate NuqsAdapter for improved state management and query handling 2026-02-06 09:01:25 +01:00
Dries Augustyns 0d4b694208 fix: Implement merging for activity updates to preserve component state 2026-02-06 08:55:24 +01:00
Dries Augustyns c85df75d53 feat: Add bounce and complaint filter to activity feed 2026-01-21 20:52:23 +01:00
de106f9d91 Update apps/web/src/pages/templates/[id].tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-17 12:30:00 +01:00
Jan Behrends 8a38766c02 fix: Ensure template type is loaded before rendering Select
Addresses #242. The Select component renders with value={undefined}
before useEffect populates editedTemplate.type. This triggers a React
warning: 'Select is changing from uncontrolled to controlled.'

On the hosted environment, this likely causes Radix UI's data-placeholder
attribute to remain set on the trigger, with the selected value text
not being rendered despite the value being loaded in state.

This change extends the loading condition to wait for editedTemplate.type,
ensuring the Select never renders in an undefined/uncontrolled state.
2026-01-16 13:09:14 +01:00
Dries Augustyns 99526ebfc2 chore: Rename within field label to align with new older than 2026-01-13 10:25:10 +01:00
Shuvadipta Das b5fa21a57c feat: add "olderThan" segment filter operator
- Added `olderThan` and `triggeredOlderThan` operators to types and schemas
- Implemented backend logic for `olderThan` operator in SegmentService
- Updated SegmentFilterBuilder and shared index/types files to support new time-based operators
2026-01-12 11:10:53 +05:30
Dries Augustyns 7386441e61 feat: Add id as reserved field in templates, campaigns and workflows 2026-01-07 17:49:36 +01:00