Wire Firebase Web config and VAPID through build-args/dart-define,
populate firebase-messaging-sw.js at image build, and soft-fallback to
install: tokens when secrets are absent. Live accept still needs Master
.env FIREBASE_* values and a web rebuild.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>
Align manifest/theme with AppTheme, harden nginx cache for SW entry,
add offline banner, expand tester-guide web tips, and ship
scripts/e2e_web_smoke.sh. W4 Web Push remains blocked on Master VAPID.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>
Schedule in-tab timers with the Notification API when permitted,
surface past-due snoozes on focus, and add a settings entry to request
permission. In-app badges remain the fallback. Mark N4-W3 done.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>
Add ≥900px list|chat master-detail, conversation WebSocket link
state in the chat chrome, dismissible web preview banner, and
stronger user-ID copy from list and settings. Mark N4-W2 done.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>
Persist tone samples, KV, and snoozes across hard refresh on Flutter
web. Keep AppDatabase.memory ephemeral; document DataFlow copy and
mark N4-W1 done. Unit tests cover prefs round-trip and corrupt JSON.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>
Land W0–W7 design for the Flutter web preview surface with
acceptance criteria, Master actions, and N4-W tracking. Cross-link
README, roadmap, deploy-checklist, fcm-setup, and mobile README.
Q9 remains out of scope; implementation waits per-Wi approval.
Co-authored-by: okuma <o0kuma@users.noreply.github.com>