|
Some checks failed
E2E / Playwright e2e (push) Has been cancelled
Move mail, compose, contacts, and accounts off mocks onto REST + WS. Add client, auth store, IDB-backed query cache, offline queue, and sync bar; hybrid Zustand for UI-only state. Settings still local until backend has preferences API. |
||
|---|---|---|
| .. | ||
| account-store.ts | ||
| debounced-json-storage.ts | ||
| hydration.ts | ||
| mail-search-store.ts | ||
| mail-settings-store.ts | ||
| mail-store.ts | ||
| mail-ui-store.ts | ||
| nav-store.ts | ||
| README.md | ||
| scheduled-store.ts | ||
Mail stores (Zustand)
Persisted (debounced-json-storage / persist)
mail-store— read/star/important overrides, label edits, recent folder visitsmail-settings-store— density, conversation mode, sort, display prefsnav-store— sidebar folder/label tree, disabled nav labelsaccount-store— active accountscheduled-store— scheduled send queue
Ephemeral UI (session only)
mail-search-store— search input, dropdown, filter chips before URL submitmail-ui-store— shell chrome: sidebar collapsed, mobile search overlay, folder unread badges
Rules
- URL is source of truth for folder, inbox tab, page, open message (
useMailRoute+mail-url.ts) - Search results use query params on
/mail/search(SearchParams); bar/overlay state syncs viasubmitMailSearchinlib/mail-search/navigate.ts - Do not persist ephemeral UI unless product explicitly requires it