mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-30 16:16:17 +00:00
- useContactTimeline now uses cursor-based useInfiniteQuery (50/page, before=oldest cached at) instead of a one-shot fetch - search input filters subject/content/campaign/sequence/mailbox/ reason/intent; matches are highlighted in the row - date range picker (popover with from/to + 7/30/90d presets) filters the visible list by event timestamp - segmented type chips with motion indicator - IntersectionObserver sentinel auto-fetches next page as user scrolls - when filters narrow the visible set, lazy-prefetch more pages so results aren't artificially short (bounded to 250 events / 5 pages) - skeleton rows with staggered pulse on first load, inline spinner on subsequent page loads, "end of history" marker when done
Warmbly Web App
React + TypeScript frontend for Warmbly.
Stack
- React 19
- Vite (Rolldown)
- TypeScript
- TanStack Query
- Zustand
- Tailwind CSS 4
Prerequisites
- Node.js 20+
- pnpm 10+
Setup
cd web
pnpm install
cp .env.example .env
Run
pnpm dev
Default dev URL: http://localhost:5173
Quality Checks
pnpm lint
pnpm test:run
pnpm build
Project Layout
src/approute pages and layoutssrc/componentsUI and feature componentssrc/lib/apiAPI clients, hooks, and modelssrc/storesZustand store slices