From 3ad0649ff6da06b4c9c0372282334bfb4d53e0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 14 Jun 2026 10:49:00 +0200 Subject: [PATCH] feat(pwa): add manifest shortcuts and a 192 maskable icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add three home-screen shortcuts (Add measurement, Today, Medications) deep-linking into the app, each tagged `source=shortcut`. Add a 192×192 maskable icon alongside the existing 512 so adaptive launchers mask the right size instead of downscaling the 512 or clipping the un-masked 192 "any" icon on circular masks. No screenshots: the repo ships no real screenshot assets and fabricating them is worse than the richer-install-dialog gain. --- public/logo-maskable-192.png | Bin 0 -> 9022 bytes public/manifest.json | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 public/logo-maskable-192.png diff --git a/public/logo-maskable-192.png b/public/logo-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..3aa46e86f50947a3987cd955d33ad086ac62f6b1 GIT binary patch literal 9022 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 OimarPM75Yn(EkBQzwG${ literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json index d351c6fbb..0b6c6de85 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -22,11 +22,37 @@ "type": "image/png", "purpose": "any" }, + { + "src": "/logo-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, { "src": "/logo-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } + ], + "shortcuts": [ + { + "name": "Add measurement", + "short_name": "Add", + "url": "/measurements?add=WEIGHT&source=shortcut", + "icons": [{ "src": "/logo-192.png", "sizes": "192x192", "type": "image/png" }] + }, + { + "name": "Today", + "short_name": "Today", + "url": "/?source=shortcut", + "icons": [{ "src": "/logo-192.png", "sizes": "192x192", "type": "image/png" }] + }, + { + "name": "Medications", + "short_name": "Meds", + "url": "/medications?source=shortcut", + "icons": [{ "src": "/logo-192.png", "sizes": "192x192", "type": "image/png" }] + } ] }