Commit Graph
175 Commits
Author SHA1 Message Date
Matthew Meszaros 49ac868956 feat: add CRM task type API hooks 2026-06-07 06:18:06 +02:00
Matthew Meszaros 64bf23500d feat: add contact email lookup client 2026-06-07 06:17:28 +02:00
Matthew Meszaros 1ae7afa4c8 feat: drop em dash from deals empty-state copy 2026-06-06 19:44:13 +02:00
Matthew Meszaros 0ac0ba80ca Merge remote-tracking branch 'origin/main' into feature/crm-system 2026-06-06 19:42:26 +02:00
Matthew Meszaros 050d09c961 feat: add cross-pipeline deals search surface
Replace the client-side, 100-row-capped deals board as the default view
with a server-driven cross-pipeline table so totals stop lying at scale.

- POST /crm/deals/search: faceted filter body (query, status, pipeline,
  stage, owner, campaign, value range, close-date range), whitelisted
  sort, offset pagination, and Contact/Stage/campaign hydrated via JOIN.
- POST /crm/deals/summary: COUNT + SUM(value) per status and per stage
  over the same filter, with a mixed-currency guard, so header and board
  column totals are true server aggregates.
- DealsTable: cross-pipeline default view (infinite scroll, server
  filters/sort, honest summary stats) with a Table|Board toggle; the
  kanban stays as the single-pipeline working view.
- Deal attribution: campaign_id + source_mailbox_id columns + indexes
  (migration 000022) as groundwork for revenue lineage.
2026-06-06 19:42:20 +02:00
Matthew Meszaros 2f5e0208f5 feat: refresh unibox labels after category delete
Invalidate Unibox search and overview caches after category deletion so cascaded thread-label removals are reflected immediately in the dashboard.
2026-06-06 19:37:19 +02:00
Matthew Meszaros 5f5f29c39f feat: add unibox thread label menu
Add the thread header label picker, create-and-add flow, cache-backed header chips, and keyboard access for assigning categories to conversations.
2026-06-06 19:37:19 +02:00
Matthew Meszaros 1b4baa325a feat: add unibox category browsing
Wire category scopes through the Unibox page, rail, filter sheet, and conversation list so thread labels can be browsed and rendered from the collapsed inbox rows.
2026-06-06 19:37:19 +02:00
Matthew Meszaros 815665d6e2 feat: add unibox label client hooks
Add frontend request helpers and query hooks for thread labels, plus typed search and overview support for category-scoped Unibox data.
2026-06-06 19:37:19 +02:00
Matthew Meszaros 3f6935a3bb feat: polish live activity indicators
Add distinct live activity indicators for warming mailboxes, animate dashboard counters, and tighten lead progress labels.
2026-06-06 08:34:47 +02:00
Matthew Meszaros 10ffc2ad67 feat: mark live campaign analytics
Show a live indicator beside campaign performance metrics while a campaign is actively sending.
2026-06-06 07:53:15 +02:00
Matthew Meszaros a4801de99a feat: animate campaign overview stats
Use the animated number primitive for live campaign overview counters and rates.
2026-06-06 07:52:43 +02:00
Matthew Meszaros b047c30243 feat: allow rich stat values
Let shared stat cards render React nodes so dashboard counters can use richer animated or formatted values.
2026-06-06 07:52:10 +02:00
Matthew Meszaros 8d42dabff3 feat: add animated number primitive
Add a reusable realtime-friendly count-up number component for dashboard stats.
2026-06-06 07:51:18 +02:00
Matthew Meszaros aa4f43b284 feat: wire settings profile updates
Persist profile and workspace setting edits, show live billing usage, and remove the unused bulk email API helper.
2026-06-06 07:50:26 +02:00
Matthew Meszaros ce8181de0e feat: show campaign lead progress
Surface per-lead campaign progress in the embedded Leads table with status pills, current step, activity dates, and a compact progress strip.
2026-06-06 07:50:18 +02:00
Matthew Meszaros ac7aa9de87 feat: polish campaign launch and folders
Add the launch dialog, campaign folder controls, completed status filtering, folder chips, and shared UI affordances for campaign organization.
2026-06-06 07:50:10 +02:00
Matthew Meszaros 8a0683e9de feat: add campaign sequence action editor
Add action nodes to the campaign flow canvas, richer personalization insertion, conditional previews, and the shared activity indicator styling.
2026-06-06 07:50:00 +02:00
Matthew Meszaros 21edf45dbd feat: flatten analytics share card
Remove decorative cloud layers and shadows from the shared analytics image card so generated previews stay flat and artifact-free.
2026-06-05 16:44:32 +02:00
Matthew Meszaros 1663065b56 feat: fix analytics share image edge
Pin analytics share exports to the card dimensions and avoid white fallback pixels along the generated image edge.
2026-06-05 16:36:34 +02:00
Matthew Meszaros b0ac1d2435 feat: add campaign lead import actions
Allow campaign lead views to create or import contacts directly into the current campaign.
2026-06-05 15:43:37 +02:00
Matthew Meszaros 021a81b73d feat: polish campaign settings controls
Refresh campaign ordering, ramp, lead-flow, CC/BCC, and ESP matching settings with shared controls, clearer labels, and a more accurate provider coverage view.
2026-06-05 15:42:48 +02:00
Matthew Meszaros 3987e4db64 feat: polish campaign flow interactions
Render branch conditions as explicit IF blocks, improve flow layout and connected-component handling, add touch-safe schedule window creation, and animate flow node layout changes.
2026-06-05 14:36:26 +02:00
Matthew Meszaros 2b758113d6 feat: redesign campaign preferences
Replace tabbed campaign settings with a scrollspy settings page, add a unified tag and mailbox sender picker, and show ESP matching coverage for the resolved sender pool.
2026-06-05 14:36:12 +02:00
Matthew Meszaros 929a779ae5 feat: simplify campaign flow editor
Move sequence editing fully into the explicit flow canvas, support negative branch conditions and connection waits, and remove the obsolete rail and standalone branch panel components.
2026-06-05 09:11:24 +02:00
Matthew Meszaros 9ad3d8de53 feat: add campaign step configuration panels
Add reusable step panels for branch editing, per-step A/B variants, and per-step file attachments backed by the new sequence APIs.
2026-06-05 06:04:35 +02:00
Matthew Meszaros e4cd88d491 feat: upgrade campaign step composer
Replace the legacy email body editor with the rich step composer, add preview/template controls, expose AI writing in campaigns and unibox replies, and close confirms after successful actions.
2026-06-05 06:04:31 +02:00
Matthew Meszaros b9d83f1b2c feat: add campaign flow canvas
Replace the sequence step list with a React Flow canvas for branching outreach flows, including auto-layout, edge editing, and inline step editing.
2026-06-05 06:04:14 +02:00
Matthew Meszaros 161d668a8f feat: add campaign sequence api clients
Add frontend models, clients, and React Query hooks for step A/B variants, attachments, branching conditions, and AI writing generation.
2026-06-05 06:04:00 +02:00
Matthew Meszaros 7c518a5722 feat: clean up campaign rich text editor
Remove the stale lint suppression from the TipTap editor now that the hook dependencies are valid.
2026-06-04 18:58:05 +02:00
Matthew Meszaros 2730de2bff feat: add campaign rich text editor
Add a TipTap-based campaign step editor with formatting controls, link editing, personalization variables, and spintax insertion.
2026-06-04 18:57:30 +02:00
Matthew Meszaros 25cf6d044f feat: polish campaign step controls
Persist wait-day edits only at commit points and use the shared in-app confirm flow for deleting campaign steps. Update sequence deletion cache handling so one mutation instance can remove any step.
2026-06-04 18:57:24 +02:00
Matthew Meszaros cdb2eaa229 feat: add analytics share preview
Add preview sizing, copy-to-clipboard, and improved PNG rendering for analytics share cards. Refresh the exported share card visuals and keep chart bars constrained for compact layouts.
2026-06-04 18:57:08 +02:00
Matthew Meszaros f72952803e feat: add explicit campaign sender picker
Load campaign senders for explicit sender strategy and persist the selected mailbox pool through the campaign sender endpoint. Add a reusable account selector in campaign preferences.
2026-06-04 18:57:02 +02:00
Matthew Meszaros 40413db071 feat: add weekly campaign schedule editor
Add the dashboard editor for per-day campaign sending windows and wire campaign models to the new schedule_windows API shape. Refresh the shared calendar/date controls used by the campaign schedule screen.
2026-06-04 18:56:57 +02:00
Matthew Meszaros 203a3e0471 feat: add contacts sheet sync UI 2026-06-04 11:50:14 +02:00
Matthew Meszaros 7fe63a98eb feat: add lead sync frontend clients 2026-06-04 11:50:09 +02:00
Matthew Meszaros 6a4c370152 feat: share contact import mapping utilities 2026-06-04 11:50:04 +02:00
Matthew Meszaros e598b3bd5c feat: remove sheets from integrations UI 2026-06-04 11:50:00 +02:00
Matthew Meszaros 379e056a24 feat: fix organization sync query handling 2026-06-04 09:30:36 +02:00
Matthew Meszaros 0c49d3c607 feat: improve app routing and browser chrome 2026-06-04 08:55:26 +02:00
Matthew Meszaros f15753dc76 feat: polish dashboard menus and actions 2026-06-04 08:55:13 +02:00
Matthew Meszaros 276758e8b8 feat: improve contact drawer interactions 2026-06-04 08:54:48 +02:00
Matthew Meszaros 981ab01c8c feat: add bulk mailbox warmup controls 2026-06-04 08:54:42 +02:00
Matthew Meszaros ca310748fe feat: polish campaign schedule controls 2026-06-04 08:54:33 +02:00
Matthew Meszaros d630619a30 feat: redesign campaign sequence builder 2026-06-04 08:54:25 +02:00
Matthew Meszaros 33ccb99e7b feat: refresh campaign detail overview 2026-06-04 08:54:17 +02:00
Matthew Meszaros ef58d64988 feat: add campaign send control settings 2026-06-04 08:53:56 +02:00
Matthew Meszaros 2ad67762d4 feat: add dashboard analytics visuals 2026-06-04 08:53:42 +02:00
Matthew Meszaros 24422ed427 feat: add campaign template scoring
Add an advisory content score endpoint that reuses warmup linting heuristics for campaign templates.

Surface the score in the sequence editor so users can check subject and body deliverability before sending.
2026-06-03 06:27:07 +02:00