main
12
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
07deacde41 |
Post 9: Varianten überarbeitet, Variante 6 und 7 nach Noahs Arbeitsheft
- Variante 2/3: Webinar statt HiveGrid, Noahs Satz zum Kopf des Chefs, vorher und heute am Beispiel „Angebot nachfassen“ als Schema - Variante 4/5: drei verschiedene Grafiken, Wabenanimation gelb dann rot, Titel mit Wabenwelle animiert - Variante 6/7: Aussagen, Zeichnungen und Schriften aus „Jede Frage lief über meinen Tisch“, Titel dunkel, Pfeile werden gezeichnet (Test) - post9-hub.mjs legt alle Varianten als Bilder und Videos ins Marketing-Hub - Menüs aller Posts und Übersicht mit Variante 6 und 7 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|
|
5b768537a2 |
Post 9: Format 1:1 für die Anzeige und vier neue Varianten
- Format-Schalter 4:5 / 1:1 in Post 9, Stand auf 1:1 (Meta nimmt ein Carousel mit Video als Anzeige nur quadratisch), Video in 1:1 - animation.mjs baut das Format der Seite, Datei mit -1x1 - Variante 2/3: Kundengeschichte nach dem weclapp-Karussell, hell und dunkel - Variante 4/5: Zahlen-Karussell nach HERO Insights mit KfW- und Bitkom-Zahlen, Noah als Teaser, hell und dunkel - post9-varianten.html zeigt alle Varianten untereinander - Menüs und Übersicht um die Varianten ergänzt, Regel zu 1:1 in rules.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|
|
76ac3e4cce |
Pruefung der Texte: weniger Ausnahmen, Geviertstriche, Navigation bis Post 9
ae/oe/ue gilt hinter einem Vokal nicht mehr als fehlender Umlaut, Mailadressen und Domains sind ausgenommen, Geviertstriche werden gemeldet. Das Menue nennt Post 8 und Post 9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|
|
4d227a01c9 |
Post 7: Form Builder, mit dem Bewegtbild als Titelelement
Anders als die Beitraege davor: das Bewegtbild ist das ERSTE Element im
Carousel und kein Anhang am Ende. Ein Form Builder ist ein Werkzeug, das
man bedient -- was er kann, sieht man am Bauen und nicht an einem
Standbild davon. Die drei Slides erklaeren danach, was das Gebaute
leistet, und tragen deshalb alle Ueberschrift und Fliesstext.
animForm Das Formular baust du selbst. 6 s, der Editor beim Bauen
1 Frag genau das, was du wissen musst. die fuenf Fragen mit ihren Typen
2 Fragen, die nur kommen, wenn sie
noetig sind. das bedingte Feld
3 Aus der Antwort wird ein Lead. das Hinweisfeld mit Pipeline
Zwei Folgen davon, die man wissen muss: die Kachel im Profilraster ist
jetzt das erste Bild der Animation und nicht mehr eine eigens dafuer
gebaute Slide -- Bild 0 zeigt deshalb schon ein Formular mit zwei Fragen
und keine leere Flaeche. Und die Ueberschrift des Bewegtbilds ist die
Ueberschrift des Beitrags.
QUELLE
S02EinfacherFragenEditor.tsx aus dem Pitch-Paket, derselbe Bildschirm wie
assets/screens/form-builder.png. Die fuenf Fragen, ihre Feldtypen, die
Marke "Bedingt sichtbar" und der Satz im Hinweisfeld stehen woertlich
dort. Die Farben des Hinweisfelds sind ueber die Token-Kette aufgeloest
(surface-feedback-subtle-information -> feedback-information-100 ->
ocean-100 = #E1F4FD), nicht aus dem Bild geschaetzt. Elf zusaetzliche
Zeichen aus demselben Phosphor-bold-Satz.
ABWEICHUNGEN, ALLE DOKUMENTIERT
Die Quelle schreibt {general ? "Website-Anfragen" : "Vertrieb SHK"} --
hier steht Vertrieb SHK, weil der Beitrag durchgehend das Gewerk zeigt.
"Sanitaer" und "Klima / Lueftung" stehen mit Umlaut. "Deaktivieren" ist
weg, weil ein Ausschalter nichts zur Aussage beitraegt und dem
Pipeline-Satz den Platz nahm.
DREI SACHEN, DIE ERST AM GERENDERTEN BLATT AUFFIELEN
Die Karte wuchs und schrumpfte zugleich: der Kasten wurde mit dem Inhalt
hoeher, und bei fester Breite skaliert die Zeichnung dabei kleiner. Die
Animation hat jetzt eine feste Kastenhoehe.
Der Pipeline-Satz lief unter den Knopf und endete bei "Vertrieb S".
Jetzt zweizeilig statt gekuerzt -- der Pipelinename ist die halbe
Aussage des Felds.
Eine Ueberschrift mass 936 px und lief 45 px ueber die Schutzzone. Am
gerenderten Bild nachgemessen, nicht geschaetzt; die kuerzere Fassung
liegt bei 846.
Erreichbar ueber die Toolbar in allen Projekten und in uebersicht.html.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U7RZ6ZpLD8Dp84Rtt4KHfv
|
||
|
|
344645cb77 |
Umlaute: der Export prueft sie, statt sich aufs Erinnern zu verlassen
Auf einer Slide stand "Sanitaer" und "Klima / Lueftung". Beides kam woertlich aus dem Klickdummy, wo es schludrig eingetippt ist, und beides las sich im fertigen Beitrag wie ein Fehler -- weil es einer ist. Gefunden hat es niemand beim Bauen, sondern jemand, der auf den fertigen Post geschaut hat. Ein reines Muster genuegt als Pruefung nicht: Deutsch schreibt "neue", "Dauer" und "Michael" voellig zu Recht mit ae/oe/ue. Nachgezaehlt ueber den gezeichneten Text aller sieben Projekte sind es aber nur acht solche Woerter, alle davon richtig oder gewollt (die Kanal-Handles). Also Muster plus kurze Ausnahmeliste -- null Fehlalarme, "Sanitaer" faellt trotzdem auf. Bei ss ist es umgekehrt: 15 Treffer im gezeichneten Text, alle richtig (dass, Schluss, Netzanschluss). Deshalb dort eine Liste der wenigen Woerter, die ein scharfes s brauchen, statt eines Musters. Geprueft wird an zwei Stellen, weil es zwei Wege zum fertigen Bild gibt: renderSlide() bricht ab, bevor ein PNG entsteht animation.mjs an 24 Stellen ueber den Ablauf Der zweite Punkt war ein eigener Fehler: der erste Anlauf prueft nur den Anfangszustand und fand nichts, weil die falschen Woerter dort erst ab t = 0,4 erscheinen. Der Text einer Animation aendert sich mit der Zeit, die Pruefung muss es auch. Beide Tore sind mit absichtlich wieder eingebautem "Sanitaer" scheitern gesehen worden. Eine Pruefung, die man nie hat scheitern sehen, ist keine -- der erste Test lief durch, weil mein Testskript htmlToImage direkt aufruft und renderSlide dabei umgeht. Regel und Begruendung stehen in rules.md 4, die Falle in 8. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7RZ6ZpLD8Dp84Rtt4KHfv |
||
|
|
77734b6da2 |
Server: Assets werden nachgefragt statt jedes Mal neu geladen
Auf allem stand no-store -- im Server und noch einmal in preloadAssets(). Der Browser durfte also nichts behalten, und jeder Reload lud die vollen Assets neu: 3 MB Screenshots, 3,3 MB Mockups, Schriften, Bibliotheken. Am schlimmsten in uebersicht.html. Die laedt die sechs Projekte als iframes, und weil keiner etwas behalten durfte, holte sich jeder iframe dieselben Dateien noch einmal: 38,1 MB in 435 Anfragen. uebersicht.html erster Aufruf 38,1 MB -> 2,2 MB uebersicht.html Reload 32,8 MB -> 1,9 MB post6.html Reload 5,4 MB -> 0,3 MB Die Absicht hinter no-store war richtig: ein Bild, das unter demselben Namen ausgetauscht wird, muss sofort ankommen. no-cache leistet das billiger -- der Browser behaelt seine Kopie, fragt aber vor jeder Benutzung nach. Nachgeprueft: unveraendert antwortet der Server mit 304 und 0 Bytes, nach einem touch mit 200 und der vollen Datei. Seite, Stand und Auskuenfte (/bilder, /state) bleiben bei no-store. Die sind klein und duerfen nie aus einer Kopie kommen. Die eine Zeile stand in allen sieben Projektdateien. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7RZ6ZpLD8Dp84Rtt4KHfv |
||
|
|
7fb1c3dfcb |
Vorschau: der Abspielen-Knopf tat beim ersten Klick nichts
animAbspielen rechnete performance.now() - ANIM_T[i] * dauer, damit die Vorschau dort weiterlaeuft, wo der Regler steht. ANIM_T[i] ist aber undefined, solange der Regler nie bewegt wurde: daraus wird NaN, der Fortschritt wird NaN, und animT() liefert wegen seines eigenen "|| 0" brav wieder 0. Die Vorschau stand still, ohne dass in der Konsole etwas auftauchte. Bemerkt wurde es nicht, weil jede Pruefung vorher animSetzen() aufgerufen hatte, um irgendetwas zu messen -- und damit genau den Zustand herstellte, in dem es funktioniert. Ein Pruefskript, das den Anfangszustand anfasst, prueft ihn nicht mehr. animSetzen weist NaN jetzt zusaetzlich mit Number.isFinite ab, damit so ein Wert gar nicht erst in den Stand kommt. In allen sechs Projekten nachgezogen. Der Export war davon nicht betroffen; der Weg ueber POST /anim ist noch einmal vom Knopf bis zur fertigen Datei durchgefahren worden. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
82913d78b8 |
Animation: die Leiste laesst sich zuklappen
Ein Klick auf den Kopf klappt sie zu, dann bleiben 40 px und der Canvas hat den Platz. Sie ist dafuer ein <details> mit dem Kopf als <summary> -- damit ist die ganze Zeile die Trefferflaeche und die Tastaturbedienung kommt von selbst, statt dass ein eigener Knopf eine zweite Flaeche fuer dieselbe Sache aufmacht. Ob sie offen ist, merkt sich der Browser je Projekt im localStorage und nicht der Projektstand: das ist eine Vorliebe und keine Gestaltung, in state/<projekt>.json wuerde sie bei jedem einen Diff machen. In allen sechs Projekten nachgezogen. Im Streifenmodus faellt sie weiterhin ganz weg, die Uebersicht zeigt alle sieben Rahmen unveraendert, und der Bildexport laeuft wie vorher. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
c7c05a85cc |
Animation: eigener Bereich unter dem Canvas, getrennt vom Bildexport
Jedes Projekt hat jetzt unter dem Canvas einen Bereich "Animation", im selben Fenster. Er zeigt jede Animation als echtes Blatt in Vorschau, mit Zeitregler, Abspielen und "MP4 exportieren". Eine Animation ist keine Slide. Sie steht in ANIMS und nicht in SLIDES, liegt also nicht im Streifen, taucht in der Slide-Auswahl nicht auf und wird vom Bildexport nicht angefasst. Im Carousel ist sie ein eigenes Element, und ob sie mitkommt, entscheidet sich beim Posten. Ein erster Anlauf machte sie zur sechsten Slide; damit war sie in der Zaehlung und im ZIP mit drin. Der Export laeuft ueber den neuen Endpunkt POST /anim in serve.py. Er startet animation.mjs in einem eigenen Faden, die Seite fragt den Stand ueber GET /anim?id= ab und zeigt Fortschritt und Pfad. Ein Browser kann kein MP4 schreiben, und eine offene Anfrage ueber zwei Minuten geht nicht -- zumal sich animation.mjs waehrenddessen selbst Seiten von diesem Server holt. Aufgenommen wird im neuen Modus ?nur=anim&k=<key>: dort zeigt die Seite allein das Blatt der Animation, in 1080 x 1350 an 0,0. Damit entfaellt jede Ausschnittsrechnung und mit ihr die Falle, dass ein zu schmales Fenster ein leeres Bild liefert. Als erstes Beispiel post6-animChat, fuenf Sekunden: die Antwort wird Zeichen fuer Zeichen getippt, abgeschickt, waechst als Blase in den Verlauf, die Aufgabenkarte klappt auf, die Systemzeile bestaetigt, alles blendet zurueck auf den Anfang. Getippt wird VERLAUF[3].text, also die Nachricht, die im Werkzeug an dieser Stelle ohnehin folgt. H.264 High, yuv420p, 1080 x 1350, 30 fps, stumme AAC-Spur, +faststart: das nimmt Instagram fuer ein animiertes Element im Carousel an. GIF nicht, das landet als Standbild. Ein Video im Carousel wird auch kein Reel, das passiert nur bei einem einzeln geposteten Video. Nebenbei: - post4, post5 und post6 trugen im Panel noch den Kopf ihrer Vorlage. - video/README.md und video/bauen.mjs behaupteten, ffmpeg sei hier nicht installiert. Stimmt seit 9.0.1 nicht mehr; die Bildsequenz bleibt dort trotzdem, mit Begruendung. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
7723e5bf5a |
Post 6: der Team-Chat, aus der Nachricht wird die Aufgabe
Nummer 5 im Redaktionsplan, erscheint Mi 26.08. Carousel, vier Slides, Theme modern, Variante hell, Punktgrund. DER BEITRAG 1 Bueero und Baustelle, endlich im selben Chat. Liste und Verlauf 2 Ein Kanal pro Projekt. die Chatliste gross 3 Foto rein, Aufgabe raus. Fotos, Aufgabe, Bestaetigung 4 Nicht nur Text. das Menue hinterm Plus Slide 3 ist der Kern und keine Konstruktion: im Werkzeug folgen die drei Nachrichten genau so aufeinander. Tobias schickt die Baustellenfotos, darauf eine Nachricht mit angehaengter Aufgabe, darauf die Systemzeile "Aufgabe Materialliste pruefen im Projekt erstellt". Die letzte Zeile macht den Unterschied -- die Aufgabe liegt danach im Projekt, nicht nur im Verlauf. Das ist woertlich der Auftrag des Redaktionsplans. Vier Slides statt fuenf. Der fuenfte Punkt waere DSGVO und deutsche Server gewesen, und dafuer gibt es keinen Bildschirm. Eine Behauptung ohne Bild gehoert in die Bildunterschrift, dort steht sie woertlich wie auf der Website. WOHER ES KOMMT Alles aus components/general/GeneralTeamChatPage.tsx des Pitch-Pakets: die acht Kanaele aus CHATS, der Verlauf aus INITIAL_MESSAGES, der Aufbau einer Zeile und einer Blase aus der Quelle selbst, die Filterzeile aus dem Typ ChatFilter, das Plus-Menue aus Composer. Symbole aus @subframe/core, Farben aus ui/theme.css. Vom Chat gibt es nur eine Fassung, unter /allgemein/team-chat -- anders als bei der Pipeline mit ihren vier eigenen SHK-Bildschirmen. Die Inhalte darin sind trotzdem aus dem Gewerk: Waermepumpe Mueller, Montagetermin, Baustellenfotos. WO BEWUSST ABGEWICHEN WIRD - Slide 1 zeigt drei von sechs Nachrichten, Slide 2 fuenf von acht Kanaelen. Ein Chat und eine Liste scrollen beide. Slide 2 behaelt alle drei Sorten: Projektkanal, Direktnachricht, Gruppe. - Die Bildergalerie ist eine Anhangkarte, kein Bild. Im Werkzeug laedt GalleryPreview zwei Fotos von Unsplash. Fremde Fotos in einen Beitrag zu setzen, der von der eigenen Baustelle spricht, waere eine Behauptung ueber Material, das wir nicht haben. DREI FALLEN Die Listenzeile hat drei Zeilen, nicht zwei. Der erste Nachbau schob Nadel und Ungelesen-Punkt neben die Vorschau, wo sie an den Text stiessen -- und die Zuordnung fehlte ganz. Das war nicht nur Layout: der Fliesstext behauptete "Jeder Kanal haengt an seiner Projektnummer", und die Nummer war nirgends zu sehen. Im Original steht sie als dritte Zeile. Eine feste Obergrenze fuer die Blasenbreite hat ein Zitat gekuerzt. Fuer die Titelslide musste sie klein sein, damit die Unterhaltung neben die Liste passt; auf Slide 3 stand deshalb "Materialliste pruefen · faelli..." Die Grenze haengt jetzt an der Spalte, in der die Blase steht. Beinahe haette ich ein Zitat ohne Grund gekuerzt. Die Website-Ueberschrift lautet "Bueero und Baustelle, endlich im selben Chat." Das "endlich" war gestrichen mit der Begruendung, die Zeile laufe sonst ueber die Schutzzone -- und diese Begruendung sogar mit einer Zahl versehen, die nicht gemessen war. Nachgemessen sind es 818 px von 896 erlaubten: sie passt. Das Wort ist wieder drin. GEPRUEFT Luft 102 / 61 / 254 / 141 px, alle Zeichnungen innerhalb der 92-px- Schutzzone, breiteste Ueberschriftzeile 818 von 896, 214 CSS-Regeln vollstaendig, Konsole ohne Fehler, vier PNGs aus dem echten Ausgabeweg bei 2160 x 2700. Downloads blieb leer, der Projektstand unveraendert. Die Pruefskripte im Sitzungsordner waren geloescht und sind neu angelegt, diesmal mit gemeinsamem CDP-Kern: pruef.mjs misst ueber getBBox die tatsaechlich gezeichnete Flaeche und die Breite jeder Ueberschriftzeile, schuss.mjs rendert einzelne Slides, breite.mjs misst eine Formulierung, bevor sie in die Datei kommt, export.mjs faehrt den Ausgabeweg und faengt /save ab. NEBENBEI Die Projektliste steht jetzt achtmal im Repo, einmal je Post-Seite plus uebersicht.html, dort zusaetzlich in PROJEKTE. Post 6 ist ueberall eingetragen. Wichtig fuer den offenen Tab: der Eintrag steht im Markup und entsteht nicht zur Laufzeit -- eine Seite, die schon geladen war, zeigt ihn erst nach dem Neuladen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
32206e7352 |
Post 5: das Projektmanagement, vier Bildschirme einer Pipeline
Nummer 4 im Redaktionsplan, erscheint Fr 21.08. Carousel, fuenf Slides, Theme modern, Variante hell, Punktgrund. Stichwort des Plans: "Der Ueberblick, den jeder Betrieb vermisst." DER BEITRAG Das Demo-Projekt haelt fuer die Pipeline vier eigene Bildschirme bereit -- Schablone, Board, Liste, Detail. Jeder bekommt eine Slide, dazu die Karte aus der Naehe: 1 Von der Anfrage bis zur Abnahme. 4A das Board, drei Phasen 2 Alles Wichtige auf einer Karte. 4A eine Karte gross 3 Vom Verkauf in die Abwicklung. 4B das Projekt in der Abwicklung 4 Board oder Liste. 4C dieselben Projekte als Tabelle 5 Du bestimmst, was draufsteht. 3 der Feldeditor ES SIND ZWEI PIPELINES, NICHT EINE Das ist die Pointe und der Grund fuer Slide 3. Das Board gehoert zu "Vertrieb: Anlagen-Verkauf", das Projekt in der Detailansicht liegt in "Auftragsabwicklung SHK", und ein Knopf in der Kopfzeile schiebt es von der einen in die andere. Beide Namen stehen woertlich in PipelineBoardInteractive.tsx und S02PipelinesDetailansicht.tsx. Warum das eine Software sein kann, beantwortet Slide 5: die Felder haengen an der Pipeline, nicht am Programm. Siebzehn Feldtypen und drei Stufen unter "Pflicht ab Board-Spalte", im Screen offen auf "Aufmass erledigt". Ein SHK-Betrieb legt sich das an, ein anderer etwas anderes. EINE RICHTIGSTELLUNG Ein Zwischenstand behauptete, die Detailansicht sei nur ein Entwurfs-PNG. Geprueft worden waren die Beschriftungen aus 07_Screen-4b_Karten-Detail.png -- KUNDENDATEN, OBJEKTDATEN, Wahrscheinlichkeit, Heizlast, Lead-Quelle -- und die kommen im Code wirklich nirgends vor. Daraus wurde der falsche Schluss gezogen, es gebe den Bildschirm nicht. Es gibt ihn: app/(screens)/4b/ rendert S02PipelinesDetailansicht.tsx, 3150 Zeilen, mit den Rubriken GRUNDDATEN, PLANUNG & VERANTWORTLICHE, PROJEKTKONTAKTDATEN, KONTAKTE, FIRMENDATEN, ANSPRECHPARTNER, PROJEKTADRESSE und ZUSATZADRESSEN. Das PNG ist ein aelterer Entwurf desselben Bildschirms, nicht sein Beleg. Die Abwesenheit einer Zeichenkette beweist die Abwesenheit eines Bildschirms nicht. DIE KARTE KOMMT AUS DEM CODE, NICHT AUS DEM SCREENSHOT Der erste Anlauf war von assets/screens/pipelines.png abgemalt und lag an drei Stellen daneben, von denen im Bild keine zu erkennen war: Prioritaet, Balken und Kuerzel stehen als Gruppe rechts und haengen ueber die Kante des Fusses (absolute -bottom-4 right-2), im Fuss steht ueber dem Termin die Zeitspanne des Projekts, und die Balken sitzen in einem eigenen umrandeten Kasten. Erst ProjectCard.tsx hat das gezeigt. Die Karte ist jetzt Klasse fuer Klasse daraus nachgebaut, 320 breit wie w-80, Titel auf hoechstens zwei Zeilen wie line-clamp-2. Anders als bei Post 4 wird nichts umgefaerbt. Eine Pipeline lebt davon, dass man das Gewerk an der Farbe erkennt, ohne zu lesen, und dass der Fuss sich mit der Prioritaet faerbt. Zuordnung aus CATEGORY_TONES, Toene aus ui/theme.css, Kuerzelfarbe aus avatarColor je Projekt. ALLE ZAHLEN SIND GERECHNET Anzahl und Summe je Spalte kommen aus denselben 41 Datensaetzen wie die Karten: Angebot 189.800, Auftrag 224.800, In Ausfuehrung 352.300 Euro. Wer eine aendert, muss die andere mitziehen. WO BEWUSST ABGEWICHEN WIRD - Slide 1 zeigt zwei bis drei Karten je Spalte, der Kopf zaehlt weiter vier. So ist es im Werkzeug auch, eine Spalte zeigt, was aufs Bild passt. Gleich hohe Saeulen sahen aus wie eine Tabelle. - Slide 4 zeigt vier von neun Tabellenspalten und sieben von elf Zeilen. Die Spalte Sachbearbeiter ist entfallen, damit "Auftragswert gesperrt" ungekuerzt hineinpasst -- der Wortlaut ist der Grund, warum die Spalte ueberhaupt auf der Slide steht. - Slide 3 stellt die Rubriken untereinander statt nebeneinander, und zwei fehlen: PDS-INTEGRATION, weil der Beitrag sich an Betriebe allgemein richtet und nicht an die mit diesem einen Branchenprogramm, und "ADRESSDATEN . TEST A (ZUSATZADRESSEN AN)", weil das ein Arbeitstitel aus der Entwicklung ist und kein Bildschirmtext. - Ein "Kalender" im Umschalter stand kurz drin und ist raus: die ToggleGroup des Boards kennt board und list, mehr nicht. DIE MASSSTAEBE SIND ABGESTIMMT Slide 1, 3, 4 und 5 zeigen ihre Schrift zwischen 16 und 23 px. Slide 2 ist als Nahaufnahme gedacht und liegt bei 47. Vorher stand sie auf 59 bis 73, und eine einzelne Karte wirkte damit groesser als das ganze Board davor. Der Kopfbereich ueber dem Board -- Seitentitel, Umschalter, Filterleiste -- ist wieder entfallen. Im Profilraster ist die Slide eine Kachel von rund 150 px, dort liest niemand eine Bedienoberflaeche. Wie die Pipeline heisst, sagt Slide 3; dass es eine Liste gibt, sagt Slide 4. EIN PRUEFSKRIPT HAT DEN PROJEKTSTAND VERSTELLT export.mjs schaltet die Slides mit der Pfeiltaste weiter. Die Seite startet aber im Bearbeiten-Modus, und dort verschieben Pfeiltasten das gewaehlte Element statt die Slide zu wechseln. Jeder Prueflauf hat die Zeichnungen geschoben und das in state/post5.json geschrieben: zuletzt vis dx 3 dy -69 auf Slide 1 und auf Slide 2 ein size 762, das die im Code eingestellten 720 ueberschrieb. Die Karte, ueber deren Groesse zwei Runden lang geredet wurde, war beim Messen also gar nicht die aus dem Code. Gemerkt an Messwerten, die im Code nirgends standen -- 89 px Rand rechts bei eingestellten 92, 177 px unten bei eingestellten 120. Zahlen, die man sich nicht erklaeren kann, sind ein Befund und keine Messungenauigkeit. Der Stand ist bereinigt, das Skript verlaesst vor dem Blaettern den Bearbeiten-Modus und schreibt die Datei am Ende zurueck. NEBENBEI - Plaettchenbreiten werden gemessen statt geschaetzt. Zeichenzahl mal 0,52 em stimmt fuer "Heizung" und geht bei "Waermepumpe" daneben, das Wort stand ueber dem Rand. Ein Canvas misst dieselbe Schrift, die das SVG spaeter zeichnet; aus derselben Messung kommt der Titelumbruch. - Die Ueberschrift von Slide 1 steht auf denselben Werten wie die von post4.html, nachgemessen: 76 px, Gewicht 800, -2,432 px Sperrung, zentriert, Oberkante 95, Blockhoehe 158, Versatz dy 3. - Die Projektliste steht siebenmal im Repo, einmal je Post-Seite plus uebersicht.html, dort zusaetzlich in PROJEKTE. Post 5 ist ueberall eingetragen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
bae57e64ce |
Post 4: die Workflow-Engine, drei Ansichten derselben Oberflaeche
Nummer 3 im Redaktionsplan, erscheint Mi 19.08. Carousel, vier Slides, Theme modern, Variante hell. DER BEITRAG Ein Ablauf, die Bausteine, aus denen er entsteht, und der Hinweis, dass man nicht bei null anfaengt: 1 Automatisiere deinen Betrieb. ein Ablauf auf dem Canvas 2 Erst der Ausloeser. die Ausloeser-Auswahl 3 Dann die Aktionen. die Aktionen-Auswahl 4 Fang nicht bei null an. drei fertige Vorlagen Slide 2 und 3 teilen sich eine Funktion mit zwei Rubriken, weil es im Produkt eine Auswahl ist: "Ausloeser" und "Aktionen" stehen dort untereinander im selben Feld. Getrennt gezeichnet waeren es zwei Bilder, die zufaellig gleich aussehen. Vier Slides statt der fuenf bis sieben aus dem Redaktionsplan. Das ist eine Spanne und kein Soll: eine Slide, die nichts hinzufuegt, kostet einen Wisch und gibt nichts zurueck. WAS AUS DEM PRODUKT KOMMT UND WAS NICHT Der Knoten ist NodeItem aus ui/components/NodeWorkflowEngine des Pitch-Pakets: quadratisch 128 x 128, rounded-lg, 6 px Rand, Titel und Beschreibung unter dem Feld, beim Ausloeser die linke Flanke voll gerundet. Genau so rendert es auch assets/screens/workflow.png. Ein Zwischenstand zeichnete stattdessen breite Karten mit farbiger Kante links und einem Block "BESCHREIBUNG" -- abgemalt vom Pitch-Bild 02_Praesentation/03. Im Code des Projekts gibt es das nirgends: weder "BESCHREIBUNG" als Label noch eine linke Farbkante, beides null Treffer. Der Kommentar behauptete trotzdem, es sei ein Nachbau der Komponente. Das ist berichtigt. Die Farben sind die des Produkts, aufgeloest aus ui/theme.css ueber die ganze Token-Kette und nicht aus dem Bild geschaetzt. Sie tragen Bedeutung: gruen faengt an, rot aendert Daten, blau meldet, amber macht eine Aufgabe daraus, violett entscheidet. Ein Zwischenstand hatte sie durch Markenfarben ersetzt, weil rules.md 2 diese Toene nicht kennt -- zurueckgenommen, der Beitrag zeigt die Oberflaeche, und umgefaerbt waere es eine Nacherzaehlung. Alle Produkttexte stehen woertlich in der Quelle. Wo ein Name nicht in eine Zeile passte, steht er zweizeilig: aus "Daten vereinheitlichen" ein "Pruefen" zu machen ist keine Kuerzung, sondern ein anderer Name. DREI STELLEN, AN DENEN BEWUSST ABGEWICHEN WIRD - Slide 1 gabelt nach dem zweiten Knoten. Alle drei echten Ablaeufe verzweigen erst an Position 3 oder 4, und das fuellt ein hochkantes Format schlecht -- solange der Stamm laeuft, steht ueber und unter ihm nichts. Dafuer fehlt zwischen "Formular eingegangen" und "Passender Lead?" der Schritt "Daten vereinheitlichen". Ein Ablauf, den es genau so gibt, ist es damit nicht mehr; einer, den es geben koennte, schon. - Slide 4 nennt die Demo-Ablaeufe "Vorlagen". Dass es eine Vorlagen-Bibliothek gibt, steht als Merkmal auf der Website; dass sie diese drei enthaelt, steht nirgends. Im Werkzeug werden sie ueber workflowId geladen, nicht als Galerie gezeigt, und das Wort "Vorlage" kommt in der Komponente nicht vor. - Kein PDS im Beitrag. Von den sechs Vorlagen nennen drei das Branchenprogramm. Uebrig bleibt genau die Gruppe GENERAL_WORKFLOW_PRESETS, in der es kein einziges Mal vorkommt -- also keine Auswahl nach Geschmack, sondern die vollstaendige zweite Gruppe. Gekuerzt wurde nichts. Erfundene Vorgaenge sind raus. Ein Zwischenstand hatte eine Slide mit einem Aktivitaetenverlauf samt Uhrzeiten. Nichts davon war gemessen, und bei einem Produkt vor dem Start ist eine erfundene Uhrzeit kein Beispiel, sondern ein Beleg, den es nicht gibt. DER PUNKTGRUND Die Arbeitsflaeche des Workflow-Editors, Werte aus WorkflowEditor.tsx der Website. Zwei begruendete Abweichungen: die Teilung ist verdoppelt, weil ein 24er Raster im Feed auf 9 px zusammenfaellt und zu grauem Schleier wird, und der Grund bleibt weiss statt getoent, weil rules.md 1a das verbietet. EIN FEHLER, DER FAST DURCHGERUTSCHT WAERE Beim Entfernen der Karten-Regeln von Post 2 blieben rund neunzig Zeilen Deklarationen ohne Selektor stehen, dazu ein Kommentar ohne Ende: nur die Selektorzeilen waren weggeschnitten. CSS faengt sich davon nicht wieder, der Parser ueberspringt bis zur naechsten Marke -- und dabei verschwand die Regel [data-edit] darunter. Damit war das Verschieben von Elementen im Canvas tot, ohne dass die Seite einen Fehler zeigte. Sichtbar wurde es erst, als ein gespeicherter Versatz von 3 px nicht mehr ankam. Behoben, und an der Stelle steht jetzt eine Warnung: Regeln als ganzen Block entfernen und danach nachsehen, ob document.styleSheets sie noch alle kennt. NEBENBEI - Die Ueberschriften stehen auf denselben Werten wie post3.html, bis auf den Pixel nachgemessen: 76 px, -0,032em, nowrap und der Versatz dy 3, den auch post2, post2-alt und post3 auf jeder Slide tragen. - Die Projektliste steht sechsmal im Repo, einmal je Post-Seite plus uebersicht.html. Post 4 ist ueberall eingetragen. Wer einen siebten Beitrag anlegt, muss an alle sechs Stellen denken. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |