pageta/apps/web/vite.config.ts
Till JS a3c2e5a92e fix(web): PWA autoUpdate + Feed-Shortcut auf /feed
Behebt: beim ersten Laden erschien der alte App-Shell (`/` als Feed
mit "Failed to fetch"), erst der Reload zeigte die Lese-Liste.

Ursache: registerType 'prompt' liess einen neuen SW warten, sodass
nach jedem Deploy beim ersten Laden noch der veraltete, gecachte
App-Shell durchschlug. Zusätzlich zeigte der PWA-Shortcut "Feed"
noch auf `/`, das inzwischen auf /lese-liste redirectet.

- vite.config.ts: registerType 'autoUpdate' (skipWaiting +
  clientsClaim) → neuer SW aktiviert sofort, registerSW lädt selbst neu.
- vite.config.ts: Feed-Shortcut `/` → `/feed`.
- +layout.svelte: registerSW({ immediate: true }); totes
  onNeedRefresh-/UpdatePrompt-Wiring entfernt (im autoUpdate-Modus
  feuert onNeedRefresh nie).

start_url/id bleiben bewusst `/`, damit bestehende PWA-Installs ihre
Identität behalten.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 15:19:01 +02:00

39 lines
1.3 KiB
TypeScript

import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { SvelteKitPWA } from '@vite-pwa/sveltekit';
import { createPWAConfig, themeBridge } from '@mana/shared-pwa';
export default defineConfig({
plugins: [
tailwindcss(),
sveltekit(),
SvelteKitPWA(
createPWAConfig({
name: 'Pageta',
shortName: 'Pageta',
description: 'Reader-App des Vereins mana e.V. — Feed, Lese-Liste, Recherche.',
...themeBridge('paper'),
// autoUpdate statt 'prompt': ein neuer SW aktiviert sofort
// (skipWaiting + clientsClaim) und die Seite lädt automatisch
// neu. Sonst schlägt nach jedem Deploy beim ERSTEN Laden noch
// der alte App-Shell durch (z.B. `/` als Feed statt Redirect
// auf /lese-liste) und erst der Reload zeigt den neuen Stand.
registerType: 'autoUpdate',
shortcuts: [
// `/` redirectet auf /lese-liste — der Feed lebt unter /feed.
{ name: 'Feed', short_name: 'Feed', url: '/feed' },
{ name: 'Lese-Liste', short_name: 'Lesen', url: '/lese-liste' },
{ name: 'Recherche', short_name: 'Recherche', url: '/recherche' },
],
}),
),
],
server: {
port: Number(process.env.PAGETA_WEB_PORT ?? 3100),
host: true,
},
ssr: {
noExternal: [/^@mana\//],
},
});