diff --git a/package.json b/package.json index 44d7d4e..2bfc25c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "crumbs", "private": true, - "version": "0.1.2", + "version": "0.1.3", "type": "module", "scripts": { "dev": "vite dev", diff --git a/static/manifest.webmanifest b/static/manifest.webmanifest deleted file mode 100644 index ba0e03a..0000000 --- a/static/manifest.webmanifest +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "Crumbs by Bretzel", - "short_name": "Crumbs", - "description": "A self-hostable, offline-first note-taking app by Bretzel", - "start_url": "/", - "display": "standalone", - "background_color": "#202124", - "theme_color": "#f59e0b", - "icons": [ - { - "src": "/icons/icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icons/icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "/icons/icon-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/static/pwa-192x192.png b/static/pwa-192x192.png new file mode 100644 index 0000000..dd2afb8 Binary files /dev/null and b/static/pwa-192x192.png differ diff --git a/static/pwa-512x512.png b/static/pwa-512x512.png new file mode 100644 index 0000000..d1e5f2a Binary files /dev/null and b/static/pwa-512x512.png differ diff --git a/vite.config.ts b/vite.config.ts index bf699a8..5c7009d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,42 @@ import { sveltekit } from '@sveltejs/kit/vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()] + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA({ + registerType: 'autoUpdate', + manifest: { + name: 'Crumbs by Bretzel', + short_name: 'Crumbs', + description: 'A self-hostable, offline-first note-taking app by Bretzel', + start_url: '/', + display: 'standalone', + background_color: '#202124', + theme_color: '#f59e0b', + icons: [ + { src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png' }, + { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png' }, + { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' } + ] + }, + workbox: { + globPatterns: ['client/**/*.{js,css,ico,png,svg,webp,woff,woff2}'], + navigateFallback: '/', + runtimeCaching: [ + { + urlPattern: /^https?:\/\/.*\/api\//, + handler: 'NetworkFirst', + options: { + cacheName: 'api-cache', + expiration: { maxEntries: 50, maxAgeSeconds: 300 } + } + } + ] + } + }) + ] });