When a new service worker is waiting to replace the one controlling the page, a "New version ready · Reload" toast offers to reload. Reload sends SKIP_WAITING, which src/sw.ts answers with skipWaiting(), and reloads once on the controllerchange; dismissing hides the toast until a different worker is waiting. An "Offline — showing saved data" pill shows while navigator.onLine is false or the last API request failed with a network error. The network status store the API client reports to clears on the online event or the next response, and removes its window listeners on unsubscribe. Maestro task 63f6c6c2-2936-4738-9869-432d7a11141d. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>