From fa9b23a6ab4b306ea044a918f9b2810edb192d51 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 18:03:24 +0900 Subject: [PATCH 01/15] update colors --- .../UI/dashboard/DashboardCard.svelte | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/lib/components/UI/dashboard/DashboardCard.svelte b/src/lib/components/UI/dashboard/DashboardCard.svelte index 6a1228e9..155e8fca 100644 --- a/src/lib/components/UI/dashboard/DashboardCard.svelte +++ b/src/lib/components/UI/dashboard/DashboardCard.svelte @@ -29,12 +29,12 @@ dark:border-gray-700 dark:bg-[#1f2532] dark:text-white dark:shadow-gray-900/20" >
-
- -
+ + + +

- {location.name} +
+ {#if loading} + + {:else if allActive} + + {:else if activeDevices.length > 0 && !allInactive} + + {:else} + + {/if} +
+ {location.name} + + +

+ +
+ 📴 Currently offline +
+
+ + + + diff --git a/static/sw.js b/static/sw.js new file mode 100644 index 00000000..3fb13645 --- /dev/null +++ b/static/sw.js @@ -0,0 +1,45 @@ +// This is the "Offline page" service worker + +importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'); + +const CACHE = 'pwabuilder-page'; + +// TODO: replace the following with the correct offline fallback page i.e.: const offlineFallbackPage = "offline.html"; +const offlineFallbackPage = 'offline.html'; + +self.addEventListener('message', (event) => { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting(); + } +}); + +self.addEventListener('install', async (event) => { + event.waitUntil(caches.open(CACHE).then((cache) => cache.add(offlineFallbackPage))); +}); + +if (workbox.navigationPreload.isSupported()) { + workbox.navigationPreload.enable(); +} + +self.addEventListener('fetch', (event) => { + if (event.request.mode === 'navigate') { + event.respondWith( + (async () => { + try { + const preloadResp = await event.preloadResponse; + + if (preloadResp) { + return preloadResp; + } + + const networkResp = await fetch(event.request); + return networkResp; + } catch (error) { + const cache = await caches.open(CACHE); + const cachedResp = await cache.match(offlineFallbackPage); + return cachedResp; + } + })() + ); + } +}); diff --git a/vite.config.ts b/vite.config.ts index 5219b043..f0ef6d1d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,6 +10,9 @@ export default defineConfig({ sveltekit(), SvelteKitPWA({ registerType: 'autoUpdate', + srcDir: 'static', + filename: 'sw.js', + strategies: 'injectManifest', manifest: { name: 'CropWatch UI', short_name: 'CW UI', From 053094137ed4df4db8bc34b01e5fe464dee72d5c Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 20:06:19 +0900 Subject: [PATCH 09/15] offline service worker take 2 --- build-info.txt | 6 +-- src/service-worker.js | 95 +++++++++++++++++++++++++++++++++++++++++++ static/sw.js | 5 ++- svelte.config.js | 7 +++- vite.config.ts | 3 -- 5 files changed, 107 insertions(+), 9 deletions(-) create mode 100644 src/service-worker.js diff --git a/build-info.txt b/build-info.txt index c4167c3f..80891a56 100644 --- a/build-info.txt +++ b/build-info.txt @@ -1,8 +1,8 @@ === Build Info === -Commit : 45a5b16 -Branch : master +Commit : 98425a9 +Branch : pwa Author : Kevin Cantrell -Date : 2025-07-02T14:13:08.432Z +Date : 2025-07-03T11:05:01.345Z Builder : kevin@kevin-desktop IP Address : 192.168.1.100 ================== diff --git a/src/service-worker.js b/src/service-worker.js new file mode 100644 index 00000000..6cfd7c2f --- /dev/null +++ b/src/service-worker.js @@ -0,0 +1,95 @@ +import { build, files, version } from '$service-worker'; + +// Create a unique cache name for this deployment +const CACHE = `cache-${version}`; + +const ASSETS = [ + ...build, // the app itself + ...files // everything in `static` +]; + +self.addEventListener('install', (event) => { + // Create a new cache and add all files to it + async function addFilesToCache() { + const cache = await caches.open(CACHE); + await cache.addAll(ASSETS); + } + + event.waitUntil(addFilesToCache()); +}); + +self.addEventListener('activate', (event) => { + // Remove previous cached data from disk + async function deleteOldCaches() { + for (const key of await caches.keys()) { + if (key !== CACHE) await caches.delete(key); + } + } + + event.waitUntil(deleteOldCaches()); +}); + +self.addEventListener('fetch', (event) => { + // ignore POST requests etc + if (event.request.method !== 'GET') return; + + async function respond() { + const url = new URL(event.request.url); + const cache = await caches.open(CACHE); + + // `build`/`files` can always be served from the cache + if (ASSETS.includes(url.pathname)) { + const response = await cache.match(url.pathname); + if (response) { + return response; + } + } + + // for everything else, try the network first, but + // fall back to the cache if we're offline + try { + const response = await fetch(event.request); + + // if we're offline, fetch can return a value that is not a Response + // instead of throwing - and we can't pass this non-Response to respondWith + if (!(response instanceof Response)) { + throw new Error('invalid response from fetch'); + } + + if (response.status === 200) { + cache.put(event.request, response.clone()); + } + + return response; + } catch (err) { + // If we're trying to navigate to a page and we're offline, + // serve the offline page instead + if (event.request.mode === 'navigate') { + const response = await cache.match('/offline.html'); + if (response) { + return response; + } + } + + // Otherwise, try to serve from cache + const response = await cache.match(event.request); + if (response) { + return response; + } + + // If we can't serve from cache, return a basic offline response + return new Response('Offline', { + status: 503, + statusText: 'Service Unavailable' + }); + } + } + + event.respondWith(respond()); +}); + +self.addEventListener('message', (event) => { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting(); + } +}); diff --git a/static/sw.js b/static/sw.js index 3fb13645..d371c032 100644 --- a/static/sw.js +++ b/static/sw.js @@ -3,10 +3,11 @@ importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'); const CACHE = 'pwabuilder-page'; - -// TODO: replace the following with the correct offline fallback page i.e.: const offlineFallbackPage = "offline.html"; const offlineFallbackPage = 'offline.html'; +// Precache manifest will be injected here by Vite PWA +workbox.precaching.precacheAndRoute(self.__WB_MANIFEST); + self.addEventListener('message', (event) => { if (event.data && event.data.type === 'SKIP_WAITING') { self.skipWaiting(); diff --git a/svelte.config.js b/svelte.config.js index c6b39450..0db9695f 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -3,7 +3,12 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; const config = { preprocess: vitePreprocess(), - kit: { adapter: adapter() } + kit: { + adapter: adapter(), + serviceWorker: { + register: false // Let PWA plugin handle registration + } + } }; export default config; diff --git a/vite.config.ts b/vite.config.ts index f0ef6d1d..5219b043 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,9 +10,6 @@ export default defineConfig({ sveltekit(), SvelteKitPWA({ registerType: 'autoUpdate', - srcDir: 'static', - filename: 'sw.js', - strategies: 'injectManifest', manifest: { name: 'CropWatch UI', short_name: 'CW UI', From 83ff35d4074bb78bbb49e6b7c2add23b1b531c50 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 20:16:59 +0900 Subject: [PATCH 10/15] autocomplete for login form email --- src/routes/auth/login/+page.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes/auth/login/+page.svelte b/src/routes/auth/login/+page.svelte index 40151dcc..2ba9724c 100644 --- a/src/routes/auth/login/+page.svelte +++ b/src/routes/auth/login/+page.svelte @@ -121,6 +121,7 @@ id="email" bind:value={email} required + autocomplete="email" placeholder="✉️ {$_('Enter your email')}" disabled={loading} class="text-text-light dark:text-text-dark focus:ring-primary w-full rounded-md border border-gray-300 From 5d2ea19aa65472f0c679e437f3ba52fe92fae690 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 20:49:45 +0900 Subject: [PATCH 11/15] more tests --- build-info.txt | 4 +- src/app.html | 1 + src/hooks.server.ts | 4 ++ src/service-worker.js | 95 ------------------------------------------- static/sw.js | 46 --------------------- test-sw.html | 71 ++++++++++++++++++++++++++++++++ vite.config.ts | 21 ++++++++++ 7 files changed, 99 insertions(+), 143 deletions(-) delete mode 100644 src/service-worker.js delete mode 100644 static/sw.js create mode 100644 test-sw.html diff --git a/build-info.txt b/build-info.txt index 80891a56..435e2c8a 100644 --- a/build-info.txt +++ b/build-info.txt @@ -1,8 +1,8 @@ === Build Info === -Commit : 98425a9 +Commit : 83ff35d Branch : pwa Author : Kevin Cantrell -Date : 2025-07-03T11:05:01.345Z +Date : 2025-07-03T11:47:24.951Z Builder : kevin@kevin-desktop IP Address : 192.168.1.100 ================== diff --git a/src/app.html b/src/app.html index cf88353b..de3d879d 100644 --- a/src/app.html +++ b/src/app.html @@ -20,6 +20,7 @@ console.log('Overlay supported'); } + diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 433577a3..2cb8ffaf 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -5,6 +5,10 @@ import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/publi import { createClient } from '@supabase/supabase-js'; const PUBLIC_ROUTES = [ + '/registerSW.js', + '/sw.js', + '/manifest.webmanifest', + '/workbox-', '/auth', // All routes under /auth/ '/api/auth', // Only authentication-related API routes '/static', // All static assets diff --git a/src/service-worker.js b/src/service-worker.js deleted file mode 100644 index 6cfd7c2f..00000000 --- a/src/service-worker.js +++ /dev/null @@ -1,95 +0,0 @@ -import { build, files, version } from '$service-worker'; - -// Create a unique cache name for this deployment -const CACHE = `cache-${version}`; - -const ASSETS = [ - ...build, // the app itself - ...files // everything in `static` -]; - -self.addEventListener('install', (event) => { - // Create a new cache and add all files to it - async function addFilesToCache() { - const cache = await caches.open(CACHE); - await cache.addAll(ASSETS); - } - - event.waitUntil(addFilesToCache()); -}); - -self.addEventListener('activate', (event) => { - // Remove previous cached data from disk - async function deleteOldCaches() { - for (const key of await caches.keys()) { - if (key !== CACHE) await caches.delete(key); - } - } - - event.waitUntil(deleteOldCaches()); -}); - -self.addEventListener('fetch', (event) => { - // ignore POST requests etc - if (event.request.method !== 'GET') return; - - async function respond() { - const url = new URL(event.request.url); - const cache = await caches.open(CACHE); - - // `build`/`files` can always be served from the cache - if (ASSETS.includes(url.pathname)) { - const response = await cache.match(url.pathname); - if (response) { - return response; - } - } - - // for everything else, try the network first, but - // fall back to the cache if we're offline - try { - const response = await fetch(event.request); - - // if we're offline, fetch can return a value that is not a Response - // instead of throwing - and we can't pass this non-Response to respondWith - if (!(response instanceof Response)) { - throw new Error('invalid response from fetch'); - } - - if (response.status === 200) { - cache.put(event.request, response.clone()); - } - - return response; - } catch (err) { - // If we're trying to navigate to a page and we're offline, - // serve the offline page instead - if (event.request.mode === 'navigate') { - const response = await cache.match('/offline.html'); - if (response) { - return response; - } - } - - // Otherwise, try to serve from cache - const response = await cache.match(event.request); - if (response) { - return response; - } - - // If we can't serve from cache, return a basic offline response - return new Response('Offline', { - status: 503, - statusText: 'Service Unavailable' - }); - } - } - - event.respondWith(respond()); -}); - -self.addEventListener('message', (event) => { - if (event.data && event.data.type === 'SKIP_WAITING') { - self.skipWaiting(); - } -}); diff --git a/static/sw.js b/static/sw.js deleted file mode 100644 index d371c032..00000000 --- a/static/sw.js +++ /dev/null @@ -1,46 +0,0 @@ -// This is the "Offline page" service worker - -importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'); - -const CACHE = 'pwabuilder-page'; -const offlineFallbackPage = 'offline.html'; - -// Precache manifest will be injected here by Vite PWA -workbox.precaching.precacheAndRoute(self.__WB_MANIFEST); - -self.addEventListener('message', (event) => { - if (event.data && event.data.type === 'SKIP_WAITING') { - self.skipWaiting(); - } -}); - -self.addEventListener('install', async (event) => { - event.waitUntil(caches.open(CACHE).then((cache) => cache.add(offlineFallbackPage))); -}); - -if (workbox.navigationPreload.isSupported()) { - workbox.navigationPreload.enable(); -} - -self.addEventListener('fetch', (event) => { - if (event.request.mode === 'navigate') { - event.respondWith( - (async () => { - try { - const preloadResp = await event.preloadResponse; - - if (preloadResp) { - return preloadResp; - } - - const networkResp = await fetch(event.request); - return networkResp; - } catch (error) { - const cache = await caches.open(CACHE); - const cachedResp = await cache.match(offlineFallbackPage); - return cachedResp; - } - })() - ); - } -}); diff --git a/test-sw.html b/test-sw.html new file mode 100644 index 00000000..45cb1f74 --- /dev/null +++ b/test-sw.html @@ -0,0 +1,71 @@ + + + + + + Service Worker Test + + +

Service Worker Test

+
+ + + + + + diff --git a/vite.config.ts b/vite.config.ts index 5219b043..f974a0ef 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,6 +10,27 @@ export default defineConfig({ sveltekit(), SvelteKitPWA({ registerType: 'autoUpdate', + injectRegister: 'script-defer', + strategies: 'generateSW', + devOptions: { + enabled: true, + type: 'module' + }, + workbox: { + navigateFallback: '/offline.html', + navigateFallbackDenylist: [/^\/api\//, /^\/auth\/api\//, /^\/_app\//], + globPatterns: ['**/*.{js,css,html,ico,png,svg,webmanifest}'], + runtimeCaching: [ + { + urlPattern: ({ request }) => request.destination === 'document', + handler: 'NetworkFirst', + options: { + cacheName: 'pages-cache', + networkTimeoutSeconds: 3 + } + } + ] + }, manifest: { name: 'CropWatch UI', short_name: 'CW UI', From 03cf732687362b2677d5d500e74cb4918f7a5ae0 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 20:56:48 +0900 Subject: [PATCH 12/15] adding handle for service worksers and manifest --- build-info.txt | 4 ++-- src/hooks.server.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/build-info.txt b/build-info.txt index 435e2c8a..c6768755 100644 --- a/build-info.txt +++ b/build-info.txt @@ -1,8 +1,8 @@ === Build Info === -Commit : 83ff35d +Commit : 5d2ea19 Branch : pwa Author : Kevin Cantrell -Date : 2025-07-03T11:47:24.951Z +Date : 2025-07-03T11:55:52.567Z Builder : kevin@kevin-desktop IP Address : 192.168.1.100 ================== diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 2cb8ffaf..bc75cb78 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -5,6 +5,7 @@ import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/publi import { createClient } from '@supabase/supabase-js'; const PUBLIC_ROUTES = [ + '/offline.html', '/registerSW.js', '/sw.js', '/manifest.webmanifest', @@ -359,6 +360,17 @@ const handleSupabase: Handle = async ({ event, resolve }) => { // Combine the handles - CORS first, then Supabase export const handle: Handle = async ({ event, resolve }) => { + const { url } = event; + if ( + url.pathname.startsWith('/sw.js') || + url.pathname.startsWith('/workbox-') || + url.pathname.startsWith('/manifest.webmanifest') || + url.pathname.startsWith('/registerSW.js') || + url.pathname.startsWith('/offline.html') + ) { + return resolve(event); + } + // First apply CORS (handles preflight requests immediately) return await handleCORS({ event, From ab2a389cc01c37ab1644a14ce93f628791693508 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 21:13:30 +0900 Subject: [PATCH 13/15] done updateing pwa --- README.md | 2 +- build-info.txt | 4 +- package.json | 2 - src/routes/+page.svelte | 174 ---------------------------------------- 4 files changed, 3 insertions(+), 179 deletions(-) diff --git a/README.md b/README.md index d258cd1e..2f124dc4 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Link : https://app.CropWatch.io # List of Tools & Packages Used: - PWA Framework: Svelte, SvelteKit -- UI Components: @cropwatchdevelopment/cwui, bits-ui, @revolist/revogrid, @revolist/svelte-datagrid +- UI Components: @cropwatchdevelopment/cwui, bits-ui, @revolist/svelte-datagrid - Styling: Tailwind CSS, @layerstack/tailwind, @tailwindcss/forms, @tailwindcss/typography - State & IoC: @stencil/store, inversify - Data Visualization: D3.js, ApexCharts diff --git a/build-info.txt b/build-info.txt index c6768755..5f69a193 100644 --- a/build-info.txt +++ b/build-info.txt @@ -1,8 +1,8 @@ === Build Info === -Commit : 5d2ea19 +Commit : 03cf732 Branch : pwa Author : Kevin Cantrell -Date : 2025-07-03T11:55:52.567Z +Date : 2025-07-03T12:09:21.667Z Builder : kevin@kevin-desktop IP Address : 192.168.1.100 ================== diff --git a/package.json b/package.json index 49956902..6ca369d8 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,6 @@ "@layerstack/tailwind": "2.0.0-next.2", "@layerstack/utils": "^1.0.0", "@mdi/js": "^7.4.47", - "@revolist/revogrid": "^4.15.8", - "@revolist/svelte-datagrid": "^4.15.8", "@stencil/store": "^2.1.3", "@supabase/ssr": "^0.6.1", "@supabase/supabase-js": "^2.49.4", diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 80db095c..24ce8277 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,135 +7,6 @@ import { success, error, warning, info, neutral } from '$lib/stores/toast.svelte'; import { onMount } from 'svelte'; - // Dynamic import for RevoGrid to avoid SSR issues - let RevoGrid: any = $state(null); - let ColumnRegular: any = $state(null); - - let { data } = $props(); - - let grid_component_instance: any = $state(); // To bind the component instance if needed - const columns: any[] = $state([ - { - name: '🎰 Ticker', - prop: 'symbol', - sortable: true, - pin: 'colPinStart', - cellTemplate: (h, { model, prop }) => h('strong', null, model[prop]) - }, - { - name: '🔠 Company Name', - prop: 'company_name', - size: 300 - }, - { - name: '', - prop: '📉 graph', - readonly: true, - // Custom cell render - cellTemplate(h) { - const barWidth = 5; - const barSpacing = 5; - const maxHeight = 30; - const bars = []; - - // Draw 5 vertical bars with random heights - for (let i = 0; i < 5; i++) { - const barHeight = Math.random() * maxHeight; - const x = i * (barWidth + barSpacing); - const y = maxHeight - barHeight + 5; - - // Create the rectangle element for the bar - const rect = h('rect', { - key: i, - x, - y, - width: barWidth, - height: barHeight, - fill: 'blue', - stroke: 'black' - }); - - // Append the rectangle to the group - bars.push(rect); - } - return h( - 'svg', - { - width: '100%', - height: maxHeight + 10 - }, - h('g', {}, bars) - ); - } - }, - { - name: '💰 Price', - prop: 'price', - columnType: 'numeric', - sortable: true - }, - { - name: '⬆️ Change', - prop: 'change', - columnType: 'numeric', - sortable: true - }, - { - name: '% Change', - prop: 'percent_change' - } - ]); - - const source = $state([ - { - symbol: 'AAPL', - company_name: 'Apple Inc.', - price: 150.25, - change: 1.5, - percent_change: '1.01%' - }, - { - symbol: 'MSFT', - company_name: 'Microsoft Corp.', - price: 280.75, - change: -0.5, - percent_change: '-0.18%' - }, - { - symbol: 'GOOGL', - company_name: 'Alphabet Inc.', - price: 2700.5, - change: 10.2, - percent_change: '0.38%' - } - ]); - - onMount(() => { - // Dynamically import RevoGrid only on the client side - if (browser) { - import('@revolist/svelte-datagrid').then((module) => { - RevoGrid = module.RevoGrid; - ColumnRegular = module.ColumnRegular; - }); - } - - const interval = setInterval(() => { - source.forEach((item) => { - item.price = parseFloat((Math.random() * 3000).toFixed(2)); - item.change = parseFloat((Math.random() * 20 - 10).toFixed(2)); // Random change between -10 and 10 - const priceForCalc = item.price === 0 ? 1 : item.price; // Avoid division by zero - item.percent_change = `${((item.change / priceForCalc) * 100).toFixed(2)}%`; - }); - // With Svelte 5 runes, direct modification of $state array items should be reactive. - // If the grid doesn't update, uncommenting the next line might be necessary if RevoGrid needs an explicit push. - // source = [...source]; - }, 2000); // Update every 2 seconds - - return () => { - clearInterval(interval); // Clear interval on component destroy - }; - }); - // Define the AlertPoint type locally to match the one in NumberLine.svelte type AlertPoint = { id: number; @@ -309,29 +180,6 @@ success('Custom message', {
-
- {#if browser && RevoGrid} - - {:else} -

Loading data grid...

- {/if} -
-
From e0678e495fa931fab8ee1d68f7d0f9f26af1b48c Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 21:17:17 +0900 Subject: [PATCH 14/15] fixing lock file --- pnpm-lock.yaml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f340b25f..072ab6c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,12 +20,6 @@ importers: '@mdi/js': specifier: ^7.4.47 version: 7.4.47 - '@revolist/revogrid': - specifier: ^4.15.8 - version: 4.15.8 - '@revolist/svelte-datagrid': - specifier: ^4.15.8 - version: 4.15.8 '@stencil/store': specifier: ^2.1.3 version: 2.1.3(@stencil/core@4.35.1) @@ -1271,12 +1265,6 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@revolist/revogrid@4.15.8': - resolution: {integrity: sha512-XP6EvH2D+VukmGDunGQieOTX3rjXmfx4YCEMerzzZMjD1lrztUQFqOxkPR9U4E5KvhU79nn/K9WPo8u7b6VCVw==} - - '@revolist/svelte-datagrid@4.15.8': - resolution: {integrity: sha512-QNwAMlEhqpeLBvJ36vFg8Q+3NVjAuHlbn8dvy9s+k3LV32SQ4ZJY0l/vFF325mRWQWWHydrfh/uOanTENTUUjA==} - '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -6334,8 +6322,8 @@ snapshots: '@jridgewell/source-map@0.3.10': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -6461,12 +6449,6 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@revolist/revogrid@4.15.8': {} - - '@revolist/svelte-datagrid@4.15.8': - dependencies: - '@revolist/revogrid': 4.15.8 - '@rollup/plugin-babel@5.3.1(@babel/core@7.28.0)(rollup@2.79.2)': dependencies: '@babel/core': 7.28.0 From b965980c488426c102516e6345c00cc626b47614 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Thu, 3 Jul 2025 21:24:51 +0900 Subject: [PATCH 15/15] removed extra files --- src/hooks.server.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/hooks.server.ts b/src/hooks.server.ts index bc75cb78..f132baee 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -6,10 +6,6 @@ import { createClient } from '@supabase/supabase-js'; const PUBLIC_ROUTES = [ '/offline.html', - '/registerSW.js', - '/sw.js', - '/manifest.webmanifest', - '/workbox-', '/auth', // All routes under /auth/ '/api/auth', // Only authentication-related API routes '/static', // All static assets