diff --git a/db/pecklist.sqlite b/db/pecklist.sqlite
index ea6089a..4cd89a1 100644
Binary files a/db/pecklist.sqlite and b/db/pecklist.sqlite differ
diff --git a/notes/notes b/notes/notes
index 26c0eac..72570ec 100644
--- a/notes/notes
+++ b/notes/notes
@@ -37,8 +37,14 @@ Joyce s7 360px wide (dp)
***********************
-HOW TO DEPLOY TO IIS
-https://stackify.com/how-to-deploy-asp-net-core-to-iis/
+HOW TO DEPLOY
+
+0) Inject fresh manifest for workbox:
+"When you make a change to your project, run the inject manifest command and you'll have an up to date service worker with precache support."
+
+workbox injectManifest
+
+https://developers.google.com/web/tools/workbox/guides/precache-files/cli
1) SET VERSION
diff --git a/workbox-config.js b/workbox-config.js
new file mode 100644
index 0000000..abba596
--- /dev/null
+++ b/workbox-config.js
@@ -0,0 +1,8 @@
+module.exports = {
+ "globDirectory": "wwwroot/",
+ "globPatterns": [
+ "**/*.{xml,css,eot,svg,ttf,woff,woff2,png,ico,html,js,handlebars,json}"
+ ],
+ "swDest": "wwwroot\\OUTsw.js",
+ "swSrc": "wwwroot/sw.js"
+};
\ No newline at end of file
diff --git a/wwwroot/INPUTsw.js b/wwwroot/INPUTsw.js
new file mode 100644
index 0000000..1c21940
--- /dev/null
+++ b/wwwroot/INPUTsw.js
@@ -0,0 +1,9 @@
+importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js');
+
+if (workbox) {
+ // console.log(`3 Yay! Workbox is loaded 🎉`);
+ workbox.precaching.precacheAndRoute([]);
+
+} else {
+ console.log(`Boo! Workbox didn't load 😬`);
+}
\ No newline at end of file
diff --git a/wwwroot/index.html b/wwwroot/index.html
index ecbd6ab..d1a15a0 100644
--- a/wwwroot/index.html
+++ b/wwwroot/index.html
@@ -6,10 +6,20 @@
-
-
Pecklist loading....
+
+
+
+
@@ -29,18 +39,18 @@
-
-
+
+
-
+
-
+
@@ -64,7 +74,7 @@
-
+
diff --git a/wwwroot/js/lib/workbox-sw-3.6.1.js b/wwwroot/js/lib/workbox-sw-3.6.1.js
new file mode 100644
index 0000000..b720342
--- /dev/null
+++ b/wwwroot/js/lib/workbox-sw-3.6.1.js
@@ -0,0 +1,3 @@
+var workbox=function(){"use strict";try{self.workbox.v["workbox:sw:3.6.1"]=1}catch(t){}const t="https://storage.googleapis.com/workbox-cdn/releases/3.6.1",e={backgroundSync:"background-sync",broadcastUpdate:"broadcast-cache-update",cacheableResponse:"cacheable-response",core:"core",expiration:"cache-expiration",googleAnalytics:"google-analytics",navigationPreload:"navigation-preload",precaching:"precaching",rangeRequests:"range-requests",routing:"routing",strategies:"strategies",streams:"streams"};return new class{constructor(){return this.v={},this.t={debug:"localhost"===self.location.hostname,modulePathPrefix:null,modulePathCb:null},this.e=this.t.debug?"dev":"prod",this.s=!1,new Proxy(this,{get(t,s){if(t[s])return t[s];const o=e[s];return o&&t.loadModule(`workbox-${o}`),t[s]}})}setConfig(t={}){if(this.s)throw new Error("Config must be set before accessing workbox.* modules");Object.assign(this.t,t),this.e=this.t.debug?"dev":"prod"}skipWaiting(){self.addEventListener("install",()=>self.skipWaiting())}clientsClaim(){self.addEventListener("activate",()=>self.clients.claim())}loadModule(t){const e=this.o(t);try{importScripts(e),this.s=!0}catch(s){throw console.error(`Unable to import module '${t}' from '${e}'.`),s}}o(e){if(this.t.modulePathCb)return this.t.modulePathCb(e,this.t.debug);let s=[t];const o=`${e}.${this.e}.js`,r=this.t.modulePathPrefix;return r&&""===(s=r.split("/"))[s.length-1]&&s.splice(s.length-1,1),s.push(o),s.join("/")}}}();
+
+//# sourceMappingURL=workbox-sw.js.map
diff --git a/wwwroot/sw.js b/wwwroot/sw.js
new file mode 100644
index 0000000..9f9292a
--- /dev/null
+++ b/wwwroot/sw.js
@@ -0,0 +1,218 @@
+importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js');
+
+if (workbox) {
+ workbox.precaching.precacheAndRoute([
+ {
+ "url": "browserconfig.xml",
+ "revision": "cffdb90c1913eda3122a23644b9cdf0d"
+ },
+ {
+ "url": "css/app.css",
+ "revision": "857c9ee3dcd7d9ddcbcd3ba39e3aae33"
+ },
+ {
+ "url": "css/bootstrap.min.css",
+ "revision": "04aca1f4cd3ec3c05a75a879f3be75a3"
+ },
+ {
+ "url": "css/materialdesignicons.min.css",
+ "revision": "bdf30eb2a783b0641bb57ec40218bf67"
+ },
+ {
+ "url": "css/mdi-bs4-compat.css",
+ "revision": "6bd12caf5c54415e83ba654f4bad6b5c"
+ },
+ {
+ "url": "fonts/materialdesignicons-webfont.eot",
+ "revision": "3bd364e5b4f5c3e57a7376091996d4b4"
+ },
+ {
+ "url": "fonts/materialdesignicons-webfont.ttf",
+ "revision": "3ef6639a4cce5b903e4031b1b0102675"
+ },
+ {
+ "url": "fonts/materialdesignicons-webfont.woff",
+ "revision": "eec7f0f7c8944b878af8fb7fcc091ade"
+ },
+ {
+ "url": "fonts/materialdesignicons-webfont.woff2",
+ "revision": "9b9f2c447d27a622fcb78f6b7f38a095"
+ },
+ {
+ "url": "img/android-chrome-192x192.png",
+ "revision": "732ff683403fb1f99c82dda40a8be880"
+ },
+ {
+ "url": "img/android-chrome-512x512.png",
+ "revision": "b00b7ee363168d0a2e212661a9e12c9f"
+ },
+ {
+ "url": "img/apple-touch-icon.png",
+ "revision": "325e7e09fad8159b2f6403e83e07b462"
+ },
+ {
+ "url": "img/favicon-16x16.png",
+ "revision": "b997fd62106dd3f26061bfc07deadd0b"
+ },
+ {
+ "url": "img/favicon-32x32.png",
+ "revision": "61715a34b836d9b48c70a2cd5437c566"
+ },
+ {
+ "url": "img/favicon.ico",
+ "revision": "a2e0ac52d2cc8bcc9911587c3fa86dfa"
+ },
+ {
+ "url": "img/mstile-150x150.png",
+ "revision": "0d1808110ae641a9bad17709dcefd43c"
+ },
+ {
+ "url": "img/safari-pinned-tab.svg",
+ "revision": "b17a8beda48b7a0fde0643dccfb50bfe"
+ },
+ {
+ "url": "index.html",
+ "revision": "f863e07d681620b5e60032f425d98bdc"
+ },
+ {
+ "url": "js/app.api.js",
+ "revision": "bd87c6eb82254018841388b8cf5c63e3"
+ },
+ {
+ "url": "js/app.authenticate.js",
+ "revision": "e70ff28ec4b88f4cab019844a92a3907"
+ },
+ {
+ "url": "js/app.fourohfour.js",
+ "revision": "c7e05e3e0f08394d49bb24291225782d"
+ },
+ {
+ "url": "js/app.main.js",
+ "revision": "e9b14b8dc26b74941392aad30c4632b1"
+ },
+ {
+ "url": "js/app.nav.js",
+ "revision": "0a57c2156e586988e06695c210d514bb"
+ },
+ {
+ "url": "js/app.settings.js",
+ "revision": "18f9d50213bdbda3610ea6fc4288e5e7"
+ },
+ {
+ "url": "js/app.shell.js",
+ "revision": "8803d0b66b42744a5221021f5f7b796b"
+ },
+ {
+ "url": "js/app.util.js",
+ "revision": "ec5db7c62adce792cef75335d7539c78"
+ },
+ {
+ "url": "js/app.utilB.js",
+ "revision": "ccd22c2472e700c992aea9289494a6a7"
+ },
+ {
+ "url": "js/index.js",
+ "revision": "8b3b3e5c919cab7821a5077d8adbaa20"
+ },
+ {
+ "url": "js/lib/bootstrap.min.js",
+ "revision": "67176c242e1bdc20603c878dee836df3"
+ },
+ {
+ "url": "js/lib/handlebars.runtime-v4.0.5.js",
+ "revision": "fb40ec16c4686ee4af44e1a9ce6e6a59"
+ },
+ {
+ "url": "js/lib/jquery-3.2.1.min.js",
+ "revision": "c9f5aeeca3ad37bf2aa006139b935f0a"
+ },
+ {
+ "url": "js/lib/jquery.autocomplete.min.js",
+ "revision": "d83d89e7e96d4775cfbf0b8dd36c6161"
+ },
+ {
+ "url": "js/lib/jquery.event.gevent.js",
+ "revision": "8177fde2b2d7cf9a2a2864c6d5fcfec8"
+ },
+ {
+ "url": "js/lib/jquery.event.ue.js",
+ "revision": "0ab5aed2e8c659a1f8b4b6a21cc2fd47"
+ },
+ {
+ "url": "js/lib/jquery.gzserialize.js",
+ "revision": "b8c369b12bb3723d768d27dca01e4c88"
+ },
+ {
+ "url": "js/lib/lodash.min.js",
+ "revision": "c8515f131f3194c32a3670c8e274fab6"
+ },
+ {
+ "url": "js/lib/moment.min.js",
+ "revision": "aeb7908241d9f6d5a45e504cc4f2ec15"
+ },
+ {
+ "url": "js/lib/page.js",
+ "revision": "ab5b5137f6b561d201545bb340702b76"
+ },
+ {
+ "url": "js/lib/popper.min.js",
+ "revision": "84910d80281fc6b554f4ae2d14612494"
+ },
+ {
+ "url": "js/lib/store.min.js",
+ "revision": "b3dba894be4c4543e117df7b1871b8ea"
+ },
+ {
+ "url": "js/lib/workbox-sw-3.6.1.js",
+ "revision": "6d74eacbefb3b382d702a8b42a39c4e0"
+ },
+ {
+ "url": "js/templates/app.authenticate.handlebars",
+ "revision": "7bb4ee8ac8cf4795f877741f3632a6b8"
+ },
+ {
+ "url": "js/templates/app.fourohfour.handlebars",
+ "revision": "aad5a9d22bb4776ccbc4ec8259171ac4"
+ },
+ {
+ "url": "js/templates/app.main.context.handlebars",
+ "revision": "09cd7ed29cc03b687c8a1780b5afa655"
+ },
+ {
+ "url": "js/templates/app.main.handlebars",
+ "revision": "596c981bb61af9a9d711e54956b29b58"
+ },
+ {
+ "url": "js/templates/app.main.list-context.handlebars",
+ "revision": "f0641a95600a65d305ac2cf726a52c2f"
+ },
+ {
+ "url": "js/templates/app.settings.handlebars",
+ "revision": "14e4f4674be498f897b2c2635abe177a"
+ },
+ {
+ "url": "js/templates/app.shell.handlebars",
+ "revision": "ac743860fde8abd9a15c0c0ccac92a49"
+ },
+ {
+ "url": "js/templates/templates.js",
+ "revision": "0dfa72dc2f5038fef5a0cf1b4f6350fd"
+ },
+ {
+ "url": "manifest.json",
+ "revision": "ff8c7812f66c62e282fdf140ac50012a"
+ },
+ {
+ "url": "sw.js",
+ "revision": "9d014b77a3fd28e1fd88d3ba20ca32b9"
+ }
+]);
+
+// workbox.routing.registerRoute(
+// new RegExp('.*\.js'),
+// workbox.strategies.networkFirst()
+// );
+
+} else {
+ console.log(`Boo! Workbox didn't load 😬`);
+}
\ No newline at end of file