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