Web Push works. Confirmed end to end against the live 0.16.19: Chrome open, every ihasmail tab closed, notification arrives immediately naming the sender and subject. Subscription, verification handshake, VAPID signing and the service worker's push handler all doing their jobs.
But "closed" means ihasmail, not the browser — and the switch didn't say so.
Web Push is delivered over a connection the browser holds, so something of it has to be running. Observed today with Chrome fully quit and Continue running background apps off: nothing arrived until Chrome was started again, at which point the queued notification was delivered.
state
result
Chrome open, no ihasmail tab
immediate, with sender and subject
Chrome quit, background apps on
immediate (a process survives)
Chrome quit, background apps off
queued; arrives when Chrome next starts
One further caveat worth recording: the queue isn't indefinite. A Web Push message carries a TTL, and one that expires before the browser returns is dropped, not delivered late.
Being an installed PWA doesn't change this on desktop — it changes the window, not who holds the connection. On Android it would, since the push service can wake the browser from cold.
What changed
Nothing in behaviour. The README entry and the settings hint now say what's true:
Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.
None of this is ihasmail's to fix; it's what Web Push is on a desktop. The only thing worth doing about it is not implying otherwise, which the switch was quietly doing.
Docs only — no code. 265 web + 75 server tests, typecheck clean.
Web Push works. Confirmed end to end against the live 0.16.19: Chrome open, every ihasmail tab closed, notification arrives immediately naming the sender and subject. Subscription, verification handshake, VAPID signing and the service worker's `push` handler all doing their jobs.
**But "closed" means ihasmail, not the browser — and the switch didn't say so.**
Web Push is delivered over a connection the *browser* holds, so something of it has to be running. Observed today with Chrome fully quit and *Continue running background apps* off: nothing arrived until Chrome was started again, at which point the queued notification was delivered.
| state | result |
|---|---|
| Chrome open, no ihasmail tab | immediate, with sender and subject |
| Chrome quit, background apps **on** | immediate (a process survives) |
| Chrome quit, background apps **off** | queued; arrives when Chrome next starts |
One further caveat worth recording: the queue isn't indefinite. A Web Push message carries a TTL, and one that expires before the browser returns is **dropped**, not delivered late.
Being an installed PWA doesn't change this on desktop — it changes the window, not who holds the connection. On Android it would, since the push service can wake the browser from cold.
## What changed
Nothing in behaviour. The README entry and the settings hint now say what's true:
> Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. **Your browser still has to be running** — if you quit it completely, notifications wait and arrive when you open it again.
None of this is ihasmail's to fix; it's what Web Push is on a desktop. The only thing worth doing about it is not implying otherwise, which the switch was quietly doing.
Docs only — no code. 265 web + 75 server tests, typecheck clean.
**Merged** 2026-08-26 as coffey-labs/ihasmail@b37c422e7d72
<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.
Web Push works. Confirmed end to end against the live 0.16.19: Chrome open, every ihasmail tab closed, notification arrives immediately naming the sender and subject. Subscription, verification handshake, VAPID signing and the service worker's
pushhandler all doing their jobs.But "closed" means ihasmail, not the browser — and the switch didn't say so.
Web Push is delivered over a connection the browser holds, so something of it has to be running. Observed today with Chrome fully quit and Continue running background apps off: nothing arrived until Chrome was started again, at which point the queued notification was delivered.
One further caveat worth recording: the queue isn't indefinite. A Web Push message carries a TTL, and one that expires before the browser returns is dropped, not delivered late.
Being an installed PWA doesn't change this on desktop — it changes the window, not who holds the connection. On Android it would, since the push service can wake the browser from cold.
What changed
Nothing in behaviour. The README entry and the settings hint now say what's true:
None of this is ihasmail's to fix; it's what Web Push is on a desktop. The only thing worth doing about it is not implying otherwise, which the switch was quietly doing.
Docs only — no code. 265 web + 75 server tests, typecheck clean.
Merged 2026-08-26 as coffey-labs/ihasmail@b37c422e7d
Rebuilt from: git history, session transcript.