Matthew Meszaros
|
cc0871d1b8
|
feat: contacts search gains an additive lead_status filter plus per-status lead_counts on the first page when exactly one campaign_id is set - the SQL predicates reproduce the read-time status derivation exactly (unsubscribed > bounced > replied > active > pending via LATERAL bool_or rollups), invalid lead_status or multi-campaign combinations return 400, and the web types/table pick up the new lead_counts shape
|
2026-07-11 10:11:36 +02:00 |
|
Matthew Meszaros
|
c311529576
|
feat: guard cursor chat against IME composition keys, keep a sent message lingering through an incidental blur, broadcast chat typed while the pointer is off the tracked surface, and close the input on page navigation
|
2026-07-02 20:33:44 +02:00 |
|
Matthew Meszaros
|
226e83683c
|
feat: remount the automation and sequence canvases on param-only navigation and restrict jump-to-teammate to distinct in-app paths so a jump can never save one record's graph into another
|
2026-07-02 20:33:44 +02:00 |
|
Matthew Meszaros
|
f804538ff5
|
feat: make canvas selections self-healing with a receiver-side TTL, a heartbeat that retries unsent deselects, and a clear frame for the old surface on in-place resource changes
|
2026-07-02 20:33:44 +02:00 |
|
Matthew Meszaros
|
954759a6ce
|
feat: make each teammate in the header presence dropdown clickable to jump straight to the page they are on
|
2026-07-02 07:40:07 +02:00 |
|
Matthew Meszaros
|
9f2b5d5586
|
feat: show each teammate's selected cards on the automation and sequence canvases as a name-tagged outline in their cursor color, with a selection heartbeat for late joiners and an unmount clear, plus cursor chat on both canvases
|
2026-07-02 07:40:06 +02:00 |
|
Matthew Meszaros
|
b1e68b3048
|
feat: add cursor chat to every collaborative surface, press / to type a message that floats next to your live cursor for teammates, riding the existing cursor frames with Enter-to-send and a linger-then-fade
|
2026-07-02 07:40:06 +02:00 |
|
Matthew Meszaros
|
c21f170429
|
fix: ignore live:patch frames in useLivePatch when the subscriber has no resource yet, instead of receiving every org patch
|
2026-06-30 19:20:08 +02:00 |
|
Matthew Meszaros
|
b85d2c8249
|
feat: refresh the deal board instantly when a teammate edits the pipeline's stages and show a live colored ring on a deal card while a teammate drags it
|
2026-06-30 19:18:55 +02:00 |
|
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
|
c1ad213dda
|
feat: make useLivePatch send-only when given no onPatch so mutation hooks can broadcast a live:patch without opening a channel subscription
|
2026-06-30 19:18:55 +02:00 |
|
Matthew Meszaros
|
2e110814fc
|
feat: make CRM deal-board stage moves land instantly for teammates on the same pipeline via a live:patch broadcast backed by the audit refetch
|
2026-06-30 10:34:14 +02:00 |
|
Matthew Meszaros
|
cca4ea5817
|
feat: add a reusable useLivePatch hook over the live:patch transport for optimistic collaborative state updates scoped by resource
|
2026-06-30 10:34:14 +02:00 |
|
Matthew Meszaros
|
18fd48bfcb
|
feat: render teammate avatars with initials fallback on live cursors so it is always clear who each pointer belongs to
|
2026-06-30 10:34:14 +02:00 |
|
Matthew Meszaros
|
dfe8b89730
|
feat: claim integration-connection presence via a new Drawer headerExtra slot in the connection details drawer
|
2026-06-30 10:06:49 +02:00 |
|
Matthew Meszaros
|
5f090287c8
|
feat: claim mailbox presence and show teammate viewers in the mailbox details drawer header
|
2026-06-30 10:06:49 +02:00 |
|
Matthew Meszaros
|
aef7fdf6d5
|
feat: claim template presence and suppress the page cursor layer while the email template editor is open
|
2026-06-30 10:06:49 +02:00 |
|
Matthew Meszaros
|
e1f9460520
|
feat: claim task presence and suppress the page cursor layer while the CRM task dialog is open
|
2026-06-30 10:06:49 +02:00 |
|
Matthew Meszaros
|
04ee4cb331
|
feat: claim deal presence and suppress the page cursor layer while the CRM deal dialog is open
|
2026-06-30 10:06:49 +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
|
4111a1960b
|
feat: skip ephemeral LIVE_ frames in useRealtimeEvents so cursor and drag traffic never triggers react-query invalidation
|
2026-06-30 10:06:31 +02:00 |
|
Matthew Meszaros
|
ba6847e985
|
feat: add the global per-route multiplayer cursor layer with a suppression context and mount it in AppShell around the page scroll container
|
2026-06-30 10:06:31 +02:00 |
|
Matthew Meszaros
|
49988fb8bd
|
feat: add shared Cursor and CanvasCursors presence components that render teammate pointers in screen space and @xyflow flow space
|
2026-06-30 10:06:31 +02:00 |
|
Matthew Meszaros
|
4ca46317a5
|
feat: add the reusable useLiveCursors transport (throttle, heartbeat, TTL prune, gone-on-leave, gone-on-resource-change) and a useLiveCanvas wrapper that adds the live node-drag stream
|
2026-06-30 10:06:31 +02:00 |
|
Matthew Meszaros
|
af4fa7b1d2
|
Merge remote-tracking branch 'origin/main' into referral-credits
|
2026-06-28 06:38:50 +00:00 |
|
Matthew Meszaros
|
315c25c158
|
chore(security): sync web package.json vite range to ^7.3.6 to match the security-patched lockfiles
|
2026-06-28 06:10:03 +00:00 |
|
Matthew Meszaros
|
3cb3616899
|
fix(security): bump web vite to 7.3.6, form-data to 4.0.6, and linkify-it to 5.0.1 in both lockfiles to clear CVE-2026-53571, CVE-2026-12143, and CVE-2026-48801
|
2026-06-28 06:09:35 +00:00 |
|
Matthew Meszaros
|
b618a9d6d4
|
feat: widen the billing compare-plans grid to the full settings panel (sm two / xl four columns) so all four plan cards fit comfortably
|
2026-06-28 05:58:31 +00:00 |
|
Matthew Meszaros
|
bbc07be875
|
feat: default the settings Section primitive to a stacked full-width layout and keep the title-rail look as an opt-in split layout so wide content is no longer squeezed into a narrow column
|
2026-06-28 05:58:31 +00:00 |
|
Matthew Meszaros
|
2f4e4f7ee6
|
feat: bound the settings layout to its container height so the left rail and content panes scroll internally instead of sliding under the sticky Settings topbar
|
2026-06-28 05:58:31 +00: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
|
8aec22ba71
|
feat: invalidate referral query keys on the referral and referral_credit realtime audit events in the web spine
|
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
|
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 |
|