diff --git a/public/favicon.png b/public/favicon.png
deleted file mode 100644
index 7e6f5eb..0000000
Binary files a/public/favicon.png and /dev/null differ
diff --git a/public/icon/android-icon-192x192.png b/public/icon/android-icon-192x192.png
new file mode 100644
index 0000000..9af24eb
Binary files /dev/null and b/public/icon/android-icon-192x192.png differ
diff --git a/public/icon/apple-icon-114x114.png b/public/icon/apple-icon-114x114.png
new file mode 100644
index 0000000..c5b9eec
Binary files /dev/null and b/public/icon/apple-icon-114x114.png differ
diff --git a/public/icon/apple-icon-120x120.png b/public/icon/apple-icon-120x120.png
new file mode 100644
index 0000000..0c8b385
Binary files /dev/null and b/public/icon/apple-icon-120x120.png differ
diff --git a/public/icon/apple-icon-144x144.png b/public/icon/apple-icon-144x144.png
new file mode 100644
index 0000000..3cd0bd0
Binary files /dev/null and b/public/icon/apple-icon-144x144.png differ
diff --git a/public/icon/apple-icon-152x152.png b/public/icon/apple-icon-152x152.png
new file mode 100644
index 0000000..8101d8f
Binary files /dev/null and b/public/icon/apple-icon-152x152.png differ
diff --git a/public/icon/apple-icon-180x180.png b/public/icon/apple-icon-180x180.png
new file mode 100644
index 0000000..b26358f
Binary files /dev/null and b/public/icon/apple-icon-180x180.png differ
diff --git a/public/icon/apple-icon-57x57.png b/public/icon/apple-icon-57x57.png
new file mode 100644
index 0000000..c5a1b44
Binary files /dev/null and b/public/icon/apple-icon-57x57.png differ
diff --git a/public/icon/apple-icon-60x60.png b/public/icon/apple-icon-60x60.png
new file mode 100644
index 0000000..4135fc9
Binary files /dev/null and b/public/icon/apple-icon-60x60.png differ
diff --git a/public/icon/apple-icon-72x72.png b/public/icon/apple-icon-72x72.png
new file mode 100644
index 0000000..6f560cc
Binary files /dev/null and b/public/icon/apple-icon-72x72.png differ
diff --git a/public/icon/apple-icon-76x76.png b/public/icon/apple-icon-76x76.png
new file mode 100644
index 0000000..750efc7
Binary files /dev/null and b/public/icon/apple-icon-76x76.png differ
diff --git a/public/icon/favicon-16x16.png b/public/icon/favicon-16x16.png
new file mode 100644
index 0000000..c1a25aa
Binary files /dev/null and b/public/icon/favicon-16x16.png differ
diff --git a/public/icon/favicon-32x32.png b/public/icon/favicon-32x32.png
new file mode 100644
index 0000000..f77b886
Binary files /dev/null and b/public/icon/favicon-32x32.png differ
diff --git a/public/icon/favicon-96x96.png b/public/icon/favicon-96x96.png
new file mode 100644
index 0000000..1b5837c
Binary files /dev/null and b/public/icon/favicon-96x96.png differ
diff --git a/public/icon/favicon.png b/public/icon/favicon.png
new file mode 100644
index 0000000..ef4cfd7
Binary files /dev/null and b/public/icon/favicon.png differ
diff --git a/public/index.html b/public/index.html
index 5da7ed3..0212fab 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,18 +1,34 @@
-
-
-
+
+
+
- Svelte app
+ Triangles.fun
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..00db8bc
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,86 @@
+{
+ "name": "Triangles.fun",
+ "short_name": "triangles",
+ "lang": "en",
+ "description": "Eliminate all the circles in the triangle by jumping them over",
+ "theme_color": "#bf616a",
+ "background_color": "#eceff4",
+ "display": "standalone",
+ "orientation": "portrait",
+ "scope": "/",
+ "start_url": "/",
+ "manifest_version": 2,
+ "version": "0.0.1",
+ "icons": [
+ {
+ "src": "/icon/favicon.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ },
+ {
+ "src": "/icon/android-icon-192x192.png",
+ "type": "image/png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "/icon/apple-icon-180x180.png",
+ "type": "image/png",
+ "sizes": "180x180"
+ },
+ {
+ "src": "/icon/apple-icon-152x152.png",
+ "type": "image/png",
+ "sizes": "152x152"
+ },
+ {
+ "src": "/icon/apple-icon-144x144.png",
+ "type": "image/png",
+ "sizes": "144x144"
+ },
+ {
+ "src": "/icon/apple-icon-120x120.png",
+ "type": "image/png",
+ "sizes": "120x120"
+ },
+ {
+ "src": "/icon/apple-icon-114x114.png",
+ "type": "image/png",
+ "sizes": "114x114"
+ },
+ {
+ "src": "/icon/favicon-96x96.png",
+ "type": "image/png",
+ "sizes": "96x96"
+ },
+ {
+ "src": "/icon/apple-icon-76x76.png",
+ "type": "image/png",
+ "sizes": "76x76"
+ },
+ {
+ "src": "/icon/apple-icon-72x72.png",
+ "type": "image/png",
+ "sizes": "72x72"
+ },
+ {
+ "src": "/icon/apple-icon-60x60.png",
+ "type": "image/png",
+ "sizes": "60x60"
+ },
+ {
+ "src": "/icon/apple-icon-57x57.png",
+ "type": "image/png",
+ "sizes": "57x57"
+ },
+ {
+ "src": "/icon/favicon-32x32.png",
+ "type": "image/png",
+ "sizes": "32x32"
+ },
+ {
+ "src": "/icon/favicon-16x16.png",
+ "type": "image/png",
+ "sizes": "16x16"
+ }
+ ]
+}
diff --git a/public/service-worker.js b/public/service-worker.js
new file mode 100644
index 0000000..349e356
--- /dev/null
+++ b/public/service-worker.js
@@ -0,0 +1,25 @@
+const cacheName = "stale-with-revalidate"
+
+// import workbox
+importScripts(
+ "https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"
+)
+const { routing, strategies } = workbox
+
+// implements staleWhileRevalidate to all routes
+routing.registerRoute(
+ () => true,
+ new strategies.StaleWhileRevalidate({ cacheName })
+)
+
+// removes all caches not named
+const invalidateOldCache = async () => {
+ const keys = await caches.keys()
+ const isOldCache = key => key !== cacheName
+ const oldKeys = keys.filter(isOldCache)
+
+ return Promise.all(oldKeys.map(key => caches.delete(key)))
+}
+
+// runs invalidateOldCache on activation
+self.addEventListener("activate", e => e.waitUntil(invalidateOldCache()))
diff --git a/scripts/setupTypeScript.js b/scripts/setupTypeScript.js
deleted file mode 100644
index d471095..0000000
--- a/scripts/setupTypeScript.js
+++ /dev/null
@@ -1,117 +0,0 @@
-// @ts-check
-
-/** This script modifies the project to support TS code in .svelte files like:
-
-
-
- As well as validating the code for CI.
- */
-
-/** To work on this script:
- rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template
-*/
-
-const fs = require("fs")
-const path = require("path")
-const { argv } = require("process")
-
-const projectRoot = argv[2] || path.join(__dirname, "..")
-
-// Add deps to pkg.json
-const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8"))
-packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, {
- "svelte-check": "^1.0.0",
- "svelte-preprocess": "^4.0.0",
- "@rollup/plugin-typescript": "^6.0.0",
- "typescript": "^3.9.3",
- "tslib": "^2.0.0",
- "@tsconfig/svelte": "^1.0.0"
-})
-
-// Add script for checking
-packageJSON.scripts = Object.assign(packageJSON.scripts, {
- "validate": "svelte-check"
-})
-
-// Write the package JSON
-fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " "))
-
-// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too
-const beforeMainJSPath = path.join(projectRoot, "src", "main.js")
-const afterMainTSPath = path.join(projectRoot, "src", "main.ts")
-fs.renameSync(beforeMainJSPath, afterMainTSPath)
-
-// Switch the app.svelte file to use TS
-const appSveltePath = path.join(projectRoot, "src", "App.svelte")
-let appFile = fs.readFileSync(appSveltePath, "utf8")
-appFile = appFile.replace("