From 4c425caf7e534b40a827634038fcf2b50ea9772e Mon Sep 17 00:00:00 2001 From: alistair3149 Date: Sat, 29 Oct 2022 20:31:00 -0400 Subject: [PATCH 1/2] Add basic PWA support This should be enough to fulfill the instability requirements * Add webapp manfiest * Add basic service worker ** It does nothing currently, but it is enough to fulfill the instability requirements * Add square icons per PWA reqirements (192px, 512px, SVG) ** PNGs are optimized with PNGCrush ** SVG is optimized with SVGO ** Add maskable icons for fanicer app icons --- assets/js/app.js | 4 ++ assets/static/app.webmanifest | 41 ++++++++++++++++++ assets/static/images/icon/plausible_logo.svg | 1 + .../images/icon/plausible_logo_192px.png | Bin 0 -> 6956 bytes .../icon/plausible_logo_192px_maskable.png | Bin 0 -> 6294 bytes .../images/icon/plausible_logo_512px.png | Bin 0 -> 20454 bytes .../icon/plausible_logo_512px_maskable.png | Bin 0 -> 28327 bytes assets/static/serviceWorker.js | 11 +++++ lib/plausible_web/endpoint.ex | 2 +- .../templates/layout/app.html.eex | 1 + 10 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 assets/static/app.webmanifest create mode 100644 assets/static/images/icon/plausible_logo.svg create mode 100644 assets/static/images/icon/plausible_logo_192px.png create mode 100644 assets/static/images/icon/plausible_logo_192px_maskable.png create mode 100644 assets/static/images/icon/plausible_logo_512px.png create mode 100644 assets/static/images/icon/plausible_logo_512px_maskable.png create mode 100644 assets/static/serviceWorker.js diff --git a/assets/js/app.js b/assets/js/app.js index 9c2bb174d5f1..423d9824aaf4 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -117,3 +117,7 @@ if (embedButton) { } }) } + +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register( 'serviceWorker.js' ); +} diff --git a/assets/static/app.webmanifest b/assets/static/app.webmanifest new file mode 100644 index 000000000000..dcdf40540ba3 --- /dev/null +++ b/assets/static/app.webmanifest @@ -0,0 +1,41 @@ +{ + "dir": "ltr", + "lang": "en", + "short_name": "Plausible", + "name": "Plausible Analytics", + "icons": [ + { + "src": "/images/icon/plausible_logo.svg", + "type": "image/svg+xml", + "sizes": "any" + }, + { + "src": "/images/icon/plausible_logo_192px.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/images/icon/plausible_logo_192px_maskable.png", + "type": "image/png", + "sizes": "192x192", + "purpose": "maskable" + }, + { + "src": "/images/icon/plausible_logo_512px.png", + "type": "image/png", + "sizes": "512x512" + }, + { + "src": "/images/icon/plausible_logo_512px_maskable.png", + "type": "image/png", + "sizes": "512x512", + "purpose": "maskable" + } + ], + "start_url": "/", + "background_color": "#252f3f", + "display": "standalone", + "orientation": "portrait", + "theme_color": "#5850ec", + "description": "Web analytics tools" +} \ No newline at end of file diff --git a/assets/static/images/icon/plausible_logo.svg b/assets/static/images/icon/plausible_logo.svg new file mode 100644 index 000000000000..f0d0449ffefa --- /dev/null +++ b/assets/static/images/icon/plausible_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/static/images/icon/plausible_logo_192px.png b/assets/static/images/icon/plausible_logo_192px.png new file mode 100644 index 0000000000000000000000000000000000000000..b71791dba4c25b535998fe4b7ec994ba31a624d1 GIT binary patch literal 6956 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 literal 0 HcmV?d00001 diff --git a/assets/static/images/icon/plausible_logo_192px_maskable.png b/assets/static/images/icon/plausible_logo_192px_maskable.png new file mode 100644 index 0000000000000000000000000000000000000000..c7628e1295fbcd50a015913553fa9045133a68d0 GIT binary patch literal 6294 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 literal 0 HcmV?d00001 diff --git a/assets/static/images/icon/plausible_logo_512px.png b/assets/static/images/icon/plausible_logo_512px.png new file mode 100644 index 0000000000000000000000000000000000000000..c6888f02a78d59f8861171f7010fe8755a5a02af GIT binary patch literal 20454 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
  • RAL@!N52=HC)GKu1^>vPH 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 literal 0 HcmV?d00001 diff --git a/assets/static/serviceWorker.js b/assets/static/serviceWorker.js new file mode 100644 index 000000000000..a5098aa9aa48 --- /dev/null +++ b/assets/static/serviceWorker.js @@ -0,0 +1,11 @@ +self.addEventListener( 'install', ( event ) => { + console.log( 'Service worker installed' ); +} ); + +self.addEventListener( 'activate', ( event ) => { + console.log( 'Service worker activated' ); +} ); + +self.addEventListener( 'fetch', ( event ) => { + console.log( 'Service worker fetch' ); +} ); \ No newline at end of file diff --git a/lib/plausible_web/endpoint.ex b/lib/plausible_web/endpoint.ex index 34078e93ea5e..8f42bd2e576d 100644 --- a/lib/plausible_web/endpoint.ex +++ b/lib/plausible_web/endpoint.ex @@ -13,7 +13,7 @@ defmodule PlausibleWeb.Endpoint do at: "/", from: :plausible, gzip: false, - only: ~w(css fonts images js favicon.ico robots.txt) + only: ~w(css fonts images js favicon.ico robots.txt app.webmanifest serviceWorker.js) plug Plug.Static, at: "/kaffy", diff --git a/lib/plausible_web/templates/layout/app.html.eex b/lib/plausible_web/templates/layout/app.html.eex index af87952946b8..2026bfe6099c 100644 --- a/lib/plausible_web/templates/layout/app.html.eex +++ b/lib/plausible_web/templates/layout/app.html.eex @@ -9,6 +9,7 @@ <%= assigns[:title] || "Plausible ยท Simple, privacy-friendly alternative to Google Analytics" %> "/> + <%= render("_tracking.html", assigns) %> From b65164707fc1c522325753486ff744a51dc3307b Mon Sep 17 00:00:00 2001 From: alistair3149 Date: Sat, 29 Oct 2022 20:42:38 -0400 Subject: [PATCH 2/2] Update changelog with PWA support --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93c8febfc269..e2fdff243728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. ## Unreleased ### Added +- Add basic Progressive Web App support - The ability to escape `|` characters with `\` in Stats API filter values - An upper bound of 1000 to the `limit` parameter in Stats API - The `exclusions` script extension now also takes a `data-include` attribute tag