feat(pwa): PNG-Icons 192/512 + Manifest maskable-fähig
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m35s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m35s
Android Chrome bevorzugt für den Home-Screen rasterbare PNG-Icons über reines SVG. 192×192 und 512×512 werden aus static/icon.svg per Sharp-Skript gerendert (npm run render:icons) und committet, damit CI keine zusätzliche Abhängigkeit hat. Manifest referenziert alle drei Icons mit purpose "any maskable" → rund-/squircle-sicher. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
19
scripts/render-icons.mjs
Normal file
19
scripts/render-icons.mjs
Normal file
@@ -0,0 +1,19 @@
|
||||
// Rendert PWA-Icons aus static/icon.svg in die Größen, die Android/iOS
|
||||
// für Home-Screen-Icons bevorzugen. Einmal lokal ausführen und die
|
||||
// PNGs committen — keine CI-Abhängigkeit.
|
||||
import sharp from 'sharp';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname, join } from 'node:path';
|
||||
|
||||
const here = dirname(fileURLToPath(import.meta.url));
|
||||
const root = join(here, '..');
|
||||
const src = await readFile(join(root, 'static/icon.svg'));
|
||||
|
||||
for (const size of [192, 512]) {
|
||||
await sharp(src, { density: 400 })
|
||||
.resize(size, size, { fit: 'contain', background: { r: 248, g: 250, b: 248, alpha: 1 } })
|
||||
.png()
|
||||
.toFile(join(root, `static/icon-${size}.png`));
|
||||
console.log(`wrote static/icon-${size}.png`);
|
||||
}
|
||||
Reference in New Issue
Block a user