feat(pwa): manifest launch/display fallbacks, monochrome icons, iOS install hint#835
Merged
Merged
Conversation
…nstall hint Phase 2 of the PWA plan, cache-semantics untouched: launch_handler navigate-existing + display_override standalone/minimal-ui in the manifest; monochrome-192/512 icon variants rendered as a white alpha-only silhouette from the shared brand mark; a one-time iOS/iPadOS Add to Home Screen hint (30-day dismissal, never in standalone) since those platforms lack beforeinstallprompt. Manifest screenshots stay deferred per the docs/pwa.md production-capture precondition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Contributor
📝 WalkthroughWalkthroughUpdates PWA manifest launch and display metadata, adds monochrome icon generation, introduces an iOS/iPadOS installation hint with dismissal persistence, and adds corresponding tests and documentation. ChangesPWA install and icon polish
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
BigSimmo
marked this pull request as ready for review
July 18, 2026 10:40
BigSimmo
enabled auto-merge
July 18, 2026 11:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 2 of the approved PWA plan — install-experience polish with cache semantics untouched (
public/sw.jsunchanged, noCACHE_VERSIONmove):src/app/manifest.ts:launch_handler: { client_mode: ["navigate-existing", "auto"] }(focus the open app window instead of spawning duplicates) anddisplay_override: ["standalone", "minimal-ui"](graceful fallback, never fullscreen); two newmonochromeicon entries.src/app/icons/[variant]/route.tsx+src/lib/brand-image.tsx:monochrome-192/512variants rendered from the single shared brand mark as a white alpha-only silhouette (BRAND_MONOCHROME) that platforms recolour for badges/themed icons.src/components/pwa-lifecycle.tsx: one-time iOS/iPadOS Add to Home Screen hint (those platforms never emitbeforeinstallprompt) — shown only outside standalone mode, dismissible with a 30-dayclinical-kb-pwa-ios-install-dismissed-atkey mirroring the existing install-card pattern; eligibility check is timer-deferred to satisfyreact-hooks/set-state-in-effectand avoid hydration divergence.docs/pwa.mdInstallability section updated. Manifest screenshots remain deliberately deferred per the documented production-capture precondition.Verification
npm run verify:cheap— 2773 passed / 1 failed: the known container-onlytests/pdf-extraction-budget.test.tsartifact (fails identically on clean main in this remote container; passed on hosted CI for feat(pwa): retirement kill-switch, offline-version binding guard, and dev teardown flag #826).npm run ensure+npm run test:e2e:pwa— offline/CacheStorage-privacy journey passes; the installability test's icon probes cover the two new monochrome PNGs (200,image/png, correct dimensions) and the CDP manifest parse reports zero errors; the final installability poll fails only with the container-local"in-incognito"artifact (baselined on clean main; hosted CI Chromium authoritative).npm run verify:ui— 219 passed / 2 failed (5.3m): exactly the two clean-main-baselined container artifacts (ui-pwainstallability,ui-smokePDF-canvas mobile), both of which passed on hosted CI for feat(pwa): retirement kill-switch, offline-version binding guard, and dev teardown flag #826. No new failures.npm run verify:pr-local— unit stage 2773 passed / 1 failed (same known artifact, stops the local chain); production build + bundle budget covered by this PR's blocking hosted CI Build job.npm run format:checkclean for repo files.Clinical Governance Preflight
Not applicable — no ingestion, answer generation, search/ranking, source rendering, document access, privacy-boundary, production env, or clinical output changes. The service-worker privacy contract is untouched;
/icons/*was already allow-listed with a PNG MIME expectation, so the new variants introduce no new cached content class.Risk and rollout
id/scope/start_url) untouched, so no reinstall churn; the manifest revalidates immediately (max-age=0); the iOS hint is a self-contained dismissible card behind an iOS-only heuristic.Notes
🤖 Generated with Claude Code
https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Tests