Commit Graph
144 Commits
Author SHA1 Message Date
Matthew Meszaros 7f5cc010bb feat: broadcast CRM pipeline and stage edits over live:patch and refresh the pipelines view instantly for teammates 2026-06-30 19:18:55 +02:00
Matthew Meszaros a93868fc77 feat: broadcast CRM task create/update/delete over live:patch and refresh the tasks view instantly for teammates ahead of the audit refetch 2026-06-30 19:18:55 +02:00
Matthew Meszaros 06c7a3502b feat: wire live cursors, live step drag, and persisted step positions seeded from x/y into the campaign sequence builder canvas 2026-06-30 10:06:49 +02:00
Matthew Meszaros 03453cc069 feat: wire live cursors, live card drag, and debounced drag-to-stick layout persistence into the automation builder canvas 2026-06-30 10:06:49 +02:00
Matthew Meszaros db94ce0c47 feat: capture the ?ref= referral code in the web signup flow and thread it through registration 2026-06-28 05:10:04 +00:00
Matthew Meszaros faad54b6a3 feat: add a redeemed promo codes table to the web billing settings page with its client, hook, and model 2026-06-28 05:10:04 +00:00
Matthew Meszaros ae09a1646c feat: build the dashboard referral settings page with its API clients, hooks, models, and route registration in web 2026-06-28 05:10:04 +00:00
Matthew Meszaros 38e9ca980f fix: correct the dashboard /auth/me avatar and password endpoints, guard self-row actions on the members page, align the steps-page permission gate with the server, harden realtime event handling, and remove the dead admin roles client 2026-06-15 08:12:35 +02:00
Matthew Meszaros a72addabeb feat: add OAuth app webhook configuration with an event picker, signing-secret reveal and rotate, per-org installs, and a cross-org delivery log 2026-06-15 08:11:35 +02:00
Matthew Meszaros d655ff4f59 feat: add the webhooks settings page with delivery observability, an onboarding setup step, and the webhook API client, hooks, and models 2026-06-15 08:11:35 +02:00
Matthew Meszaros c5dfa5e4e7 feat: remove the HTTP-request action from campaign steps and automations in favor of signed webhooks, keep fire_event for custom payloads, and drop the now-unused outbound quota plumbing 2026-06-15 08:11:35 +02:00
Matthew Meszaros fcafac4195 refactor: remove the campaign 'notify (webhook)' step type now that the HTTP request step covers outbound calls and there is no webhook setup surface 2026-06-14 10:48:06 +02:00
Matthew Meszaros ab24d8bbc8 feat: add a 'Fire event' action and campaign step that publish custom events to the realtime gateway (no public URL), an HTTP-request campaign step, a configurable automation dry-run test with per-step toggles, and fix the false 'updated by a teammate' toast on your own save 2026-06-14 09:52:49 +02:00
Matthew Meszaros e3c49fe571 feat: move the OAuth apps developer portal into Settings with a multi-step registration onboarding wizard (stepper, animated modal, logo upload) and an animated apps/authorized tab switch 2026-06-14 09:52:49 +02:00
Matthew Meszaros b06a11315f feat: add the OAuth 2.1 dashboard UI: an OAuth apps page (register apps with a scope picker, one-time client secret, rotate, delete, authorized-apps tab with revoke) and a standalone consent screen at /oauth/authorize, plus the API client, hooks, and sidebar entry 2026-06-13 14:07:21 +02:00
Matthew Meszaros 501b5009b4 feat: add an on-error branch to automation action nodes (try/catch routing, rose on-error handle, executor follows the error edge and treats the failure as handled instead of failing the run) 2026-06-13 13:15:41 +02:00
Matthew Meszaros 977daf8a01 feat: surface the inbound webhook trigger in the automations builder with a copyable per-automation webhook URL and caller-defined payload conditions 2026-06-13 13:08:04 +02:00
Matthew Meszaros 534928cfdd feat: add a safe Set-variables (transform) automation node — computes named values from Go templates against the event + prior step output and writes them back for later steps to reuse, running the same sandboxed text/template engine as every other action value (no I/O, no arbitrary code execution) 2026-06-13 12:18:45 +02:00
Matthew Meszaros dfdb304033 feat: add the HTTP request / webhook node to the automation builder — method/url/headers/body/output-key editor, registered in the action picker with a globe glyph, surfacing how to read the response in later steps and branch on {{.response.ok}} 2026-06-13 12:07:04 +02:00
Matthew Meszaros aed4a06190 feat: unify pagination by making the offset-based CRM deals/tasks search and meetings endpoints expose the same opaque next_cursor and {total, next_cursor, has_more} envelope as every keyset list (offset hidden inside the token), updating web clients, the OpenAPI spec, and the reference docs 2026-06-13 10:47:17 +02:00
Matthew Meszaros 587eae774e feat: serve the entire customer API (auth + resources) only under /v1 with no unversioned alias, and repoint the web and admin clients to the versioned base accordingly 2026-06-13 07:18:23 +02:00
Matthew Meszaros 71abb12a38 feat: stop campaigns silently stalling on a transient scheduler error by retrying instead of completing the task, end past-end-date campaigns cleanly, record scheduler failures to the campaign log, add a campaign-chain reconciler, and surface failures live in the dashboard activity panel 2026-06-13 06:27:01 +02:00
Matthew Meszaros 13e7663b03 feat: add the label_email action to the web action models — the campaign label_ids field plus the automation NATIVE_ACTIONS/labels/needs entries and a triggerCarriesThread reply-trigger gate 2026-06-12 16:44:29 +02:00
Matthew Meszaros aba0878833 feat: replace the per-node amber if-dot with a single output dot that opens a drag-drop create menu (email, action, or condition) on release, and add a Condition router node (kind wait) you can chain into nested decision trees 2026-06-12 09:51:11 +02:00
Matthew Meszaros a7a43e0c4c feat: rename the campaign sequences resource to steps across the API and URL (/campaigns/:id/steps), the JSON fields (target_step_id, step_id/step_name/step_index, analytics steps[], create body steps), the web client/models/route segment/labels, the audit step entity type, and the wire-contract docs; internal Go type names and the Kafka avro schema stay 2026-06-12 09:38:11 +02:00
Matthew Meszaros 6e9f2b4807 feat: add a Team presence section to workspace settings with admin-gated Show who's online and Show activity toggles, and make ToggleRow support a controlled persisted mode 2026-06-12 05:59:01 +02:00
Matthew Meszaros a0221dd312 feat: show one clear, app-wide 'you don't have permission' popup whenever a write action (edit/save/delete) is denied with 403, naming the missing permission or plan, instead of silent failures and generic error toasts across the dashboard 2026-06-11 18:30:53 +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 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 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 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 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 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 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 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 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 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 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 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 d5032383cd feat: add automation graph client models 2026-06-08 12:03:41 +02:00
Matthew Meszaros f08464ce10 feat: add automation api bindings 2026-06-08 06:55:24 +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