Commit Graph
259 Commits
Author SHA1 Message Date
Matthew Meszaros 014cbe79fa feat: label machine opens (Apple MPP prefetch, UA-less fetchers) with human-open upgrade semantics, exclude them from open-triggered automations, and surface the auto-open count in workspace and campaign analytics (migration 000040) 2026-06-11 08:33:09 +02:00
Matthew Meszaros 8af2950d0b feat: reconcile missed realtime events by invalidating all queries when the websocket reconnects after a gap 2026-06-11 08:25:00 +02:00
Matthew Meszaros a06a525cf9 feat: live team presence across the dashboard (online avatar stack in header, viewing/replying indicators on unibox threads and rows, editing collaborators in the automation builder, campaign and contact viewers) plus audit-spine query invalidation 2026-06-11 08:04:11 +02:00
Matthew Meszaros 81c6c730de feat: animate the automation builder side panels
The node editor (trigger/condition/action) and the test-run/history panel
used to pop in and out with no transition. They now slide in from the
right with the same spring the app's other sheets use (AnimatePresence,
stiffness 300 / damping 32), the editor body fades when switching nodes,
the action config fields cross-fade when picking a different action or
target, and the insights panel body fades when toggling test vs history.
2026-06-10 11:52:26 +02:00
Matthew Meszaros 252be0911b feat: make the dashboard fully mobile compatible
Sweep every dashboard area for phone-width (360-430px) usability while
keeping desktop rendering identical behind md:/lg: prefixes:

- stack side-by-side panes and wide form grids below md; one-pane-at-a-time
  overlays with back affordances for list+detail layouts (unibox thread,
  contact context panel)
- full-width drawers and width-guarded dialogs (max-w vs 100vw, scrolling
  bodies, reachable footers) across settings, campaigns, contacts, CRM,
  integrations, api-keys, admin
- wide tables get overflow-x-auto wrappers or hidden md:table-cell for
  secondary columns; row actions stay touch-reachable
- viewport-clamped popovers/pickers via the PopoverMenu primitive
- prevent iOS Safari focus auto-zoom with a mobile-only 16px form-control
  rule in global.css
- responsive React Flow canvases (campaign sequences, automations) and
  recharts containers
- delete dead legacy components surfaced by the audit (old base/head
  scaffolds, duplicate Tags/Folders modals, unused colors picker,
  ContactEntry, contacts filter leftovers)
2026-06-10 11:37:15 +02:00
Matthew Meszaros 59a0205e33 feat: surface automation delete conflicts
Show the backend conflict message when deleting an automation fails because campaign run-automation steps still reference it.
2026-06-09 10:57:21 +02:00
Matthew Meszaros 599e359381 feat: improve automation builder actions
Add the run-another-automation native action to the builder, richer action visuals, task assignment fields, disabled-target warnings, and unsaved-change tracking for the automation editor.
2026-06-09 10:57:16 +02:00
Matthew Meszaros 9f90259a80 feat: add icons to select menus
Allow select options to render leading glyphs and let full-width selects match their trigger width through the popover menu.
2026-06-09 10:57:11 +02:00
Matthew Meszaros 0ee199e6ce feat: support team task assignment in campaigns
Use the shared assignee/team picker in campaign action steps, persist task_assigned_team_id, and make run-automation campaign steps surface disabled and trigger-mismatch warnings.
2026-06-09 10:57:07 +02:00
Matthew Meszaros b19a87c235 feat: add task assignee team picker
Introduce a shared dashboard picker that can target the fallback owner, a member, or an entire team while emitting user and team ids separately.
2026-06-09 10:57:03 +02:00
Matthew Meszaros 3236ffc459 feat: expand product docs and automation references
Restructure the docs navigation into product-focused pages, add automation expression reference content, and refresh related template and personalization surfaces.
2026-06-09 09:07:56 +02:00
Matthew Meszaros af78bf4d56 feat: refine deliverability tabs
Updates the deliverability range and metric segmented controls to use the lighter dashboard tab treatment.
2026-06-08 15:06:03 +02:00
Matthew Meszaros 5e7bec1f24 feat: prevent app flash
Hides the root until the first rendered frame so the dashboard does not briefly show unstyled content during startup.
2026-06-08 15:05:47 +02:00
Matthew Meszaros b83dc8ac14 feat: edit automation expressions
Adds frontend model support and builder controls for free-form automation condition expressions.
2026-06-08 15:05:43 +02:00
Matthew Meszaros b909f238ad feat: preview rendered sequences
Connects sequence preview to the server render path and surfaces template parse or unresolved-token issues in the composer.
2026-06-08 15:05:39 +02:00
Matthew Meszaros 9d41619ba9 feat: add template preview client
Adds typed frontend API access for rendering campaign templates through the server preview endpoint.
2026-06-08 15:05:34 +02:00
Matthew Meszaros 838a4e2ca9 feat: manage two factor settings
Adds the security settings 2FA enrollment wizard, recovery-code display, and disable flow backed by the new 2FA endpoints.
2026-06-08 15:05:30 +02:00
Matthew Meszaros 452fbcd534 feat: require two factor during login
Adds the 2FA login challenge step for users who pass email-code verification but still need a TOTP or recovery code.
2026-06-08 15:05:25 +02:00
Matthew Meszaros ffc7940d37 feat: add two factor client APIs
Adds typed frontend API helpers for 2FA status, enrollment, disable, login verification, and the login-confirm challenge response.
2026-06-08 15:05:21 +02:00
Matthew Meszaros 5513239b99 feat: manage notification preferences
Connects the notification settings page to the preferences API with editable category toggles and save/discard actions.
2026-06-08 15:05:17 +02:00
Matthew Meszaros defeacee5d feat: show realtime notifications
Adds the dashboard notification bell, marks feed items read, and refreshes the feed from realtime notification events.
2026-06-08 15:05:13 +02:00
Matthew Meszaros 55a02b6441 feat: add notification client APIs
Adds typed frontend client calls, hooks, and models for notification preferences, feed reads, and read-state mutations.
2026-06-08 15:05:09 +02:00
Matthew Meszaros cb85c13135 feat: refresh automations in realtime 2026-06-08 12:04:13 +02:00
Matthew Meszaros ce406079bc feat: add deliverability dashboard 2026-06-08 12:04:08 +02:00
Matthew Meszaros 3bc8193139 feat: show campaign ab winners 2026-06-08 12:04:03 +02:00
Matthew Meszaros 99ce8dd223 feat: launch automations from campaigns 2026-06-08 12:03:58 +02:00
Matthew Meszaros e0d8041fbc feat: build branching automation flows 2026-06-08 12:03:47 +02:00
Matthew Meszaros d5032383cd feat: add automation graph client models 2026-06-08 12:03:41 +02:00
Matthew Meszaros d00fb3b940 feat: clean integration detail imports 2026-06-08 06:56:14 +02:00
Matthew Meszaros a6290748e6 feat: move automation editing out of integrations 2026-06-08 06:55:37 +02:00
Matthew Meszaros 0d0da7b94f feat: route automation dashboard 2026-06-08 06:55:33 +02:00
Matthew Meszaros 478743ed09 feat: add automation flow builder 2026-06-08 06:55:28 +02:00
Matthew Meszaros f08464ce10 feat: add automation api bindings 2026-06-08 06:55:24 +02:00
Matthew Meszaros 5003ca4c49 feat: stabilize integrations page data 2026-06-08 06:27:02 +02:00
Matthew Meszaros 60924b78c5 feat: clean integration dashboard lint 2026-06-08 06:26:29 +02:00
Matthew Meszaros 82e753735c feat: add integration and meetings dashboard 2026-06-08 06:25:44 +02:00
Matthew Meszaros 8773b7f7f3 feat: push contacts to integrations 2026-06-07 20:30:52 +02:00
Matthew Meszaros c724ba59ec feat: expose integration action metadata 2026-06-07 20:30:41 +02:00
Matthew Meszaros edce3f5e8d feat: add sidebar activity counts 2026-06-07 19:35:27 +02:00
Matthew Meszaros 84e225ac4c feat: use path based unibox routes 2026-06-07 19:35:16 +02:00
Matthew Meszaros e87cd7e8e9 feat: fix unibox seen updates 2026-06-07 19:35:12 +02:00
Matthew Meszaros e0a3ee13a4 feat: polish CRM task type colors 2026-06-07 19:35:05 +02:00
Matthew Meszaros bd5356c7ff feat: add CRM task team controls 2026-06-07 19:34:56 +02:00
Matthew Meszaros 81c4539b20 feat: warn when stop on reply is off 2026-06-07 17:27:00 +02:00
Matthew Meszaros bb91e6d3e2 feat: add instant branch controls 2026-06-07 17:26:50 +02:00
Matthew Meszaros 9e4c9515bd feat: model instant branch options 2026-06-07 17:24:51 +02:00
Matthew Meszaros ac269a29a7 feat: use themed select in campaign flow 2026-06-07 12:46:46 +02:00
Matthew Meszaros 813b655d13 feat: explain reply branch matching 2026-06-07 12:46:39 +02:00
Matthew Meszaros 95c37efaa1 feat: clarify branch disconnect action 2026-06-07 12:46:08 +02:00
Matthew Meszaros 5ca9a9d944 feat: show instant reply branch guidance 2026-06-07 12:45:33 +02:00