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>
Der Commit buendelt zwei Arbeitsstraenge, die in derselben Datei entstanden
sind und sich nicht sauber trennen liessen.
Aus der parallelen Sitzung: Rueckgaengig und Wiederherstellen ueber Cmd/Strg+Z,
angehaengt an saveState statt an die 25 Stellen, die etwas aendern. Ziehen
speichert erst beim Loslassen, eine Bewegung ist also ein Schritt und nicht
hundert. Dazu der Tausch von Automation & KI und Vertrieb samt Stand 4: der
Stand haengt an der Position, nicht am Slide-Schluessel, ohne Tausch laegen
Positionen, Muster und Layout an der falschen Slide.
Neu hier: die Tags sind ausgeblendet, nicht entfernt. Beim ersten Versuch
waren sie geloescht, worauf Ueberschrift und Text nach oben rutschten - das
Tag steht im Textfluss und belegt Hoehe. visibility haelt die Box, display
none haette sie ebenso aufgegeben. Der Umschalter fuer die Ausrueckung und
sein Kuerzel bleiben deshalb bestehen.
Stand 5 raeumt den gespeicherten Tag-Eintrag: seine Stelle ist ohne Wirkung,
und die Werte standen zuletzt bis 141 px oberhalb der Slide.
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>
Beschreibungstext und der Swipe-Hinweis fallen weg, dazu das ungenutzte
CSS und die SVG-Konstante. Der Hinweis hing am else-Zweig der Feature-
Slides und lag damit ohnehin nur auf der Titel-Slide.
Die Ueberschrift liegt jetzt ueber dem Mockup. Das Geraet steht im DOM
nach ihr und lag deshalb darueber: gross gezogen hat es die Ueberschrift
verdeckt und im Bearbeiten-Modus die Klicks geschluckt, sodass man nicht
mehr an sie herankam.
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>
Der Ladepfad hat jeden Stand ab Version 3 verworfen: STATE_V stand auf 3,
die Pruefung liess aber nur 1 und 2 durch. Damit lief das Blatt mit der
Voreinstellung an und schrieb sie ueber die vorhandene Datei. Die Pruefung
gilt jetzt von 1 bis STATE_V.
Damit so etwas nicht mehr unbemerkt bleibt: liegt eine Standdatei vor, die
sich nicht anwenden laesst, wird nichts mehr zurueckgeschrieben, weder in
die Datei noch in den localStorage.
Merkzettel gehaertet. "Stand merken" liest die Datei gegen und meldet erst
dann Erfolg. "Zurueck zum Stand" prueft Version und Slide-Anzahl, bevor es
den laufenden Stand ersetzt, legt ihn vorher als <projekt>-vorher ab und
laedt erst neu, wenn die Datei nachweislich steht.
Auf der Titel-Slide steht das Geraet jetzt auf dem Fels-Mockup. Die
Wortmarke steckt im Bild, deshalb faellt die separate wabe-logo dort weg.
Der Rahmen ist auf 880px breiter, weil das Bild links und rechts rund ein
Viertel freien Rand mitbringt.
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>
Das Szenen-Mockup aus Macbook Air und iPad Pro faellt weg. Das neue Bild
bringt seinen Screen bereits mit, damit fallen auch die ausgeknockten
Displays, die beiden matrix3d-Projektionen, die eingespielten Screenshots und
die dafuer gemessenen Vierecke, Eckradien und Skalenfaktoren weg. Rund 3500
Zeichen CSS werden zu 460.
Standardbreite 720 px. Das ist gerechnet: bei 1409 zu 1494 ergibt das 763 px
Hoehe, zusammen mit Kopfblock und Claim 1138 von 1166 px Inhaltshoehe. Bei
760 px reisst es die Slide.
Stand 3 verwirft den gespeicherten Wert fuer das Geraet. Er stammt vom alten
Mockup mit anderem Format; 1020 px Breite waeren hier 1082 px hoch.
Tags heissen jetzt Vertrieb, Automation & KI, Chat und Formulare. Das &
steht blank, nicht als Entitaet: der Text laeuft ueber innerHTML in Tag und
Navigation, aber ueber textContent in die Statuszeile.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Projektmanagement heisst jetzt "wo alle Auftraege stehen", Team-Chat "Projekte
bekommen automatisch ihren Kanal". Beide bleiben zweizeilig; Zeile 2 der
Chat-Slide misst mit Marker 880 px bei 896 verfuegbaren, ein laengeres Wort
bricht dort sofort um.
Das hinterste Blatt im Stapel nahm bisher immer den Screen der naechsten
Feature-Slide. Auf der Chat-Slide war das der Form Builder, und dessen
3,8-facher Zoom kam mit: unscharf, dazu Kopieren- und Papierkorb-Symbole, die
zu einem anderen Feature gehoeren. Das Blatt ist jetzt ueber "back" pro Slide
ueberschreibbar; die Chat-Slide zeigt den Chat im Hochformat ohne Zoom.
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>
Elemente liessen sich nur mit der Maus schieben. Damit war ein Wert auf zwei
Slides nie exakt gleich zu treffen, und genau das war die Aufgabe.
Zahlen sind jetzt Eingabefelder. Breite oder Schrift, X und Y. Das Feld wird
beim Ziehen nicht neu aufgebaut und nie das ueberschrieben, in dem der Cursor
steht; Tastenkuerzel greifen in Eingabefeldern nicht mehr.
X und Y zaehlen ab der Mitte der Slide und beziehen sich auf die OBERE LINKE
ECKE des Elements, nicht auf seinen Mittelpunkt. Eine zweizeilige und eine
dreizeilige Ueberschrift sind unterschiedlich hoch: bei gleichem Mittelpunkt
liegen ihre Oberkanten 39 px auseinander und der hoehere Block waechst nach
oben ins Tag. Ab der ersten Zeile gerechnet stimmt es unabhaengig von der
Zeilenzahl.
Zwei Knoepfe uebertragen Position oder Groesse des gewaehlten Elements auf
alle anderen Slides. Angeglichen wird die Stelle, nicht der Versatz: jedes
Element liegt von sich aus woanders. In der Einzelansicht wird jeder Holder
kurz sichtbar gemacht, sonst hat er kein Layout.
Hilfslinien beim Ziehen: Raster, Innenabstand und die beiden Mittelachsen,
nur auf der Slide, an der gezogen wird. Liegt die Mitte auf einer Achse,
leuchtet sie auf. Vor dem Export werden sie zwangsweise abgeschaltet.
Merkzettel unten rechts: ein Stand laesst sich ablegen und mit einem Klick
zurueckholen. Er liegt als eigenes Projekt in state/ und damit im Repo.
Einmalige Angleichung der Tags beim Laden (Stand 1 auf 2), weil der Tag auf
jeder Slide einzeln gezogen worden war. Das laeuft im Ladepfad und nicht ueber
die Datei: ein offener Tab haelt seinen Stand im Speicher und schreibt eine
Aenderung an der Datei beim naechsten Klick wieder zu.
Ueberschrift der Chat-Slide von "automatisch seinen Kanal." auf "von selbst
seinen Kanal.". Die alte Zeile misst mit Marker 933 px bei 896 verfuegbaren
und brach in eine dritte Zeile.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Export staucht nicht mehr auf 1080 x 1350. Die Slide entstand bei
Renderqualitaet k longst in 1080k x 1350k und wurde unmittelbar vor dem
Speichern wieder heruntergerechnet -- eine Vorlage mit 2390 px kam so mit
916 px an, obwohl sie bereits in 2748 px gerendert vorlag. Gespeichert wird
jetzt, was gerendert wurde; bei 3x sind das 3240 x 4050. Die Statuszeile
nennt die Groesse, und wer exakt 1080 will, stellt die Stufe auf 1x.
Die Kontrolle vor dem Speichern hat ihren Zweck verfehlt. Sie prueft, ob
jede Bildflaeche im Ergebnis Pixel traegt, sah dafuer aber das
achsenparallele Umrechteck an. Die Szenen-Displays stehen per matrix3d
schraeg im Raum, in ihrem Umrechteck liegen Rasterlinien, Hintergrund und
das Nachbargeraet -- deren Kontrast reichte immer, um durchzukommen. Eine
Slide mit voellig leerem Display wurde deshalb stumm gespeichert.
Jetzt werden die echten vier Ecken ausgemessen (ueber 1-px-Marken, Chrome
kennt getBoxQuads nicht) und nur die Ueberlappung von Bild und Rahmen
abgetastet. Beides einzeln fuehrt in die Irre: das Szenen-Display ist
groesser als der sichtbare Ausschnitt, das Feature-Mockup umgekehrt. Die
Geraeterahmen stehen neu mit auf der Liste, geprueft ueber den aus der
Vorlage geeichten Dunkelanteil. Nachgestellt mit opacity 0: vorher still
gespeichert, jetzt Abbruch mit Nennung der Flaeche. 11 von 11 echten
Ausfuhren laufen ohne Fehlalarm und ohne Wiederholung durch.
Die Szenen-Screenshots fuellen ihr Display randlos. Sie lagen als kleinere
Rechtecke an handgemessenen Prozentwerten darin, die nicht aus der
Glasflaeche des Mockups stammten: 656 px blieben rechts frei, 470 px unten,
und die Werkzeugleiste des Boards verschwand oben trotzdem unter der
Blende. Weil Prozentwerte in translate() an der Bildkante haengen, loesten
Vorschau und Export sie unterschiedlich auf -- die Luecke war im Export
groesser als im Canvas. object-fit uebernimmt das jetzt, es bleibt kein
Versatz, der auseinanderlaufen koennte.
Dazu behoben: post1-alt.html konnte vier Laptop-Layouts und Slide 2
ueberhaupt nicht exportieren. workflow.png haengt an keiner Slide mehr und
fehlte in der Ladeliste, im Bild stand src="undefined".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Das blanke Rad zoomt jetzt, die linke Maustaste zieht die Flaeche. Eine
gewoehnliche PC-Maus kam vorher nicht an den Ausschnitt heran: Zoomen ging
nur mit Strg/Cmd, Schieben nur ueber Leertaste oder mittlere Taste.
Die Radschritte laufen exponentiell ueber deltaY statt in festen Spruengen,
mit Umrechnung der deltaMode-Einheiten -- ohne die zoomt Firefox pro Rastung
um ein Vielfaches weniger als Chrome. Waagerechtes Wischen und Shift+Rad
schieben weiter, damit sich ein Trackpad nicht wie eine Zoomwippe anfuehlt.
Im Bearbeiten-Modus behaelt das Element unter dem Zeiger die linke Taste.
Nach einem echten Zug wird der Klick geschluckt, sonst sprang die Auswahl
auf die Slide, ueber der die Maus zufaellig losliess.
Dabei zwei aeltere Fehler mitgenommen:
setZoom rechnete den Zeigerpunkt per Dreisatz auf scrollLeft hoch und
uebersah das Polster der Flaeche. Der Inhalt lief pro Schritt um 60 x
(Faktor-1) px weg. Der Punkt wird jetzt gemessen statt gerechnet.
Der Bearbeiten-Zug leitete seinen Massstab aus der Border-Box von .strip ab.
Die misst Breite mal Massstab hoch zwei, weil .strip ein Flex-Kind der schon
skalierten Huelle ist -- geteilt wurde also durch das Quadrat, das Element
wanderte bei eingepasster Ansicht um das 5,6-fache der Mausbewegung.
Geprueft mit echten Rad- und Zieh-Ereignissen ueber das DevTools-Protokoll,
15 Pruefungen gegen beide Dateien.
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>
Die Aufnahmen lagen auf dem Design-Rechteck des Smart-Objekts. Davon ist aber
nicht alles zu sehen: oben verdeckt die Blende des Deckels samt
Kameraaussparung, unten die Tastaturschale, rechts das davorstehende iPad.
Aus den Ecken geschaetzt kam oben 3,8 % heraus, tatsaechlich sind es 6,9 %,
und die Kopfzeile der Anwendung verschwand.
Jetzt wird gemessen: die Deckung der Screen-Ebene per Umkehr-Homographie in
den Design-Raum zurueckgerechnet, darin das groesste achsenparallele Rechteck
gesucht. Es misst 2726 x 1682 bei (74, 154), also 78,9 Prozent der Breite. Die
Aufnahme liegt darin zentriert eingepasst, nicht formatfuellend: nichts wird
abgeschnitten und nichts gezoomt.
Die freie Flaeche traegt den aus den Bildecken gemessenen Hintergrundton der
jeweiligen Aufnahme. Fuenf Stufen Unterschied reichen, damit sie sich als Rand
abzeichnet.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Drei Aenderungen am Generator, im selben Bereich der Datei verzahnt.
Notizzettel: die StickyNote aus dem Pitch-Projekt als HTML nachgebaut,
Variante purple, Farbwerte uebernommen und die Masse auf das 1080er Blatt
hochskaliert. Liegt auf der Workflow-Slide und ist wie jedes andere Element
verschiebbar.
Schatten: raus, ueberall. Kein box-shadow, kein drop-shadow. Tiefe entsteht
ueber Ueberlappung, Rahmenfarbe und Versatz. Der Umschalter faellt mit weg,
er haette nichts mehr zu schalten gehabt. Die Blaetter im Stapel-Rahmen
bekommen eine Haarlinie, sonst laege auf der hellen Variante Weiss auf Weiss.
Szenen-Mockup: Macbook Air und iPad Pro in Perspektive, aus einem Pixeden-PSD
freigestellt. Beide Displays sind ausgeknockt, die Screenshots liegen dahinter
und werden per matrix3d in die Flaechen projiziert. Die Eckpunkte sind
gemessen, nicht geschaetzt: beim Macbook aus dem transform_box des
Smart-Objekts, beim iPad ueber Ausgleichsgeraden auf den vier Glaskanten, weil
das Smart-Object dort zu hoch sitzt. Der Spalt zur weggefallenen Glasplatte
wird spaltenweise aus den Nachbarfarben interpoliert, damit am Displayrand
Schwarz und am Gehaeuse Metallic steht.
Das PSD selbst bleibt draussen: Pixeden erlaubt die Nutzung, nicht die
Weitergabe.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Kopie von Post 1, in der die Workflow-Engine nicht als Screenshot liegt,
sondern als HTML gebaut wird: Ablauf-Knoten und Bausteinliste kommen aus
einer Datenstruktur statt aus einer Aufnahme. Damit bleiben Kanten und Schrift
beim Export scharf, und es gibt keine Scrollbalken oder Cursor-Reste im Bild.
Kanban, Chat und Form Builder liegen dort weiter als Screenshot.
Die Projektnavigation traegt den dritten Eintrag.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Kanban-Board, Workflow-Ablauf und Chat neu aufgenommen, dazu vier Ausschnitte,
die eine zweite Ebene je Slide tragen: Projekt-Detail, Listenansicht,
Bausteinliste und Anhang-Menue. Der Chat kommt zusaetzlich hochkant fuer das
Tablet-Display.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Screenshots werden hier laufend unter gleichem Dateinamen ausgetauscht. Der
Browser hat dann die alte Fassung gezeigt, obwohl die Datei auf der Platte
schon die neue war. Das ist ein Werkzeug, kein Auslieferungsserver: ein
erneuter Ladevorgang kostet weniger als die Suche nach dem Grund.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Generator ist von einer Vorschau zu einer Werkbank geworden: Slides lassen
sich direkt im Canvas verschieben und skalieren, der Stand bleibt erhalten.
- Streifenansicht mit allen Slides nebeneinander, Auswahl per Klick
- Durchlaufendes Blatt: jede Slide trägt die Inhalte ihrer Nachbarn, damit
verschobene Elemente über die Kante hinweg weiterlaufen
- Bearbeiten im Canvas: ziehen, Schriftgrößen und Bildbreiten, Reset je
Element oder komplett
- Projektstand pro Post im Browser gespeichert, Navigation zwischen den Posts
- Arbeitsfläche vom Bedienfeld getrennt, eigener Zoom und Panning
- Bildrahmen als Chamfer, rund, Stapel oder aus; Schatten schaltbar
- Screenshots zeigen den vollen Screen statt eines Ausschnitts
- Kategorien in der Sidebar standardmäßig zugeklappt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Autarke Werkbank für Social-Grafiken: Slides als HTML, Bearbeitung im Canvas,
Export als Instagram-taugliche PNGs.
- Assets nach brand/partner/mockups/screens sortiert, Karteileichen entfernt
- G-Marke als eigene Datei statt nur als Polygon im Code
- Partner-Logos und Geerkens-Logo ergänzt
- Keine externen Referenzen: Schrift, Bibliotheken und Bilder liegen lokal