mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 08:01:16 +00:00
f04bd26b44
User: "inbox is really really bad. So I want all possible ways to search for an email that we can do... realtime for everything and the dashboard to show our latency... show how much unread emails." Plus a follow-up: "I don't like how the emails looks like because they have that blue gradient, I want dashboard style good one." Inbox: - Wired the backend search endpoint (GET /unibox with from/subject/ unseen/since/until/cursor/limit) — was implemented server-side but the frontend was never calling it. Inbox now actually reflects server data. - New UniboxSearchParams model + searchIncoming client + infinite useUniboxSearch hook that drops null rows defensively. - ConversationList: SearchInput (subject substring) + quick-filter strip (All / Unread / Today / This week). Unread count surfaces in the SectionBar header AND on the Unread chip. Skeleton + explicit error block with retry; "Load more · N shown" when more pages are available. - UniboxFilterSheet (advanced filters in the right-side panel): free-text query, sender substring, account picker pulled from the user's connected mailboxes, status toggle (Any/Unread/Read), since/until date pickers with toggle, newest/oldest sort. Draft state mirrors parent until Apply. LivePanel telemetry (sidebar): - Real WS roundtrip latency. SocketProvider stamps performance.now() per heartbeat ref; phoenix phx_reply with that ref computes the delta and publishes via setWsLatencyMs. LivePanel colour-codes the latency text: <100ms emerald, <300ms amber, ≥300ms red, "—" when disconnected. - Unread count row reads from useAppStore.unseenCount. - Status label: OFFLINE / CONNECTING / LIVE (with pulse) / IDLE, tied to connectionStatus + active mailbox count. Transactional emails (no more blue gradient): - base.go rewritten as dashboard chrome: cream #f5f6f8 background, white card with hairline #e2e8f0 border, 8px radius, slate-900 text. Logo monogram in slate, no decorative haze, no gradients. - login_code / registration_code: tiny uppercase eyebrow + 18px bold heading + neutral body + monospace code pill in a hairline- bordered box. No serif type. - reset_password / welcome: same chrome. Slate-900 primary button replaces the sky-gradient one. Plaintext link below for accessible fallback. - Template tests updated against the new markup; all green.