Auf dem iPhone trug Team Dogi das Zeichen der Agentur
DIE ZWEITE HAELFTE EINER ENTSCHEIDUNG VOM 10.09.2026
Der Block, der /workspace/app.webmanifest auf crew.webmanifest
umbiegt, begruendet sich selbst so: "Sonst hiesse die App auf dem
Startbildschirm eines Modis 'Creator Workspace' und traege das
Zeichen mit der Chili -- die zu Spicy Media gehoert, nicht zu
ihnen."
Genau das passierte trotzdem -- auf dem iPhone. Android nimmt das
Symbol aus dem Manifest (crew-192.png, richtig). iOS Safari nimmt es
NICHT von dort, sondern aus <link rel="apple-touch-icon">, und diese
Zeile steht in jeder HTML-Datei auf workspace-180.png.
Gemessen: crew-180.png und workspace-180.png sind verschiedene
Dateien (30 899 gegen 34 850 Byte). Ein Modi mit iPhone bekam die
Chili auf den Startbildschirm, derselbe Modi mit Android das richtige
Zeichen. So etwas faellt beim Ansehen nie auf -- man braeuchte beide
Geraete nebeneinander.
Behoben mit derselben Loesung wie beim Manifest: umbiegen an EINER
Stelle, statt in 37 Dateien eine zweite Zeile zu setzen. Wer eine
Seite anlegt, schreibt weiterhin workspace-*.png und bekommt auf
crew. trotzdem das richtige Symbol.
ABGELEITET, NICHT AUFGEZAEHLT: Umgebogen wird nur, wo es die
Crew-Fassung wirklich gibt -- gemessen sind das 32, 180, 192, 512 und
die beiden maskable. workspace-1024.png (TikTok) hat keine und bleibt
unangetastet; eine kuenftige Groesse kommt von selbst dazu, sobald
jemand die Datei anlegt.
DREI BEFUNDE VON pruef-struktur, alle aus meiner eigenen Arbeit
- material.html und willkommen.html hatten weder theme-color noch
apple-touch-icon. Auf dem iPhone waere das Startbildschirm-Symbol
ein Bildschirmfoto der Seite gewesen, auf Android die Leiste weiss.
Beide binden jetzt app.webmanifest statt crew.webmanifest direkt --
die Adresse biegt es um, und zwei Stellen laufen sonst auseinander.
- 20 tote CSS-Regeln (.b-analyse*) in entwicklung.css. Am 22.09.
wurde der Block "Resuemee je Frage" aus dem Skript entfernt, die
Gestaltung blieb stehen. Das ist nicht nur Ballast auf jeder Seite,
sondern eine Falle: Wer spaeter .b-analyse im CSS findet, haelt den
Block fuer lebendig. Vor dem Entfernen geprueft, dass im Bereich
keine fremde Klasse steht.
EIN RUECKSTAND VOM 21.09. NACHGETRAGEN
pruef-crew-adresse erwartete vier Rollenkacheln auf der Wand; seit
die linke Hand dazukam (Commit 21793b6) sind es fuenf. Die Pruefung
war seitdem rot an einer Stelle, an der NICHTS kaputt war -- und die
Zeile daneben ("so viele, wie es Rollen auf der Wand gibt") war die
ganze Zeit gruen und hat den Fehler damit verdeckt.
Gemessen: pruef-crew-adresse 148/0 (war 147/1, neu: vier Aussagen zum
Startbildschirm-Symbol samt Gegenprobe, dass die Agenturadresse
unveraendert bleibt und Groessen ohne Crew-Fassung nicht umgebogen
werden), pruef-struktur 35/0 (war 32/3), pruef-css-klassen 30/0,
pruef-befinden 116/0, pruef-willkommen 67/0, pruef-installieren 14/0,
pruef-textform 50/0, pruef-zwischenspeicher 27/0.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -354,6 +354,50 @@ ok(Array.isArray(mw.icons) && mw.icons.length > 0
|
||||
ok(mc.start_url === "/workspace/start.html" && mc.scope === "/workspace/",
|
||||
"crew.: Bereich und Startseite stimmen");
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
UND DAS SYMBOL AUF DEM IPHONE (22.09.2026)
|
||||
---------------------------------------------------------------------
|
||||
Die Zeilen darueber pruefen das MANIFEST -- daraus nimmt Android sein
|
||||
Symbol. iOS Safari nimmt es von dort NICHT, sondern aus
|
||||
`<link rel="apple-touch-icon">`, und die Zeile steht in jeder HTML
|
||||
auf workspace-180.png.
|
||||
|
||||
Bis zum 22.09.2026 war das Manifest deshalb richtig und der
|
||||
Startbildschirm eines Modis trotzdem falsch -- aber nur auf dem
|
||||
iPhone. Genau die Sorte Fehler, die beim Ansehen nie auffaellt: Man
|
||||
braeuchte beide Geraete nebeneinander.
|
||||
|
||||
Gemessen wird der AUSGELIEFERTE INHALT, nicht der Pfad. Eine
|
||||
Umleitung, die auf eine Datei zeigt, die es nicht gibt, waere sonst
|
||||
gruen. */
|
||||
console.log("\n--- Das Symbol auf dem Startbildschirm ---");
|
||||
{
|
||||
const pfad = "/assets/img/app-symbole/workspace-180.png";
|
||||
const aufCrew = await hole(pfad, { host: CREW });
|
||||
const aufWs = await hole(pfad, { host: WS });
|
||||
const echtCrew = await hole("/assets/img/app-symbole/crew-180.png", { host: CREW });
|
||||
|
||||
/* DIE ZAHL GEHOERT IN DIE BEDINGUNG: Waeren beide Antworten leer,
|
||||
waeren sie auch gleich -- und der Vergleich unten trivial gruen. */
|
||||
ok(aufCrew.status === 200 && aufWs.status === 200 && echtCrew.status === 200
|
||||
&& aufCrew.text.length > 1000,
|
||||
`alle drei Symbole werden ausgeliefert (${aufCrew.text.length} Byte)`);
|
||||
ok(aufCrew.text === echtCrew.text,
|
||||
"crew.: hinter apple-touch-icon steckt wirklich das Crew-Zeichen");
|
||||
/* GEGENPROBE. Ohne sie wuesste niemand, ob die Umleitung ueberhaupt
|
||||
etwas tut -- waeren beide Dateien identisch, waere die Zeile
|
||||
darueber auch ohne jede Umleitung gruen. */
|
||||
ok(aufCrew.text !== aufWs.text,
|
||||
"workspace.: dort unveraendert das Agenturzeichen — die Umleitung greift also");
|
||||
|
||||
/* UND SIE GREIFT NUR, WO ES EINE CREW-FASSUNG GIBT. workspace-1024.png
|
||||
ist das TikTok-Symbol und hat keine; wuerde es mit umgebogen,
|
||||
liefe die Anfrage auf eine Datei, die es nicht gibt. */
|
||||
const tiktok = await hole("/assets/img/app-symbole/workspace-1024.png", { host: CREW });
|
||||
ok(tiktok.status === 200 && tiktok.text.length > 1000,
|
||||
`und Groessen ohne Crew-Fassung bleiben unangetastet (1024: ${tiktok.status})`);
|
||||
}
|
||||
|
||||
/* Die Symboldateien muessen es auch wirklich geben -- ein Manifest, das
|
||||
auf nichts zeigt, faellt sonst erst auf dem Startbildschirm auf. */
|
||||
let symboleDa = 0;
|
||||
@@ -408,20 +452,37 @@ ok(!/Creator/i.test(wandCrew.text), "crew.: und vom Creator Workspace auch nicht
|
||||
"und behauptet nicht mehr, das hier sei nur zum Arbeiten");
|
||||
}
|
||||
|
||||
/* DIE KACHELREIHE HAT SEIT DEM 11.09.2026 VIER EINTRAEGE.
|
||||
/* DIE KACHELREIHE HAT SEIT DEM 21.09.2026 FUENF EINTRAEGE.
|
||||
|
||||
Die Geschichte dieser Zeile ist lehrreich und steht deshalb hier:
|
||||
Erst gab es keine Kachelreihe (eine Sorte Zugang, eine Reihe waere
|
||||
eine Huerde gewesen). Dann drei ("3 rollen. dogfather. rechte hand
|
||||
und modis"). Jetzt vier, weil der Treff hier eingezogen ist.
|
||||
und modis"). Dann vier, weil der Treff hier eingezogen ist. Jetzt
|
||||
fuenf -- die linke Hand ist dazugekommen.
|
||||
|
||||
GEPRUEFT WIRD NICHT DIE ZAHL, SONDERN WELCHE. Eine Zahl war schon
|
||||
zweimal rot, ohne dass etwas kaputt war. Die NAMEN dagegen sagen
|
||||
etwas: Steht dort eines Tages "manager", ist das ein Befund und kein
|
||||
Umbau. */
|
||||
Umbau.
|
||||
|
||||
NACHGETRAGEN AM 22.09.2026, und der Rueckstand gehoert hierher:
|
||||
Die Karte "Linke Hand" kam am 21.09. auf die Wand (Commit 21793b6),
|
||||
diese Erwartung blieb bei vier. Die Pruefung war seitdem rot -- an
|
||||
einer Stelle, an der NICHTS kaputt war. Eine rote Pruefung, die rot
|
||||
bleibt, gewoehnt einem das Hinsehen ab; die Zeile darunter ("so
|
||||
viele, wie es Rollen auf der Wand gibt") war die ganze Zeit gruen
|
||||
und hat den Fehler damit sogar verdeckt.
|
||||
|
||||
Warum die Liste trotzdem stehen bleibt und nicht abgeleitet wird:
|
||||
Die REIHENFOLGE ist eine Entscheidung (DogFather, rechte Hand, linke
|
||||
Hand, Modis, Gaeste) und steht sonst nirgends. Abzuleiten hiesse nur,
|
||||
die Liste woanders hinzuschreiben. Die Zahl daneben ist die
|
||||
abgeleitete Haelfte -- zwei Fragen, zwei Zeilen. */
|
||||
const rollenAufWand = [...wandCrew.text.matchAll(/data-rolle="([a-z]+)"/g)].map((m) => m[1]);
|
||||
ok(JSON.stringify(rollenAufWand) === JSON.stringify(["admin", "hand", "modi", "gast"]),
|
||||
`crew.: die vier Kacheln in dieser Reihenfolge (${rollenAufWand.join(", ")})`);
|
||||
const ERWARTETE_REIHE = ["admin", "hand", "linke", "modi", "gast"];
|
||||
ok(JSON.stringify(rollenAufWand) === JSON.stringify(ERWARTETE_REIHE),
|
||||
`crew.: die ${ERWARTETE_REIHE.length} Kacheln in dieser Reihenfolge `
|
||||
+ `(${rollenAufWand.join(", ")})`);
|
||||
const kachelnCrew = (wandCrew.text.match(/class="rolle"/g) || []).length;
|
||||
const kachelnWs = (wandWs.text.match(/class="rolle"/g) || []).length;
|
||||
ok(kachelnCrew === rollenAufWand.length,
|
||||
|
||||
Reference in New Issue
Block a user