Every shot below is a light/dark pair — GitHub serves whichever matches your system theme, so switch your appearance and reload to see the other one.
Captured against a live deployment with
apps/web/e2e/capture-shots.mjs.
One layout that re-shapes itself, not a phone app bolted onto a desktop one. Below 768 px the list and the conversation become separate screens and the composer becomes its own page; above it, they sit side by side.
Folders, list, and conversation all in view at once.
The same three panes, tighter gutters.
Still above the shell switch, so the split view holds.
Below the switch: the list and the conversation are two screens, one tap apart.
![]() Inbox |
![]() Conversation |
Three shapes, one composer. On the desktop it starts as a panel you can keep open while you read; expand it and the attachments column comes out of hiding alongside a full-height message. On a phone it is a real page in the document flow — which is the whole trick: scrolling to a focused field is then the browser's job, not ours, and the keyboard behaves.
Attachments get their own drop column, and the message body takes the rest.
![]() Panel — rich text, scheduled send, undo, without leaving the thread. |
![]() On a phone — send lives in the header. |
![]() Aliases — throwaway addresses on your own domain. |
![]() Admin — org, members, domains in one place. |
![]() Sign in — passwords or passkeys, out of the box. |






