Installable app with push notifications (PWA) #154
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
security
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED#154
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Idea
The plausible way people use Iris day to day is on a phone.
/remote(#24) was laid out phone-first for exactly that reason: standing in the garden looking at the tree. Make Iris installable to the home screen, and give it a notification channel that doesn't require running ntfy or Gotify.Verified against
main: there is no manifest or service worker.frontend/vite.config.tshas only the React plugin.Part 1: installable (small)
vite-plugin-pwa: a web app manifest (name, icons, theme colour,display: standalone), plus shortcuts to/remoteand to the review queue./api/*,/auth/*,/metricsor the calendar feed. A cached auth response or stale API data would be a real bug, not a performance problem. Use network-only for those routes, explicitly, with a test.Secure(app/auth.py), so this also only works over HTTPS, which is fine for production.Part 2: Web Push notifications
push_failed,review_queue_ready), plus the new ones:unapproved_tonightandreview_reminder(#149), andstate_corrected/state_drift(#148).WEB_PUSH_VAPID_PUBLIC_KEY/_PRIVATE_KEY/_SUBJECT; env-only, never in the settings table or the config export, like the other credentials), pluspywebpush, a small dependency.Acceptance
Picking this up now that #164 (the SPA fallback) is merged; the app's start URL and shortcuts depend on it.
Plan: both parts in one PR. Part 1 is the manifest and a shell-only service worker, with the API, auth, metrics and feed paths forced to network-only and tested. Part 2 is Web Push as a second channel on the webhook dispatcher's event bus, so there is no second list of events to keep in step.
Can't be verified from here: installing on real iOS and Android devices, and the OIDC round trip in standalone mode. Those stay as manual acceptance items, with a checklist.
Done in #178 (squash-merged, CI green).
Delivered:
vite-plugin-pwa, a hand-written service worker, and shortcuts to Remote, Review and Season./api,/auth,/metrics,/openapi.jsonor cross-origin requests, which is proven by an E2E with the worker in control.push_subscriptions(migration 0011).Along the way:
/iris.svgnever existed).Still open, needs devices: the install, login, notification and shortcut checks. They're in the consolidated checklist, #179.
claude-bot referenced this issue2026-09-26 11:48:16 +00:00