Kundenportal war nicht installierbar: Manifest hinter der Zugangswand
Live gemessen nach dem Deploy: Symbole 200, portal.webmanifest 302 auf zugang.html. Der Browser bekam HTML statt JSON und bot "App installieren" gar nicht erst an -- die ganze Arbeit am Symbol waere fuer das Portal wirkungslos geblieben, ohne dass irgendwo etwas rot geworden waere. Das ist zum DRITTEN Mal derselbe Fehler an derselben Stelle (app.webmanifest, verwaltung.webmanifest, jetzt portal.webmanifest). Zweimal stand die Begruendung danach im Code -- beim dritten Mal wurde sie trotzdem uebersehen. Ein Kommentar verhindert nichts. Deshalb zusaetzlich eine Pruefung in pruef-struktur.mjs: Jedes Manifest unter /webdesign/ MUSS in der Ausnahmeliste von webdesign-gate.js stehen. Gegengeprobt -- Eintrag entfernt, Pruefung schlaegt an. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -298,6 +298,49 @@ const BEKANNT_TOT = [".content-wurzel", ".code-feld"];
|
||||
: `kein neues totes CSS (${BEKANNT_TOT.length} bekannte Reste stehen bewusst)`);
|
||||
}
|
||||
|
||||
/* ---------- 9. Kommt jedes Manifest auch WIRKLICH an? --------------------
|
||||
|
||||
Ein Manifest kann fehlerfrei im Repo liegen und trotzdem nie beim
|
||||
Browser ankommen -- wenn eine Zugangswand davorsteht und HTML statt
|
||||
JSON zurueckgibt. Dann bietet der Browser "App installieren" gar
|
||||
nicht erst an, und niemand merkt etwas: Die Datei ist ja da.
|
||||
|
||||
Genau das ist DREIMAL passiert (webdesign/app.webmanifest,
|
||||
verwaltung.webmanifest, portal.webmanifest). Zweimal stand die
|
||||
Begruendung danach im Code -- und beim dritten Mal wurde sie trotzdem
|
||||
uebersehen. Ein Kommentar verhindert nichts; eine Pruefung schon.
|
||||
|
||||
Geprueft wird gegen die Ausnahmeliste in webdesign-gate.js: Jedes
|
||||
Manifest unter /webdesign/ MUSS dort stehen. */
|
||||
console.log(`
|
||||
=== Manifeste hinter der Zugangswand ===`);
|
||||
{
|
||||
const tor = join(SERVER, "webdesign-gate.js");
|
||||
const torText = existsSync(tor) ? readFileSync(tor, "utf8") : "";
|
||||
ok(torText.length > 1000, "webdesign-gate.js gelesen");
|
||||
|
||||
const manifeste = [];
|
||||
const suche = (ordner, vorn) => {
|
||||
for (const n of readdirSync(ordner, { withFileTypes: true })) {
|
||||
if (n.name.startsWith(".") || n.name === "node_modules") continue;
|
||||
const rel = vorn ? `${vorn}/${n.name}` : n.name;
|
||||
if (n.isDirectory()) { if (rel === "webdesign") suche(join(ordner, n.name), rel); continue; }
|
||||
if (n.name.endsWith(".webmanifest") || n.name === "manifest.json") manifeste.push(rel);
|
||||
}
|
||||
};
|
||||
suche(REPO, "");
|
||||
|
||||
const hinterWand = manifeste.filter((m) => m.startsWith("webdesign/"));
|
||||
ok(hinterWand.length >= 2, `${hinterWand.length} Manifeste unter /webdesign/ gefunden`);
|
||||
|
||||
const fehlend = hinterWand.filter((m) => !torText.includes(`"/${m}"`));
|
||||
ok(fehlend.length === 0,
|
||||
fehlend.length
|
||||
? `NICHT in der Ausnahmeliste von webdesign-gate.js: ${fehlend.join(", ")} `
|
||||
+ `— der Browser bekaeme HTML statt JSON und boete "App installieren" nicht an`
|
||||
: `alle ${hinterWand.length} stehen in der Ausnahmeliste`);
|
||||
}
|
||||
|
||||
/* ---------- Gegenprobe --------------------------------------------------- */
|
||||
|
||||
console.log(`\n=== Gegenprobe (muss anschlagen) ===`);
|
||||
|
||||
@@ -495,7 +495,30 @@ export function webdesignGate(req, res, next) {
|
||||
drei Verknüpfungen. Keine Kunden-, Projekt- oder Preisdaten. Wer
|
||||
es liest, erfährt, dass es eine Verwaltung GIBT — was die
|
||||
Zugangswand ohnehin verrät. */
|
||||
pfad === "/webdesign/verwaltung.webmanifest"
|
||||
pfad === "/webdesign/verwaltung.webmanifest" ||
|
||||
/* Das Manifest des Kundenportals (05.09.2026). ZUM DRITTEN MAL
|
||||
derselbe Fehler an derselben Stelle -- und diesmal stand die
|
||||
Begründung schon direkt darüber.
|
||||
|
||||
Das Portal bekam im Zuge der neuen App-Symbole ein eigenes
|
||||
Manifest; vorher lief es unter dem der Webdesign-Seite und trug
|
||||
deshalb deren Namen und deren Symbol. Die neue Datei wurde
|
||||
angelegt, eingebunden, ausgeliefert -- und in diese Liste
|
||||
einzutragen vergessen.
|
||||
|
||||
Live gemessen, nicht vermutet: Symbole 200, Manifest 302 auf
|
||||
zugang.html. Der Browser bekam HTML statt JSON und bot "App
|
||||
installieren" gar nicht erst an. Die ganze Arbeit an dem Symbol
|
||||
wäre für das Portal wirkungslos geblieben, ohne dass irgendwo
|
||||
etwas rot geworden wäre.
|
||||
|
||||
Unbedenklich aus demselben Grund wie die beiden darüber: Name,
|
||||
Farben, Symbolpfade. Keine Kunden-, Projekt- oder Preisdaten.
|
||||
|
||||
MERKE: Wer unter /webdesign/ eine Datei anlegt, die der BROWSER
|
||||
selbst holen muss (Manifest, Service Worker, Symbol), muss sie
|
||||
hier eintragen. Sonst liegt sie da und kommt nie an. */
|
||||
pfad === "/webdesign/portal.webmanifest"
|
||||
) {
|
||||
return next();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user