The README screenshots were captured on 23 August, before the 2.0 QA work. They show a build with no drag handles on the filter rules, none of the calendar or Sieve fixes, and no read-receipt option in the composer.
All eight retaken against npm run dev:mock on current main, at the same sizes as before — 1420x703, and 500x703 for the phone — so the table lays out exactly as it did.
Three are better than a like-for-like retake:
filters — four rules that say something (list-id exists, sender contains, subject contains, a wildcard match), each filing to a different folder, instead of four blank from contains "" rows. The new drag handles are visible.
calendar — the month view, which the caption has always claimed; the old shot was the week view.
contacts — a contact open in the detail pane rather than an empty "Select a contact".
The capture script is committed as docs/screenshots.mjs so this is repeatable. It drives headless Chrome over CDP rather than a browser extension, which is how the viewport comes out at exactly the old dimensions instead of whatever a window happens to be.
Two things the script's header says outright, because both cost me time:
Restart the mock before a run. The filters shot creates rules, so a second run against the same mock shows them twice.
The mobile shot is taken by a short run of its own. At the tail of the desktop sequence the app would not render the message list at 500px within the wait, and I did not chase down why — it is a screenshot, and a separate run is reliable.
The README screenshots were captured on 23 August, before the 2.0 QA work. They show a build with no drag handles on the filter rules, none of the calendar or Sieve fixes, and no read-receipt option in the composer.
All eight retaken against `npm run dev:mock` on current main, at the same sizes as before — 1420x703, and 500x703 for the phone — so the table lays out exactly as it did.
Three are better than a like-for-like retake:
- **filters** — four rules that say something (list-id exists, sender contains, subject contains, a wildcard match), each filing to a different folder, instead of four blank `from contains ""` rows. The new drag handles are visible.
- **calendar** — the month view, which the caption has always claimed; the old shot was the week view.
- **contacts** — a contact open in the detail pane rather than an empty "Select a contact".
The capture script is committed as `docs/screenshots.mjs` so this is repeatable. It drives headless Chrome over CDP rather than a browser extension, which is how the viewport comes out at exactly the old dimensions instead of whatever a window happens to be.
Two things the script's header says outright, because both cost me time:
- Restart the mock before a run. The filters shot creates rules, so a second run against the same mock shows them twice.
- The mobile shot is taken by a short run of its own. At the tail of the desktop sequence the app would not render the message list at 500px within the wait, and I did not chase down why — it is a screenshot, and a separate run is reliable.
No code changes; images and one script.
**Merged** 2026-08-25 as coffey-labs/ihasmail@ea55b1b2aab8
<sub>Rebuilt from: git history, session transcript.</sub>
This repo is archived. You cannot comment on issues.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The README screenshots were captured on 23 August, before the 2.0 QA work. They show a build with no drag handles on the filter rules, none of the calendar or Sieve fixes, and no read-receipt option in the composer.
All eight retaken against
npm run dev:mockon current main, at the same sizes as before — 1420x703, and 500x703 for the phone — so the table lays out exactly as it did.Three are better than a like-for-like retake:
from contains ""rows. The new drag handles are visible.The capture script is committed as
docs/screenshots.mjsso this is repeatable. It drives headless Chrome over CDP rather than a browser extension, which is how the viewport comes out at exactly the old dimensions instead of whatever a window happens to be.Two things the script's header says outright, because both cost me time:
No code changes; images and one script.
Merged 2026-08-25 as coffey-labs/ihasmail@ea55b1b2aa
Rebuilt from: git history, session transcript.