Matthew Meszaros
3654ca0809
feat: profile and workspace name fields auto-save ~700ms after typing stops (empty names stay unsaved), replacing manual Discard/Save with the live status indicator
2026-06-11 13:00:27 +02:00
Matthew Meszaros
01e23c7596
feat: notifications settings auto-save instantly on toggle with a Saving/Saved header indicator, replacing the manual Discard/Save buttons
2026-06-11 13:00:27 +02:00
Matthew Meszaros
14837ed959
feat: guard settings tab switches — block in-app navigation (and warn on reload) when a tab has unsaved or failed auto-save changes, with a Stay/Discard/Save-changes dialog
2026-06-11 13:00:27 +02:00
Matthew Meszaros
aa9273fe06
feat: add autosave primitives — useAutosave hook (instant for toggles, debounced for text, with dirty/flush/retry status), an unsaved-changes registry context, and a Saving/Saved/retry header indicator
2026-06-11 13:00:18 +02:00
Matthew Meszaros
4f6837b395
fix: refresh the active-sessions list and confirm other devices were signed out after a password change, so revoked sessions disappear live
2026-06-11 12:42:44 +02:00
Matthew Meszaros
f209eca9ad
fix: Slack notification delivery now resolves a real channel (connection config, then the org's configured Slack automation channel) instead of an always-empty connect-time field that silently dropped every message; docs and UI corrected to match
2026-06-11 12:40:31 +02:00
Matthew Meszaros
3c040649c0
fix: changing your password now revokes every other session (keeping the current device), matching the security promise in the sign-in alert and docs
2026-06-11 12:39:24 +02:00
Matthew Meszaros
5bcc2baaa8
feat: implement the coming-soon security features — logged-in change-password (verify current, policy-checked, POST /me/password) with a real dialog, and new-device sign-in alerts (security notification category fired from the token service on an unrecognized OS+browser, delivered in-app and by email), removing the comingSoon stub helper and updating docs
2026-06-11 12:30:44 +02:00
Matthew Meszaros
160dc0bc76
feat: implement the coming-soon notification delivery channels — Email (SES/SMTP to the account email) and Slack (posts to the org's connected workspace via a new integration NotifySlack), wired in both backend and consumer with per-channel gating, real toggles replacing the coming-soon labels, and updated docs
2026-06-11 12:21:48 +02:00
Matthew Meszaros
39a9752d63
feat: real tokenized invite-accept link — public /invite landing page with safe preview (org, inviter, roles), accept-by-token plus the previously-broken accept-by-invitation-id, public preview + admin copy-link endpoints, login next-param redirect, and a Copy button that yields a working /invite?token link
2026-06-11 11:57:45 +02:00
Matthew Meszaros
19f66507b4
feat: fix multi-role review findings — atomic member+roles insert on invite accept (no partial-failure stranding), gate role deletion on the actor holding the role's permissions (blocks team-managers de-privileging admins), and hydrate+chip pending-invitation role sets
2026-06-11 11:32:57 +02:00
Matthew Meszaros
8540f7db15
feat: members can hold multiple roles — join tables for member/invitation role sets (migration 000044) with effective permissions as the bitwise OR recomputed on every assignment and role edit/delete, role_ids in invite/update APIs, multi-select checkbox role picker with colored chips in roster and invite flow, freely deletable roles
2026-06-11 11:24:19 +02:00
Matthew Meszaros
80d080b982
feat: fix realtime UUID param encoding crashing org-channel joins, remove the permission matrix from Roles & access, compact the role dropdown, and drop the redundant Integrations tab from settings nav
2026-06-11 11:16:13 +02:00
Matthew Meszaros
3473d09bcc
feat: fix review findings in the roles redesign — GetMembers role_id column (members endpoint 500), TransferOwnership role_id hygiene, accept-time role re-resolution, race-free in-use delete guard covering invitations, assignment anti-escalation with self-role-change block, canManage-gated members UI, colored RolePills, fresh currentOrganization on refetch, dev JWT_SECRET wiring for make realtime, docs corrections
2026-06-11 10:45:21 +02:00
Matthew Meszaros
2badeb7f50
feat: align team-roles docs with data-driven roles (seeded editable defaults, owner as status, color in the role editor) and drop dead accent maps from the members page
2026-06-11 10:20:41 +02:00
Matthew Meszaros
091b39f34e
feat: roles become workspace data — seed editable Admin/Manager/Viewer rows per org (migration 000043 with member backfill), require role_id for invites and role changes, add role colors with a shared colored RoleSelect dropdown in the roster and invite flow, and rebuild Roles & access around real roles with an Owner reference column
2026-06-11 10:18:45 +02:00
Matthew Meszaros
0b253337fc
feat: integrate custom roles across Roles & access settings (manager replaces the coming-soon placeholder, custom roles join the permission matrix and summary cards, permission-aware canManage gating via the org context bitmask)
2026-06-11 10:08:46 +02:00
Matthew Meszaros
63b2b046f9
feat: custom roles dashboard UI (roles manager with built-in reference rows, permission-checkbox editor with start-from presets, custom roles in member role picker and invite flow, realtime spine refresh)
2026-06-11 09:45:23 +02:00
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