Commit Graph

683 Commits

Author SHA1 Message Date
Matthew Meszaros 384cf868db feat: store campaign reply classifications 2026-06-07 11:46:38 +02:00
Matthew Meszaros 3117284095 feat: add layered reply classifier 2026-06-07 11:46:31 +02:00
Matthew Meszaros c5135857e8 feat: refresh contact queries after deal changes 2026-06-07 11:07:29 +02:00
Matthew Meszaros 1286074ba8 feat: refresh contact queries after note changes 2026-06-07 11:07:24 +02:00
Matthew Meszaros 8287f5d8b4 feat: mark opened unibox threads seen 2026-06-07 11:07:19 +02:00
Matthew Meszaros aaaa2abf2b feat: polish CRM deals segmented controls 2026-06-07 11:07:15 +02:00
Matthew Meszaros 738629fa89 feat: add relative task due date control 2026-06-07 11:07:10 +02:00
Matthew Meszaros 8509d44bef feat: enrich unibox CRM panel actions 2026-06-07 10:46:09 +02:00
Matthew Meszaros 791165ad5e feat: refresh CRM task queries on create 2026-06-07 07:54:17 +02:00
Matthew Meszaros e482330351 feat: improve unibox contact context lookup 2026-06-07 07:54:13 +02:00
Matthew Meszaros 0a11049458 feat: add searchable task type picker 2026-06-07 07:54:10 +02:00
Matthew Meszaros 94673c3550 feat: page CRM deals board columns 2026-06-07 07:54:06 +02:00
Matthew Meszaros 051ae73fd2 feat: resolve named sender contacts 2026-06-07 07:54:02 +02:00
Matthew Meszaros add5ecd2d2 feat: show overdue task indicator in nav 2026-06-07 07:04:36 +02:00
Matthew Meszaros 42edf23a6f feat: add server-driven CRM tasks view 2026-06-07 07:04:30 +02:00
Matthew Meszaros 608ca652ec feat: polish CRM task type picker 2026-06-07 07:04:25 +02:00
Matthew Meszaros 4e015e7efd feat: add CRM task search clients 2026-06-07 07:04:21 +02:00
Matthew Meszaros 5f3940602f feat: add CRM task search summaries 2026-06-07 07:04:16 +02:00
Matthew Meszaros c969091577 feat: add teams settings page 2026-06-07 07:04:00 +02:00
Matthew Meszaros c10c4000e7 feat: add teams API hooks 2026-06-07 07:03:56 +02:00
Matthew Meszaros 62da3c3e3d feat: add organization teams API 2026-06-07 07:03:49 +02:00
Matthew Meszaros f9bc1dc40f feat: expose organization member display fields 2026-06-07 07:03:25 +02:00
Matthew Meszaros ab82cacbff feat: run migrations before seeding 2026-06-07 07:03:21 +02:00
Matthew Meszaros f19e418a36 feat: seed CRM task and inbox context data 2026-06-07 06:18:44 +02:00
Matthew Meszaros 03ddc2b6d8 feat: add unibox contact context panel 2026-06-07 06:18:38 +02:00
Matthew Meszaros 99d6a20c1b feat: add create task sequence action UI 2026-06-07 06:18:32 +02:00
Matthew Meszaros 9885e8b952 feat: create CRM tasks from campaign actions 2026-06-07 06:18:22 +02:00
Matthew Meszaros 484aea9597 feat: show task types on CRM tasks 2026-06-07 06:18:17 +02:00
Matthew Meszaros 30731f6595 feat: add CRM task type picker 2026-06-07 06:18:11 +02:00
Matthew Meszaros 49ac868956 feat: add CRM task type API hooks 2026-06-07 06:18:06 +02:00
Matthew Meszaros f4c738de06 feat: add customizable CRM task types 2026-06-07 06:18:01 +02:00
Matthew Meszaros 64bf23500d feat: add contact email lookup client 2026-06-07 06:17:28 +02:00
Matthew Meszaros 625b10a5c8 feat: add contact email lookup endpoint 2026-06-07 06:17:24 +02:00
Matthew Meszaros b98283ec2a feat: hydrate pipeline stages in list queries 2026-06-07 05:06:08 +02:00
Matthew Meszaros 3a5774c527 feat: handle missing sessions as token errors 2026-06-07 05:06:05 +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 2d593d0999 Merge pull request #29 from warmbly/feature/unibox-categories
feat: add unibox conversation labels
2026-06-06 19:40: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 86d7d1f7d3 feat: expose unibox thread label api
Add read and replace endpoints for conversation labels, wire service methods, and route sender/category filtering through the thread-collapsed search path.
2026-06-06 19:37:19 +02:00
Matthew Meszaros 0a611c0250 feat: collapse unibox search by thread
Return one inbox row per conversation, aggregate unread/message counts, join assigned labels, and align overview and unread counters with thread-level totals.
2026-06-06 19:37:19 +02:00
Matthew Meszaros a95a4e206e feat: add unibox thread label models
Add the conversation-label join table and expose thread label fields on the Unibox response models so inbox rows and overview data can carry category metadata.
2026-06-06 19:37:19 +02:00
Matthew Meszaros f46f3d4082 Merge pull request #28 from warmbly/feature/landing-page
feat: refresh landing page feature showcase
2026-06-06 18:18:05 +02:00
Matthew Meszaros 50edffef2c feat: sharpen landing pricing grid borders
Replace gap-based pricing card dividers with explicit responsive borders for a cleaner table edge.
2026-06-06 18:13:18 +02:00
Matthew Meszaros 7b3c8c568a feat: animate landing bento metrics
Add living motion to the one-platform bento with health-state highlights, worker bar shimmer, sequence step focus, and hover ring replay.
2026-06-06 18:13:14 +02:00
Matthew Meszaros 1d02580991 feat: update changelog shipping copy
Change the changelog status badge from weekly shipping to continuous shipping.
2026-06-06 18:13:03 +02:00