pageta/apps/web/vite.config.ts
Till JS 50f2974627 feat(web): Datenausfuhr, erster Start, Teilen-Ziel, klare Anmelde-Hinweise
Datenausfuhr in den Lese-Liste-Einstellungen: alles als JSON (Artikel mit
Text, Status, Tags, Notiz und Markierungen in Lesereihenfolge) oder nur
die Adressen als .txt, die jeder Import wieder liest. Entsteht im Gerät,
ohne Server-Aufruf. Löst die Zusage aus Art. 20 DSGVO direkt ein — bisher
nur auf Anfrage.

Erster Start: statt eines EmptyState mit nur „Bookmarklet einrichten“
drei Wege (Link einfügen, Liste mitbringen, aus dem Browser). Der
Plus-Knopf hängt an der Leiste, die erst mit Artikeln erscheint — bei
leerer Liste gab es keinen direkten Weg zum ersten Link. Ohne Konto
steht gleich oben, dass Speichern ein mana-Konto braucht.

/lese-liste/add zeigt bei 401 eine Anmelde-Aufforderung mit Rückweg zum
selben Link statt „…/extract/preview → 401 {"error":…}“.

Manifest: share_target auf /lese-liste/add. Die Einstellungen beschrieben
das Teilen-Menü längst, das Manifest hatte es nie.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 21:25:59 +02:00

53 lines
2 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',
// Feed und Recherche ruhen seit 2026-06-01 (docs/FEED.md) und
// leiten weiter. Sie standen hier trotzdem noch als Beschreibung
// und als Verknüpfung — ein installiertes Symbol führte damit
// ins Leere.
description: 'Reader-App des Vereins mana — Lese-Liste mit Markierungen.',
...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',
// Teilen-Ziel: installiert taucht Pageta im Teilen-Menü auf
// (Android/Chromium). /lese-liste/add liest `url` und, weil
// viele Apps den Link nur in `text` schicken, auch die erste
// Adresse aus `text`.
// 🔴 Fehlte bis 2026-09-29 — die Einstellungen beschrieben das
// Teilen-Menü längst, das Manifest hatte kein share_target.
shareTarget: {
action: '/lese-liste/add',
method: 'GET',
params: { title: 'title', text: 'text', url: 'url' },
},
shortcuts: [
{ name: 'Lese-Liste', short_name: 'Lesen', url: '/lese-liste' },
{ name: 'Markierungen', short_name: 'Marker', url: '/markierungen' },
{ name: 'Artikel speichern', short_name: 'Speichern', url: '/lese-liste/add' },
],
}),
),
],
server: {
port: Number(process.env.PAGETA_WEB_PORT ?? 3100),
host: true,
},
ssr: {
noExternal: [/^@mana\//],
},
});