Description
In the email list (both mailbox view and unified inbox), unread emails are visually almost indistinguishable from read ones, especially in the dark theme. Users can easily believe all their mail has been marked as read when the data is actually correct.
I verified end-to-end on v0.1.53 against a Stalwart 0.16 server:
- JMAP wire data is correct (
keywords: {} for unread, $seen: true for read), and the app renders state faithfully — this is not a data or logic bug.
- The only unread cues are: sender name
textSecondary → text color + fontWeight 400 → 600, and subject fontWeight 400 → 700 (EmailListScreen.tsx, styles textUnread / textBold).
- On a OnePlus (CPH2653, Android 15, system font), the weight difference barely renders, so the only remaining cue is a subtle grey→white shift on the sender name. Subject color is identical (
c.text) in both states.
I measured pixel brightness of sender names on a screenshot to confirm: read senders peak at ~0.64 luminance (grey), unread at ~0.98 (white) — that shift is the entire indicator, and it does not read as "unread" at a glance.
Steps to reproduce
- Dark theme, default density, Inbox with a mix of read/unread messages.
- Glance at the list.
Expected
An unambiguous unread indicator, e.g. a primary-color dot before the sender (Gmail/K-9 style) or an accent bar on the row edge, in addition to the weight/color change.
Actual
Read and unread rows look essentially identical; several users may interpret this as "all my mail got marked read" (I did, and went as far as auditing the server before understanding it was a rendering/contrast issue).
Environment
- Bulwark Mobile v0.1.53 (sideloaded APK from Releases)
- OnePlus CPH2653, Android 15, dark theme
- Server: Stalwart 0.16.12, direct JMAP
Description
In the email list (both mailbox view and unified inbox), unread emails are visually almost indistinguishable from read ones, especially in the dark theme. Users can easily believe all their mail has been marked as read when the data is actually correct.
I verified end-to-end on v0.1.53 against a Stalwart 0.16 server:
keywords: {}for unread,$seen: truefor read), and the app renders state faithfully — this is not a data or logic bug.textSecondary→textcolor +fontWeight 400 → 600, and subjectfontWeight 400 → 700(EmailListScreen.tsx, stylestextUnread/textBold).c.text) in both states.I measured pixel brightness of sender names on a screenshot to confirm: read senders peak at ~0.64 luminance (grey), unread at ~0.98 (white) — that shift is the entire indicator, and it does not read as "unread" at a glance.
Steps to reproduce
Expected
An unambiguous unread indicator, e.g. a primary-color dot before the sender (Gmail/K-9 style) or an accent bar on the row edge, in addition to the weight/color change.
Actual
Read and unread rows look essentially identical; several users may interpret this as "all my mail got marked read" (I did, and went as far as auditing the server before understanding it was a rendering/contrast issue).
Environment