Die Texte lasen sich maschinell, und der Grund war nicht die Kuerze. Alle
fuenf Ueberschriften hatten dieselbe Form: zwei abgehackte Fragmente mit
Punkt dazwischen, fuenfmal hintereinander, und die Fliesstexte machten es
nach. Jetzt wechseln sich Aussage mit Wendung, Frage und Antwort, Paar und
durchlaufender Satz ab. Die Formulierungen kommen aus Noahs Text statt aus
dem Nichts: "Und wechseln? Kannst du vergessen", "Stammdaten, Auftraegen
und Buchhaltung", "kein Ersatz, sondern der Aufbau drumherum".
Das Wort ERP kommt nicht mehr vor, es heisst Branchenprogramm wie bei
Noah. Slide 2 traegt die Enthuellung aus seinem Absatz, dass ein alter
Betrieb nicht nur Erfahrung vererbt. Slide 6 traegt die Marken-Tagline,
ausgezeichnet wie in Post 1: der Marker sitzt auf dem zweiten Handwerker,
nicht auf der ganzen Zeile.
Der Beitrag ist Noahs Konzept, sagt das aber nirgends geradeheraus. Slide
2 stellt fest, dass hinter den gewachsenen Ablaeufen keines steckt, Slide
5 liefert eines. Das Wort faellt genau einmal.
Slide 1 bekommt Randnotizen: Gluehbirne, Zettel, Maulschluessel. Der
Schluessel brauchte zwei Anlaeufe, erst war er ein Knochen, weil glatt()
die Kanten wegrundet. Ein Werkzeug lebt von scharfen Kanten. Aus CEO wird
Gruender.
Slide 4 zeigt statt einer Wunschliste vier Funktionen mit Haken und
Zeichen. Die Zeichen stehen in einer Spalte statt hinter dem Wort, sonst
haetten die unterschiedlich langen Zeilen eine ausgefranste Kante ergeben.
Zwischen Slide 4 und 5 laeuft ein Pfeil ueber die Naht, auf halber
Slide-Hoehe. Umriss gezeichnet, innen mit Schraegstrichen ausgemalt, in
Tinte statt Gelb: Gelb bedeutet hier Verbindung und gehoert der Zeichnung,
der Pfeil weist nur weiter. Dafuer reichen beide Zeichenflaechen jetzt bis
an die Slide-Kanten, Slide 5 beginnt bei 0 statt bei 92.
Dabei kam ein Fehler heraus, der jede kuenftige Slide getroffen haette:
"--vis-left:" + (sl.visLeft || 92)
Die 0 ist falsy, also hat || sie als fehlenden Wert behandelt und den
Vorgabewert eingesetzt. Steht jetzt auf ??, ebenso bei visW und visBottom.
Aufgefallen ist es nur beim Nachmessen, nicht beim Hinsehen.
Der Projektstand kommt mit. Er traegt eigene Textfassungen fuer Slide 3
und 6 sowie die Groesse und Lage der Karte auf Slide 1.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Das Foto bleibt roh, gezeichnet wird drumherum. Der Rahmen ist die
Markenform, dazu ein versetzter Zweitzug und eine schraffierte Kante.
Die drei greifen ineinander statt nebeneinanderher zu laufen: der
versetzte Zug ist die Aussenkante des Schattens, die Schraffur fuellt das
Band dazwischen. Zur Schattenfrage steht ein Hinweis im Code -- Paragraf
5 in rules.md verbietet weichgezeichnete Schatten, und die dort notierte
Ausnahme sagt, eine Linie ist kein Schatten. Eine Schraffur besteht aus
Linien.
Der Helm sitzt wahlweise an der abgeschnittenen Rahmenecke oder auf
Noahs Kopf. Das haengt am Layout-Schalter der Slide, also am vorhandenen
Geruest, und nicht an einem eigenen Sonderschalter. In der Ecken-Lage
kippt er nach rechts, damit die Oeffnung ueber der Ecke liegt: nach links
gekippt sah er aus, als falle er herunter.
Drei Anlaeufe stecken im Helm, die Zwischenschritte stehen als Kommentar
dabei. Erst war die Kuppel flach und die Krempe eine geschlossene Scheibe
darunter, zusammen eine Schirmmuetze. Dann kam Schraffur dazu, und die
Waagerechten kreuzten die Grate zu einem Gitter, also einem Korb. Was
traegt, sind viele Stuetzpunkte, ein First, zwei Nebenrippen und eine
Krempe mit Dicke.
Drei Dinge waren technisch noetig:
Die Zeichenebene ist rechts breiter geworden, von 114,8 auf 128,4
Prozent. In der Ecken-Lage ragt der Helm ueber den Rahmen hinaus und
waere sonst beim Export abgeschnitten worden.
renderPage erneuerte bisher nur den Textblock. Ein Layoutwechsel haette
die Zeichnung nicht angefasst und der Schalter waere wirkungslos
geblieben. Jetzt wird die Visualisierung mitgezogen; der Zufallskeim ist
gesetzt, es kommt derselbe Strich heraus.
VIS-Funktionen bekommen den Slide-Index, sonst kann eine Zeichnung ihren
eigenen Layout-Zustand nicht lesen.
Im Foto ist der Eckenradius von 38 auf 8 runter und der Navy-Rand
entfallen. Mit dem gezeichneten Rahmen waeren das sonst drei Rahmen
uebereinander gewesen. Das weicht vom Nachbau der Website-Karte ab und
ist bewusst so.
Der Projektstand kommt mit: Slide 1 traegt jetzt manuelle Anpassungen aus
dem Generator. Der Fliesstext ist geleert, Ueberschrift und Karte sind
verschoben, das Foto steht dadurch allein.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Gemessen statt geschaetzt: der Inhaltsblock endet bei y 415 bis 460, unten
bleiben 92 px Rand, also rund 800 px freie Hoehe. Die Visualisierungen waren
115 bis 393 hoch, der Rest war tote Flaeche. Jetzt fuellen alle sechs das
Format mit 70 bis 133 px Luft zum Text. Slide 6 bleibt bewusst kleiner und
steht mittig: ein Formularfeld auf 700 px aufgeblasen sieht aufgeblasen aus.
Slide 2 hat eine echte Schiene mit gedrehter Beschriftung statt zweier
unerklaerlicher Balken. Der Riegel aus der alten Fassung war noch im Markup,
sein CSS aber schon weg. Die Schritte heissen jetzt "abtippen, noch mal
abtippen, und noch mal" statt dreimal "so wie immer".
Der gelbe Akzent auf "Chat" ist raus. Die vier Bausteine sind gleichwertig,
und Gelb bedeutet auf den anderen Slides etwas anderes.
Im Stand lagen Probier-Verschiebungen, die Noahs Karte auf 700 px vergroessert
und 250 px nach unten geschoben hatten. Deshalb war sie unten abgeschnitten,
obwohl die Vorgabe im Code stimmte.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Vier Seiten: Rahmen und Rhythmus, der Plan vom 12.08. bis 14.09., Bildsprache,
taegliche Interaktion und Auswertung. Layout, Schrift und Farben wie beim
Webinar-Vergleich.
Der Kanal ist in dieser Phase kein Reichweiten-, sondern ein
Darstellungskanal: fuer Leute, die ohnehin auf uns stossen. Das steht in der
Praemisse und traegt die Entscheidungen, etwa warum Carousels vor Reels
kommen, obwohl Reels unter 50.000 Followern mehr Reichweite bringen.
15 Termine, drei pro Woche um 12:00. Sechs Sorten im Wechsel, damit sich das
Konto nicht wie ein Prospekt liest: acht Funktionen, zwei zu Menschen und
Betrieb, zwei Einwaende, je einmal Haltung, Wissen ohne Produkt und Aufruf.
Das erste Reel am 09.09. ist eine Bildschirmaufnahme, dafuer braucht es keine
Kamera.
Gebaut wird mit "python3 redaktionsplan/bauen.py". Schrift und Logo kommen aus
den Assets dieses Repos, nicht aus einem Nachbarordner, damit sich das PDF
ueberall bauen laesst. Die erzeugte HTML ist ignoriert, sie entsteht neu.
Zahlen zu Ausspielung und Posting-Zeiten sind belegt und als Groessenordnung
gekennzeichnet, nicht als Zusage. Sie stammen aus Auswertungen Dritter, nicht
von Meta.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sechs Slides von der Baustelle bis zur Warteliste. Statt Screenshots traegt
jede Slide eine Visualisierung des Stichworts aus ihrem Text: drei Schritte
fest auf einer Schiene, der schwere Bestand mit dem durchgestrichenen Pfeil,
vier lose Kacheln deren Verbindungen ins Leere laufen, das ERP als Sechseck
mit den Neuen daran, ein Feld mit Knopf.
Alles HTML, kein Bildmaterial ausser Noahs Karte. Damit bleibt es beim
3-fachen Export so scharf wie die Schrift, und jede Visualisierung laesst
sich im Canvas verschieben und in der Breite aendern wie jedes andere
Element. Das Kreuz auf der Wechsel-Slide liegt auf dem Pfeil, nicht auf dem
Ziel: der Wechsel scheitert, nicht das neue System.
Die Karte ist der aktive Zustand von der Ueber-uns-Seite, Werte aus
TeamCards.tsx. Ohne die weichgezeichnete Ellipse des Originals: die haengt an
backdrop-filter, und was der Export daraus macht, ist nicht verlaesslich.
Die Texte sind bewusst NICHT die von der Website. Dort stehen ganze Absaetze,
auf einer Slide muss eine Zeile im Vorbeiscrollen sitzen; der volle Text
kommt unter den Beitrag. Aus den gemessenen Breiten folgt: bei 74 px und
-0,03em passen rund 26 Zeichen in eine Zeile. Keine hier ist laenger als 22.
Der Stand von post2 ist neu geschrieben, er zeigte noch auf die Slides von
Post 1.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
post2 uebernimmt den Stand von post1, damit die Kopie auch Look, Ausrichtung
und Variante teilt und nicht bei den Standardwerten anfaengt.
state/post1-vorher.json kommt mit herein. Die Datei schreibt kein Code, sie
ist von Hand angelegt worden und sieht nach einem Rueckfallpunkt aus.
Mitgenommen statt geloescht, weil sie sonst beim naechsten Klonen fehlt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Die Auswahl eines Elements war nur eine Zeile im linken Bedienfeld, und die
Bedienung dazu lag zwischen Slide-Einstellungen verstreut. Jetzt ist die
Oberflaeche geteilt: links die Slide und alles Allgemeine, rechts genau das
angeklickte Element.
Im Element-Feld stehen Text, Groesse, X und Y, die Ebene, das Ausrichten an
der Slide (links, mittig, rechts sowie oben, mittig, unten mit 92 px Rand),
das Angleichen ueber alle Slides und das Loeschen. Der Text schreibt in
dieselbe Ueberschreibung, die auch das Inhalt-Feld links fuellt -- man
beschriftet also die Ueberschrift, indem man sie anklickt.
Ausgerichtet wird gemessen statt gerechnet: die Mockups stehen
perspektivisch im Raum und das Blatt ist gepolstert.
Zwei Fehler, die dabei aufgefallen sind:
Das Feld faehrt beim Anklicken ein und macht die Buehne schmaler -- damit
aendert sich der Massstab mitten im Klick. Der Zug rechnete aber mit einem
frisch gerechneten autoFit und verschob das Element deshalb um ein Drittel
zu weit. Genommen wird jetzt der Massstab, mit dem tatsaechlich gezeichnet
ist.
Und ein fehlendes Bild riss den ganzen Export mit ("1 Bild(er) nicht
geladen"), ohne zu sagen welches. Verweise auf Dateien, die es nicht mehr
gibt, werden beim Start aufgeloest und benannt; eine Slide baut sich auch
ohne sie auf.
Geprueft: 13 Faelle fuer das Element-Feld, dazu der volle Exportlauf und die
Maus-Bedienung.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Beide Projekte werden nicht mehr gebraucht. Weg sind post1-alt.html,
index.html und state/post2.json, dazu der lokale state/post1-alt.json.
Mitgezogen, damit nichts ins Leere zeigt: die Projektumschaltung im
Bedienfeld samt ihrer CSS-Regeln, die Projekttabelle und die Liste der
Stand-Dateien in der README, die Startzeile und der Aufbau in rules.md.
Achtung: Ohne index.html liefert http://127.0.0.1:4321/ nur noch die
Verzeichnisliste. Der Einstieg ist /post1.html.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Slides 2 und 3 getauscht, Tag-Eintraege geraeumt. Betrifft den laufenden Stand
und den gemerkten Rueckfallpunkt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Ueberschrift oben, Mockup gross gezogen, Text von Slide 2 wieder auf
Slide 2. Der Merkzettel steht auf demselben Stand.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Stand mit aktivem Raster auf allen Slides und den gezogenen Positionen.
Das neue Titel-Mockup ist eingepasst. Der Merkzettel steht auf demselben
Stand, ueber "Stand merken" gesetzt und gegengelesen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Die Uebernahme von 3c0b22a wird zurueckgenommen: state/post1.json ist wieder
die Fassung vom Laptop (v3, mit dem neuen Titel-Mockup). Die Positionen von
hier fallen damit weg.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Beide Seiten hatten state/post1.json geaendert. Der Code, das neue
Titel-Mockup und die umbenannten Tags kommen vom Laptop; der Projektstand
ist der von hier (Rahmen "rund", Positionen von 23:30). Bewusst so
entschieden -- die Positionsarbeit vom Laptop faellt damit weg.
Der Stand steht noch auf v2. Beim naechsten Laden rechnet ihn das Skript auf
v3 hoch und entfernt dabei den szene-Eintrag, weil das Titel-Mockup ein
anderes Bild mit anderem Format geworden ist.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Elemente auf mehreren Slides verschoben, Bildrahmen von "stapel" auf "rund"
gestellt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Wert fuer das Titel-Geraet ist raus, er gehoerte zum abgeloesten Mockup.
Betrifft den laufenden Stand und den gemerkten Rueckfallpunkt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
post1 traegt jetzt Stand 2, die Tags stehen auf allen Feature-Slides auf
-42/-68. post1-merk ist der von Hand gemerkte Rueckfallpunkt, post2 kommt neu
dazu.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Stand hing am localStorage und damit an einem Rechner. Wer das Projekt
woanders zog, sah einen anderen Stand.
Jede Aenderung geht jetzt zusaetzlich in state/<projekt>.json, gebuendelt nach
600 ms. Beim Laden gewinnt die Datei, der localStorage ist nur noch der
Rueckfall fuer den Fall, dass der Server nicht laeuft. Gibt es die Datei noch
nicht, wird der vorhandene Browser-Stand einmalig hineingeschrieben. Ein
Reload verschluckt nichts: was im Timer haengt, geht per sendBeacon raus.
Der Server nimmt den Stand unter POST /state entgegen und loescht ihn unter
DELETE /state. Der Projektname wird gegen ein enges Muster geprueft und der
Zielpfad zusaetzlich gegen state/ gegengerechnet. Geschrieben wird erst in
eine Nebendatei und dann umbenannt, eingerueckt und mit sortierten Schluesseln,
damit git einen lesbaren Unterschied zeigt.
state/*.json gehoeren ab jetzt in jeden Commit, sonst sieht die andere
Maschine die Aenderung nicht.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>