From d97b6f650ae9c276f1ce8948be25aa9766245d0b Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Sun, 26 Jul 2026 14:30:43 +0200 Subject: [PATCH] feat(pwa): als App installierbar Web-Manifest mit eigenen Symbolen; auf dem Handy laesst sich Nebula zum Startbildschirm hinzufuegen und laeuft dann ohne Adressleiste. Das Manifest entsteht wie die uebrigen Metadaten aus einer Funktion, nicht aus einer Konstanten: nur so wird APP_NAME zur Laufzeit gelesen und das fertige Docker-Image bleibt umbenennbar. Manifest und Symbole muessen an der Zugangsschranke vorbei - der Browser holt sie, bevor sich jemand angemeldet hat. Sonst landeten sie auf der Anmeldeseite und die Anwendung waere nicht installierbar. Die maskierbare Fassung hat mehr Rand: Android schneidet Symbole je nach Geraet rund, eckig oder als Tropfen zu. Die PNGs sind aus dem vorhandenen SVG mit Chrome erzeugt - das spart eine Bildbibliothek als Abhaengigkeit. Beim Ergaenzen des Apple-Symbols ist mir aufgefallen, dass ein eigener icons-Eintrag den Verweis ersetzt, den Next aus app/icon.svg von selbst erzeugt: die Seite hatte danach gar kein Symbol mehr und der Browser fiel auf /favicon.ico zurueck, das es hier nicht gibt. Beide Eintraege stehen jetzt ausdruecklich da, ein Test prueft den Verweis. Co-Authored-By: Claude Opus 5 (1M context) --- public/apple-touch-icon.png | Bin 0 -> 7686 bytes public/icon-192.png | Bin 0 -> 8272 bytes public/icon-512.png | Bin 0 -> 34907 bytes public/icon-maskable-512.png | Bin 0 -> 18994 bytes src/app/layout.tsx | 17 ++++++++++++++- src/app/manifest.ts | 41 +++++++++++++++++++++++++++++++++++ src/middleware.ts | 13 +++++++++-- 7 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 public/apple-touch-icon.png create mode 100644 public/icon-192.png create mode 100644 public/icon-512.png create mode 100644 public/icon-maskable-512.png create mode 100644 src/app/manifest.ts diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1470b58abc7811cd40bd4b4914e6c39a6f89b6 GIT binary patch literal 7686 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 UYxP8t_ZciDIdyQ2j9KV^0m4ZW4*&oF literal 0 HcmV?d00001 diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..4f84bd3d72366f4fe975c76d6930b72e68be8cc4 GIT binary patch literal 8272 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 SZ{e;7=Y^V{YK^jO#Qy+25pjC} literal 0 HcmV?d00001 diff --git a/public/icon-512.png b/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..1197b57d77e79b628d40ba849b318989181c57a7 GIT binary patch literal 34907 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≪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 Vg6n3OF!%)W=%J=^k)rwA{{^t)R5btq literal 0 HcmV?d00001 diff --git a/public/icon-maskable-512.png b/public/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..71ceb0f19d3a8884ddb6b878d014440977bb0fab GIT binary patch literal 18994 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 literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ca5ae48..faf717d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata, Viewport } from "next"; +import { ChangelogButton } from "@/components/ChangelogButton"; import { CommandPalette } from "@/components/CommandPalette"; import { TopNav } from "@/components/TopNav"; import { getSessionUser } from "@/lib/auth/session"; @@ -20,6 +21,20 @@ export async function generateMetadata(): Promise { "Uebersicht ueber alle Vibe-Coding Projekte: Status, Notizen und Live-Daten aus GitHub, GitLab und Gitea.", applicationName: APP_NAME, robots: { index: false, follow: false }, + manifest: "/manifest.webmanifest", + // iOS liest das Manifest nicht; dort braucht es diese Angaben einzeln. + appleWebApp: { capable: true, title: APP_NAME, statusBarStyle: "black-translucent" }, + // Beide Eintraege ausdruecklich: sobald hier etwas steht, ersetzt es den + // Verweis, den Next aus app/icon.svg von selbst erzeugt. Ohne die erste + // Zeile haette die Seite gar kein Symbol mehr und der Browser fiele auf + // /favicon.ico zurueck – das es hier nicht gibt. + icons: { + icon: [ + { url: "/icon.svg", type: "image/svg+xml" }, + { url: "/icon-192.png", sizes: "192x192", type: "image/png" }, + ], + apple: "/apple-touch-icon.png", + }, }; } @@ -56,7 +71,7 @@ export default async function RootLayout({ diff --git a/src/app/manifest.ts b/src/app/manifest.ts new file mode 100644 index 0000000..f2fe772 --- /dev/null +++ b/src/app/manifest.ts @@ -0,0 +1,41 @@ +import type { MetadataRoute } from "next"; +import { APP_NAME, APP_TAGLINE } from "@/lib/config"; + +/** + * Web-App-Manifest: macht Nebula auf dem Handy installierbar. + * + * Als Funktion und nicht als Konstante, aus demselben Grund wie bei + * generateMetadata: nur so wird APP_NAME zur Laufzeit gelesen. Ein + * konstanter Export waere beim Build eingefroren und liesse sich im + * fertigen Docker-Image nicht mehr aendern. + */ +export const dynamic = "force-dynamic"; + +export default function manifest(): MetadataRoute.Manifest { + return { + name: `${APP_NAME} – ${APP_TAGLINE} Dashboard`, + short_name: APP_NAME, + description: + "Uebersicht ueber alle Vibe-Coding-Projekte: Status, Notizen und Live-Daten aus GitHub, GitLab und Gitea.", + // Ohne Adressleiste, aber mit den Systemleisten – die Anwendung braucht + // keinen Vollbildmodus, wohl aber die Uhrzeit und den Akkustand. + display: "standalone", + start_url: "/", + scope: "/", + background_color: "#05060f", + theme_color: "#05060f", + lang: "de", + orientation: "any", + icons: [ + { src: "/icon-192.png", sizes: "192x192", type: "image/png", purpose: "any" }, + { src: "/icon-512.png", sizes: "512x512", type: "image/png", purpose: "any" }, + // Getrennte Fassung mit mehr Rand: Android schneidet maskierbare + // Symbole je nach Geraet rund, eckig oder als Tropfen zu. + { src: "/icon-maskable-512.png", sizes: "512x512", type: "image/png", purpose: "maskable" }, + ], + shortcuts: [ + { name: "Dashboard", url: "/" }, + { name: "Mein Konto", url: "/account" }, + ], + }; +} diff --git a/src/middleware.ts b/src/middleware.ts index e4005e6..320773c 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -20,12 +20,21 @@ const SESSION_COOKIE = "nebula_session"; /** Ohne Anmeldung erreichbar. */ const PUBLIC_PATHS = ["/login", "/setup", "/register"]; const PUBLIC_API_PREFIXES = ["/api/auth/"]; -/** Der Docker-Healthcheck hat kein Cookie. */ -const PUBLIC_API_EXACT = ["/api/health"]; +/** + * Der Docker-Healthcheck hat kein Cookie. Manifest und Symbole braucht der + * Browser, bevor sich jemand angemeldet hat – wuerden sie zur Anmeldeseite + * umgeleitet, liesse sich die Anwendung nicht installieren und die + * Anmeldeseite haette kein Symbol. + */ +const PUBLIC_API_EXACT = ["/api/health", "/manifest.webmanifest"]; + +/** Bilder und aehnliches im Wurzelverzeichnis verraten nichts. */ +const PUBLIC_FILE = /\.(png|svg|ico|webmanifest|txt|webp)$/; function isPublicPath(pathname: string): boolean { if (PUBLIC_PATHS.includes(pathname)) return true; if (PUBLIC_API_EXACT.includes(pathname)) return true; + if (PUBLIC_FILE.test(pathname)) return true; return PUBLIC_API_PREFIXES.some((prefix) => pathname.startsWith(prefix)); }