minor2026-10-04
2026.10.04 — My CallPage tab redesign
What’s Changed
New
- /my-callpage is now three tabs: 📞 Calls & Voicemails, 🛍️ My Products, 🔥 Popular Products —
with hash routing (
#calls,#products,#popular) and lazy loading per tab. - Call-detail view: tapping any call card opens a modal with the full summary, complete transcript, discussed products (photos + stable links), duration, outcome, and a store link.
- Voicemails on the Calls tab: audio player (
/api/customer/voicemails/:id/audio), transcript, unread badge, and mark-as-read on first play. - New API:
GET /api/customer/products-all— the customer’s engaged products (viewed, called about, discussed) across all pages, enriched with photo, price, page info, and stable product URL, grouped by store. - New API:
GET /api/customer/call-target— the best store for a general call (most recent call → most-viewed store → any active store). - General-call mode in the dialer backend:
POST /api/p/:slug/mintacceptsmode: "general", forcing no focus product and injecting the full-catalog general-call instruction.
Fixed
- The /my-callpage hero “Call” button showed a dead
alert()— it now opens the customer’s store dialer (/p/:slug) so one tap starts a real AI call with full catalog context. - Popular-product cards lacked photos and linked to the store instead of the product — every card
now shows a photo (with
photos[]fallback) and links to the stable product URL (/p/:slug/:productId/:name-slug).
Tests
- New
src/mycallpage-tabs.test.js: 15 unit tests for the tab helpers (pickGeneralCallTarget,groupProductsByPage,buildGeneralModeSection,resolveMyCallPageTab, voicemail URL builders). Full suite: 57/57 passing.
Create your call page
Turn your website visitors into phone conversations — set up in under two minutes.
Create your call page →