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
|
2c910dcdeb
|
feat: make a campaign step's Original a first-class weighted A/B arm driven by a single draggable traffic-split bar, persisting the control share as an is_control variant row
|
2026-06-15 08:11:53 +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
|
899bdfb2f0
|
fix: stop the automation builder from showing 'Updated by a teammate' when the change was made by the same user elsewhere (e.g. toggling enabled from the automations list) by consulting the global self-mutation signal
|
2026-06-14 11:12:07 +02:00 |
|
Matthew Meszaros
|
c51946e4da
|
fix: track the current user's own audited mutations from the realtime actor id so collaborative editors can tell a self-made change (list-row toggle, another tab) apart from a teammate's edit
|
2026-06-14 11:12:07 +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
|
5cee0375f9
|
fix: let portaled pickers/menus nest inside capture-phase and popover containers via a shared data-floating marker, and migrate the last native date/time inputs (contact activity range, unibox snooze + send-later) to the themed pickers
|
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
|
b94a053ac9
|
feat: replace native date/time inputs with the themed pickers across the dashboard (audit log, admin audit, CRM tasks/deals, contacts and unibox filters, new meeting, campaign schedule)
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
736bb3d0c0
|
feat: add themed DatePicker, TimePicker, and DateTimePicker primitives so the dashboard never falls back to native browser date/time controls
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
e24c75a7db
|
feat: render Pipedrive's real monogram in white on a Green Haze tile in integrations, via a full-bleed brand-logo option
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
9cf56ee0af
|
feat: match the analytics tab's range/metric controls to the deliverability tab (slate-100 track with a white active pill) instead of the dark slate-900 blocks
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
fc5e014766
|
fix: remove dead admin Roles/Users/Plans tabs, point the deliverability 'all mailboxes' link at /app/emails, and add the missing document titles so those dashboard tabs no longer read 'Page not found'
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
f598237348
|
feat: redesign the Settings tab into grouped sections with a framer-motion sliding active indicator and animated content transitions
|
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
|
c5226147ac
|
fix: use Pipedrive's Green Haze (#08A742) for the provider glyph background instead of the darker favicon green
|
2026-06-13 13:28:35 +02:00 |
|
Matthew Meszaros
|
a7fc7263a8
|
fix: make HTTP request headers/body placeholders visible with normal input colors and fix the Set variables Add variable button (stop filtering the blank row on edit)
|
2026-06-13 13:27:29 +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
|
9aa3300f46
|
feat: capture per-action output in automation run history (HTTP status/ok, set-variables values, rendered channel/url/message) and render it under each action in the builder History panel
|
2026-06-13 13:11:58 +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
|
9904919ae3
|
feat: replace the Pipedrive provider glyph with its real mark, a Green Haze circle and white blocky lowercase p, instead of a generic letter tile
|
2026-06-13 12:55:57 +02:00 |
|
Matthew Meszaros
|
2d41cb541e
|
feat: use Slack's real four-color hash and Close's colored orb mark, fix Calendly, and give Pipedrive a branded Green Haze tile in the integrations provider glyph
|
2026-06-13 12:37:49 +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
|
5118033389
|
feat: render real brand logos in the integrations tab — ProviderGlyph now draws the official simple-icons (CC0) SVG marks for Slack, Discord, HubSpot, Salesforce, Zapier, n8n, Calendly, Make, and Cal.com in each brand's color on a neutral tile, falling back to a tinted initial for providers without a bundled mark
|
2026-06-13 12:15:06 +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
|
969d53af6d
|
feat: animate the top-left Add-step dropdown the same as the drag-create menu (AnimatePresence scale + fade growing from the top-left) instead of appearing instantly
|
2026-06-12 17:47:05 +02:00 |
|
Matthew Meszaros
|
e321d582dc
|
feat: smoother campaign steps canvas — position-preserving layout (no jump on connect/disconnect), an animated drag-create dropdown, Condition adds the if-branch directly instead of a router you drag from, an open then dot instead of an auto-STOP, then-targets placed to the right for clean branch lanes, and the label-email action
|
2026-06-12 16:44:29 +02:00 |
|
Matthew Meszaros
|
c41205ec9a
|
feat: rework the automation canvas — drag a node's dot to empty for an animated create dropdown (reliable react-flow pane detection), unified dagre spacing for smoother branch lines, and the label-email built-in action gated to reply triggers
|
2026-06-12 16:44:29 +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
|
5c7045d742
|
fix: open the drag-create dropdown reliably by detecting drops on the react-flow pane (via onConnectStart ref + pane-class check) instead of connectionState.toNode, and route IF-block drags through the menu too so you can chain another condition
|
2026-06-12 12:55:54 +02:00 |
|
Matthew Meszaros
|
eb74b7dafb
|
feat: fix the Steps tab still pointing at /sequences and replace remaining user-facing Sequences with Steps (route page + folder renamed to steps, document title regex, permission labels, not-found hint, campaign count)
|
2026-06-12 10:03:02 +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
|
a69bf78b2c
|
feat: move the full email toolset (template picker, save as template, write with AI, content score) into the shared EmailContentEditor and have the original step composer use it too, so every A/B variant has the identical tools as the main email
|
2026-06-12 09:09:34 +02:00 |
|
Matthew Meszaros
|
e7977d7bdf
|
feat: edit a step's email and its A/B variants in one horizontal tab bar (Original as the first tab plus a tab per variant, each showing its split share), with an embedded SequenceView for the original arm
|
2026-06-12 08:39:12 +02:00 |
|
Matthew Meszaros
|
2c4b0a07df
|
feat: give A/B variants the same composer as the main email via a shared EmailContentEditor (subject + body + Edit/Preview render + template validation), so a variant is edited and content-checked exactly like the step's own email
|
2026-06-12 08:32:56 +02:00 |
|
Matthew Meszaros
|
8de7e32857
|
feat: treat a campaign step's own email as the A/B control arm so contacts split across the original plus active variants by weight, and redesign the step variants editor to show the original and variants as one weighted set with live split percentages
|
2026-06-12 08:04:03 +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
|
81f81fbe20
|
feat: normalize automation updated_at to a primitive before comparing it (the API client revives it into a Date, so === compared by reference and the editor always flagged its own save as a teammate change)
|
2026-06-12 04:58:46 +02:00 |
|
Matthew Meszaros
|
21f25a5361
|
feat: use automation updated_at as the remote-version token in AutomationFlow so the editor stops falsely toasting its own save as a teammate change
|
2026-06-12 04:34:13 +02:00 |
|
Matthew Meszaros
|
f6540d9f2f
|
feat: rejoin org/user channels and force isConnected toggle on zombie-socket wake so a backgrounded dashboard tab resumes realtime events and presence without a reload
|
2026-06-12 04:34:13 +02:00 |
|
Matthew Meszaros
|
48ce9074eb
|
feat: automation presence reflects intent — editors claim 'editing', view-only members claim 'viewing', so the resource viewers stack and online dropdown show accurate activity
|
2026-06-11 19:55:01 +02:00 |
|
Matthew Meszaros
|
c2215a62c1
|
feat: richer online-presence dropdown — click to pin, profile pictures, a live online + editing count, and clear per-person activity ('Editing an automation', 'Viewing a conversation', 'Replying to a message') with color-coded icons instead of a bare 'editing'
|
2026-06-11 19:54:44 +02:00 |
|
Matthew Meszaros
|
801c6b8619
|
fix: faster, research-backed websocket reconnect — replace the slow 1s/2s/4s exponential backoff with a fast-start schedule (first retry ~120ms) plus jitter, lower the heartbeat to 25s/8s for quicker dead-connection detection, retry token-fetch failures on the same fast backoff, and clear a Safari-suspended CONNECTING zombie socket on tab refocus so it reconnects instantly instead of hanging
|
2026-06-11 19:52:55 +02:00 |
|