Offline access: read recent mail without a connection

An opt-in per device (Settings → Security → Offline access) installs a
service worker that keeps the newest 50 Inbox conversations, and the ones
opened recently, for reading when the server cannot be reached. While
online everything still comes from the server; the saved copy is only the
fallback, marked X-WM-Offline so the app knows it is offline.

Offline, an amber cloud next to the theme toggle says so and when mail was
last saved; actions that need the server are greyed out and say "Not
available offline"; conversations and folders not saved here are faded or
say so. A probe notices the server coming back, shows "Back online" and
refreshes everything. Saved mail is wiped on sign-out, on any 401, and when
another user signs in. nginx never caches /sw.js, so releases reach it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 18:54:17 +02:00
co-authored by Claude Opus 5.5
parent 139fff826e
commit a2c52f33a8
15 changed files with 1245 additions and 30 deletions
+24
View File
@@ -221,3 +221,27 @@ body {
border: 2px solid transparent;
background-clip: content-box;
}
/* Offline (components/Offline.tsx): buttons that need the server look
unavailable, and their clicks are stopped with a "Not available offline". */
html[data-offline] .wm-online-only {
opacity: 0.4;
cursor: not-allowed;
}
html[data-offline] .wm-online-only:hover {
background-color: transparent;
}
.wm-offline-notice {
animation: wm-offline-in 180ms ease-out;
}
@keyframes wm-offline-in {
from {
opacity: 0;
transform: translate(-50%, 8px);
}
to {
opacity: 1;
transform: translate(-50%, 0);
}
}