From 5367463239b354640fd65390bc409e4a0ac13fd1 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Fri, 12 Sep 2025 17:17:35 +0200 Subject: [PATCH] feat: add PWA support (#938) --- frontend/src/app.html | 2 ++ frontend/static/app.webmanifest | 27 ++++++++++++++++++ frontend/static/img/static-logo-512.png | Bin 0 -> 6492 bytes .../static/img/static-logo-rounded-512.png | Bin 0 -> 13087 bytes frontend/static/img/static-logo.svg | 12 ++++++++ 5 files changed, 41 insertions(+) create mode 100644 frontend/static/app.webmanifest create mode 100644 frontend/static/img/static-logo-512.png create mode 100644 frontend/static/img/static-logo-rounded-512.png create mode 100644 frontend/static/img/static-logo.svg diff --git a/frontend/src/app.html b/frontend/src/app.html index 83bacbc4..54fc6a52 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -5,6 +5,8 @@ + + %sveltekit.head% diff --git a/frontend/static/app.webmanifest b/frontend/static/app.webmanifest new file mode 100644 index 00000000..c8633d99 --- /dev/null +++ b/frontend/static/app.webmanifest @@ -0,0 +1,27 @@ +{ + "name": "Pocket ID", + "orientation": "any", + "display": "minimal-ui", + "dir": "auto", + "start_url": "/", + "icons": [ + { + "src": "img/static-logo-rounded-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "img/static-logo-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "img/static-logo.svg", + "sizes": "any", + "type": "image/svg+xml", + "purpose": "maskable monochrome" + } + ] +} diff --git a/frontend/static/img/static-logo-512.png b/frontend/static/img/static-logo-512.png new file mode 100644 index 0000000000000000000000000000000000000000..907776f67187ee21b9a0410349b85d07e3625967 GIT binary patch literal 6492 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 Q(yRv>XLZzy&RB;32PK@csQ>@~ literal 0 HcmV?d00001 diff --git a/frontend/static/img/static-logo-rounded-512.png b/frontend/static/img/static-logo-rounded-512.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7474e2f0d4cc2baaea354b0d0acbe717e08c48 GIT binary patch literal 13087 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 wA&E`GQZ?{N<2;M;lHT%MK@roT+I + + + + + + + + + + +