Repository navigation
v0.0.17
Key takeaways
- [Feature] Read messages in a side panel: On the Messages page, clicking an email now opens it in a panel beside the list, and clicking another row swaps it in place, with the open row highlighted and ↑/↓ moving to the next email.
- [Feature] Messages per year, split by labels: On the Overview page, the Messages per year chart now stacks Labelled and Unlabelled mail to the yearly total, and you can tap the legend to see either part alone.
- [Feature] Jump to any page of messages: At the bottom of the Messages page, a new footer shows which messages you're viewing, page numbers, and a Go to box so you can open any page directly.
- [Fix] No more blank app on load: When the app starts, it no longer sits on an empty page if your browser's saved data is slow or stuck, and it loads from the server instead.
- [Fix] Searches with no results can be cleared: On the Messages page, a search or filter that matches nothing now keeps the filter box, column headers and a Clear filters button, and the filter menu no longer shows false 0 counts.
App
- The message panel can be dragged wider or narrower, folded into a thin rail, and remembers its size and fold state. On phones it is still a bottom sheet.
- With the panel open, the Messages table drops its lowest-priority columns instead of scrolling sideways. Subject stays next to Date, and every column returns when the panel closes.
- Emails wider than the panel zoom out to fit, and plain-text emails wrap.
- Category tabs that don't fit the row, such as on a phone or beside the panel, now fold into a More ▾ menu instead of being cut off.
- The Overview chart's top axis label no longer sits low, so the 2026 bar reads as the correct 17.3K instead of 18K.
- The Messages footer shows
1,001–1,050 of 3,243with page numbers on desktop, and a compactPage n of 65pager on phones.
Gmail
- Labelled mail means a message with at least one of your own labels. Inbox, Starred, Important and the categories don't count, and mbox imports count as well.
Search
- With a filter on and no matches, the "No mail matches these filters" message appears under the headers, with the filter and chips still in place.
- The filter menu hides counts while only one page of results is loaded, rather than showing a misleading number.
- Jumping to a page is cheapest when sorted by date with no filter. Sender, Size and category or label views read from whichever end is nearer. Most other filters still reach only the pages you've already visited, plus the next.
Sync
- On the Copy mail page, Jobs (the queue by month, filters, Pause, Clear queue and Finished) is now its own card at the bottom, with its own Refresh. It follows the Mailbox chip like the other cards.
- The Copy mail card now holds only the totals, Running now and the tiles.
- A month that is fully copied but still waiting to finish now shows Finishing under Left instead of an empty "Copying". If no rate is available yet, it shows a dash.
Storage
- Each month's labelled count is stored in the monthly totals that are already updated, so syncing and page loads cost no extra reads or writes.
- On first start, existing mail is counted once, in a single pass. It was tested on a 120k-message copy with no mismatches, in about 150 ms. Because labels aren't changed after a message is stored, the count can't drift.
Infra
- Saved answers now use the shared UI kit's version, so every app gets the 1.5-second give-up. They keep the same database, so existing saved answers carry over.
- An aborted or blocked browser cache now fails cleanly instead of hanging.
- The UI kit is updated to 0.1.125 across these changes.
Pull requests (10)
- #174 feat: Messages per year shows labelled and unlabelled mail, stacked to the total (Lumen 0.1.125) (@bchoor)
- #173 fix: Messages marks the open email's row (Lumen 0.1.124) (@bchoor)
- #172 infra: Lumen 0.1.122 (tab rows fold overflow into More) (@bchoor)
- #171 fix: saved answers use Lumen's savedAnswers; Lumen 0.1.121 (@bchoor)
- #170 fix: a search that matches nothing keeps the filter, headers and Clear filters; no fake 0 counts (Lumen 0.1.120) (@bchoor)
- #169 fix: beside the docked panel the message list fits (Subject kept) and wide emails zoom to fit; Lumen 0.1.119 (@bchoor)
- #168 feat: Messages page footer; jump to any page (Lumen 0.1.117) (@bchoor)
- #167 feat: Messages opens a message in a docked side panel; next row swaps it; Lumen 0.1.116 (@bchoor)
- #166 fix: the app never stays blank waiting on the saved answers (@bchoor)
- #165 feat: Jobs is its own card, last on Copy mail (@bchoor)
Full changelog: v0.0.16...v0.0.17