Commit Graph
654 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 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
Matthew Meszaros 0ef31f9efa feat: retune campaign builder cursor path
Align the campaign builder demo cursor with the visible node and canvas dismissal positions.
2026-06-06 18:12:59 +02:00
Matthew Meszaros e0cb4bfd48 feat: place open source showcase on homepage
Wire the open-source showcase into the landing page between the changelog and templating sections.
2026-06-06 18:12:50 +02:00
Matthew Meszaros 5262347eb6 feat: add open source landing showcase
Introduce a full-width open-source band with GitHub CTAs, self-host terminal copy, stack details, contribution links, and self-hosting notes.
2026-06-06 18:12:39 +02:00
Matthew Meszaros 06164fea28 feat: add fullscreen mobile site menu
Replace the compact mobile nav with a fullscreen menu that supports accordions, animated open and close states, escape handling, and scroll locking.
2026-06-06 18:12:35 +02:00
Matthew Meszaros a9805efe51 feat: remove obsolete showcase scroll hook
Drop the unused schedule block scroll animation now that the mocks manage their own demo motion.
2026-06-06 11:58:05 +02:00
Matthew Meszaros b8d1e440c4 feat: clarify developer demo dismissal
Update developer mock comments to match the cursor flow that dismisses the modal through the scrim.
2026-06-06 11:57:51 +02:00
Matthew Meszaros 9d112dc75c feat: refine ai assistant demo controls
Keep tone chips and the generate button stable while aligning the demo cursor with the intended actions.
2026-06-06 11:57:47 +02:00
Matthew Meszaros 00fa4e1689 feat: stabilize unibox composer controls
Keep the reply composer controls on a single row and prevent recipient chips from wrapping awkwardly.
2026-06-06 11:57:30 +02:00
Matthew Meszaros 541fbb57e4 feat: refine analytics share mock
Prevent analytics export controls from wrapping and make the share modal dismiss through the demo cursor timeline.
2026-06-06 11:57:24 +02:00
Matthew Meszaros e29899624b feat: stabilize ai assistant toolbar controls
Keep the AI assistant composer actions on one row in the fixed-width landing mock.
2026-06-06 11:57:19 +02:00
Matthew Meszaros 5094e79c54 feat: respect reduced motion in crm mock
Disable the CRM add-deal target animation when visitors prefer reduced motion.
2026-06-06 11:57:00 +02:00
Matthew Meszaros 184d9d43d2 feat: stabilize developer mock controls
Keep API-key controls and modal actions stable while adjusting the developer demo cursor positions.
2026-06-06 11:56:57 +02:00
Matthew Meszaros ee337df82b feat: stabilize integrations mock controls
Prevent integration status pills and action controls from wrapping while refining the Slack connection cursor path.
2026-06-06 11:56:52 +02:00
Matthew Meszaros 96ac201423 feat: refine unibox demo interaction
Adjust the unibox mock cursor so the composer opens from Reply and closes from the thread area without animating the send control.
2026-06-06 11:56:48 +02:00
Matthew Meszaros 86e0daebef feat: compact campaign builder toolbar controls
Keep the campaign builder composer controls from wrapping inside the fixed-width product mock.
2026-06-06 11:56:44 +02:00
Matthew Meszaros 931168e2a9 feat: stabilize crm mock toolbar controls
Keep CRM toolbar actions and filters from wrapping while preserving the animated add-deal target.
2026-06-06 11:56:13 +02:00
Matthew Meszaros 4e65e3a8f0 feat: stabilize schedule mock date controls
Prevent campaign date labels from wrapping inside the schedule landing mock controls.
2026-06-06 11:56:09 +02:00
Matthew Meszaros 06fac3f4a3 feat: refine campaign builder demo cursor
Adjust the landing mock cursor path so it opens the drawer and dismisses it from the canvas with cleaner timing.
2026-06-06 11:56:05 +02:00
Matthew Meszaros fe0feeb1eb feat: wire landing page feature showcase
Replace the older feature bands with the new product-window tour, add the supporting showcase sections, and hook the scroll animations into the page.
2026-06-06 11:55:40 +02:00
Matthew Meszaros eaa201b5a1 feat: add templating landing showcase
Add a Go templating section that explains merge fields and fallback behavior on the landing page.
2026-06-06 11:55:35 +02:00
Matthew Meszaros 6ca3d2e924 feat: add changelog landing showcase
Introduce a compact changelog section to highlight recent platform updates after the product feature tour.
2026-06-06 11:55:31 +02:00
Matthew Meszaros ef2ba2af28 feat: add crm pipeline landing mock
Show how positive replies become pipeline deals with stages, owners, notes, and tasks.
2026-06-06 11:55:28 +02:00
Matthew Meszaros 5cd4e0cad2 feat: add developer api landing mock
Add the API keys and webhook mock that supports the developer-focused landing section.
2026-06-06 11:55:23 +02:00
Matthew Meszaros 2c32940ee3 feat: add integrations landing mock
Show provider connections, signed webhook configuration, and encrypted-token positioning for the integrations section.
2026-06-06 11:55:19 +02:00
Matthew Meszaros 77fa10a3dd feat: add ai assistant landing mock
Add the writing assistant screen that demonstrates prompt-driven email drafting and tone controls.
2026-06-06 11:55:15 +02:00
Matthew Meszaros 9d4cf33880 feat: add analytics landing mock
Show deliverability metrics, campaign ranking, and account health in a product-style analytics screen.
2026-06-06 11:55:10 +02:00
Matthew Meszaros c66c0a4856 feat: add unified inbox landing mock
Present the reply triage workflow with mailbox filters, message classification, and an inline reply pane.
2026-06-06 11:55:07 +02:00
Matthew Meszaros 26abb6e17c feat: add campaign schedule landing mock
Add a weekly sending-window editor mock with preset controls, timezone details, and drag-to-create animation hooks.
2026-06-06 11:55:01 +02:00
Matthew Meszaros 7badea0a1b feat: add campaign builder landing mock
Show the sequence builder canvas with branching, step controls, and an email composer for the campaign feature section.
2026-06-06 11:54:58 +02:00