Commit Graph
26 Commits
Author SHA1 Message Date
dejanandClaude Opus 5 ceb63fec38 Post 3: zweite Slide, und eine Komponenten-Library fuers Video
POST 3
Slide 2 zeigt den Aufbau: HiveGrid in der Mitte, die eigenen Module auf dem
gelben Ring, die fremden Programme aussen am gestrichelten Kreis. Nachbau des
Schaubilds aus dem Prototyp, aber in den Markenfarben -- Magenta ist keine
(rules.md 2) -- und ohne Produktnamen im Kern.

Achtung: das ist eine andere Aussage als in post2-alt.html, wo in der Mitte
das Branchenprogramm liegt und HiveGrid ausdruecklich der Ring ist. Steht als
Warnung im Code. Die Ueberschrift "Der Kern bleibt." passt seit dem Wechsel
der Mitte nicht mehr zum Bild und ist noch offen.

Slide 1 traegt nur noch die Ueberschrift; ein leerer Fliesstext erzeugt jetzt
keinen leeren Absatz mehr. Das Wabenfeld ist enger geschnitten (Faktor 1,301
statt 1,227) und steht am Anschlag: 96 px zur Slide-Kante, die Sicherheitszone
liegt bei 92. Ueberschriften in 76 px und 3 px versetzt wie in post2-alt --
gemessen, nicht geschaetzt.

Zwei Fehler, die dabei aufgefallen sind:

- Die Andock-Kacheln lagen auf denselben Strahlen wie die Module und
  beruehrten sich. Dieselbe Ueberlappung hat der Exportpruefung eine Spanne
  von 37 vorgetaeuscht, wo eine fehlende Marke 0 ergeben muss -- der
  Gegentest kam durch, obwohl die Marke fehlte. 22,5 Grad Versatz behebt
  beides.
- Die Pruefung kannte nur den Ausschnitt des Wabenfelds und haette auf
  Slide 2 an der falschen Stelle gemessen. Der Ausschnitt wandert jetzt mit
  in die Ablage, wabenZonen heisst darum markenZonen.

VIDEO
Neuer Ordner video/ mit 13 Einblendungen fuer den Schnitt, jede als Standbild
und als Bildsequenz mit Ein- und Ausblendung, alle mit Alphakanal. Gerendert
aus komponenten.html von bauen.mjs ueber CDP; kein ffmpeg noetig, weil eine
Bildsequenz dieselbe Transparenz traegt wie ProRes 4444.

Der Schatten fehlte zunaechst ganz: die Karte trug clip-path fuer die Ecken
und box-shadow fuer den Schatten, und clip-path beschneidet ihn mit. Genau so
steht es in rules.md 3. Sitzt jetzt als drop-shadow auf einer Huelle.

NEBENBEI
- Das ZIP hiess in allen Projektdateien "hivegrid-post1-loesung", weil sie
  voneinander kopiert wurden. Kommt jetzt aus PROJECT.
- Das rechte Element-Feld liess sich nicht schliessen, wenn es nicht ganz ins
  Fenster passte: sein Knopf rutschte als erster hinaus. Knopf nach vorn,
  Escape hebt die Auswahl auf, max-width auf den Feldern.
- uebersicht.html schrieb "1 Slides".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 16:55:18 +02:00
dejanandClaude Opus 5 a5ec0c565e Post 3: Verbinden statt ersetzen, ein Einzelbild mit dem Wabenfeld
Nummer 2 im Redaktionsplan, im Generator das dritte Projekt. Kein Carousel:
eine Haltung, die man durchwischen muss, ist keine.

Das Bild ist das Wabenfeld der Startseite, uebernommen aus
HoneycombSection.tsx und nicht nachempfunden -- derselbe Umkreisradius,
dieselbe Achsrechnung, dieselben Zellnummern. Damit stimmen WABE_MARKEN und
HONEYCOMB_DEFAULT_LOGO_PLACEMENTS ueber dieselben Nummern ueberein. Die vier
Waben "In Arbeit" sind raus: auf der Startseite ein Versprechen, im Feed ein
Eingestaendnis.

Der Ausschnitt ist enger als die Slide (880 statt 1080), das Feld also um
1,227 vergroessert -- ein Ring leerer Waben rundherum kostete nur Platz.
Text mittig wie in post2-alt.html.

Sechs der 14 Marken sind PNG und damit dieselbe Wette wie ein Screenshot
(rules.md 7). wabenZonen() prueft sie deshalb einzeln nach: ein Punktraster
ueber den ganzen Markenkasten, dessen Ecken das Gelb der Wabe tragen. Fehlt
die Marke, ist der Kasten einfarbig und der Export wiederholt. Gegengetestet,
indem DATEV absichtlich weggelassen wurde.

Die sechs Zeichnungen von Post 2 sind aus der Kopie raus, 5237 auf 4270
Zeilen. Die Band-Maschinerie bleibt, laeuft bei einer Slide aber leer -- im
Kommentar steht jetzt, dass ihre Stuetzpunkte an Post 2 geeicht sind.

Nebenbei: uebersicht.html schrieb "1 Slides", faellt erst mit dem ersten
Einzelbild auf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 21:25:09 +02:00
dejanandClaude Opus 5 16b85a285a Projektuebersicht: alle Streifen untereinander auf einer Flaeche
Neu unter Projekt -> "Alle Projekte im Streifen". uebersicht.html zeigt die
Streifen aller drei Projekte gestapelt, ohne Sidebar, auf derselben Art
Flaeche wie der Generator: ziehen schiebt, das Rad zoomt, Fit passt ein.

Die Seite baut die Slides nicht nach. Jedes Projekt kommt als iframe mit
?nur=streifen; in diesem Modus blendet die Post-Seite ihre Bedienoberflaeche
aus und zeigt den Streifen in natuerlicher Groesse, skaliert wird aussen.
Ein Nachbau wuerde irgendwann von dem abweichen, was der Generator zeigt,
und waere dann schlimmer als keine Uebersicht.

Drei Dinge, die dieser Modus regelt:

- Es wird nichts gespeichert (stateLocked). Drei Kacheln, die beim
  Schliessen ihren Stand zurueckschreiben, waeren genau die Falle aus
  POST-2.md 6.
- Die Ansicht steht fest auf "streifen". Post 2 stand im Stand auf
  "einzeln" und meldete deshalb 1080 px statt der vollen Breite.
- Der Auswahlrahmen faellt weg; in der Uebersicht ist keine Slide "die
  aktuelle".

Die Streifenbreite kommt per postMessage von der Post-Seite: die Zahl der
Slides ist je Projekt anders und soll nicht zweimal gepflegt werden.

Beim Einpassen zaehlen Beschriftung, Abstaende und Polster nicht mit --
die skalieren nicht, weil sie ausserhalb des transformierten iframes
stehen. Ohne diese Rechnung lief die letzte Reihe unten hinaus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 22:04:38 +02:00
dejanandClaude Opus 5 993dc3e5ef Themes als eigene Ebene, Theme modern angelegt
Projekt und Theme waren bisher dasselbe. Jetzt nicht mehr: das Projekt sagt,
welcher Beitrag, das Theme, wie er aussieht. notebook ist die
Zeichenblock-Optik mit Raster, Marker und handgezogenen Formen, modern der
ruhige Grund mit farbigem Akzentwort und schwebenden Karten. Beide Themes
teilen Aufbau, Texte und Kompositionen. rules.md Paragraf 1a haelt fest, was
sie genau trennt.

Das Theme modern folgt Vorbildern aus dem Feed: Zapier, Slack, Autarc,
Photovate, Plancraft. Was ich daraus uebernehme, ist nicht die Optik der
einzelnen Marke, sondern das Gemeinsame -- ruhiger Grund ohne Textur, eine
sehr grosse Ueberschrift mit einem farbigen Wort statt einer Markierung,
schwebende Karten mit Haarlinie, Ablaufketten mit Knoten, gefuellte
Kreis-Haken.

Drei Farben, wie besprochen: Weiss als Grund, Orange als Akzent, Teal als
Zweitfarbe. Teal stand in rules.md bisher als "ungenutzt" und traegt jetzt
Zeichen und Kacheln. Die Schriftfarbe ist ein sehr dunkles Teal statt reinem
Schwarz, damit sie zur Palette gehoert.

Das Raster faellt weg. Die Ebene bleibt im Markup, damit beide Themes
denselben Aufbau haben, sie zeichnet nur nichts mehr.

Slide 4 ist der erste Umbau: der Notizzettel ist raus, die Aufzaehlung bleibt
und wird zur Kette aus Karten mit Zeichenkachel, Beschriftung und Haken,
dazwischen ein Verbinder mit Knoten. Die Form sagt zusaetzlich etwas aus --
die vier Dinge haengen zusammen, statt nur untereinander zu stehen.

Der Menueeintrag zur Alternative fehlte in post1.html und post2.html; er
stand nur in der Kopie selbst. Von dort kam man also nie hin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 18:36:07 +02:00
dejanandClaude Opus 5 276cced03c Seitenleiste ausgeduennt, Vorschau statt Bearbeiten-Schalter
Bearbeiten ist immer an. An seine Stelle tritt die Vorschau: alles
festgelegt, keine Auswahl, kein Ziehen, keine Rahmen. Blaettern und Zoomen
bleiben, das ist der Sinn. Taste P statt E.

Aus der Seitenleiste raus: Layout, Tag optisch ausgerueckt, Vorschau,
Intensitaet, Mockup-Perspektive und die Download-Knoepfe. Entweder
post-spezifisch oder inzwischen oben in der Leiste.

Die Schalter selbst bleiben im Dokument, nur unsichtbar. Die Menueleiste
betaetigt sie, die Tastenkuerzel ebenso, und zwei Abgleich-Funktionen
schreiben hinein. Geloescht muesste jeder dieser Zustaende ein zweites Mal
gefuehrt werden.

Die Buehne stand noch auf 100vh. Darueber sitzt seit der Menueleiste aber
deren Hoehe, weshalb die Fussleiste mit Zoom und Merkzettel unter den unteren
Rand rutschte.

Oben links steht PostGrid statt HiveGrid, auch im Fenstertitel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 00:28:32 +02:00
dejanandClaude Opus 5 57d1f4c540 Nur noch das Raster als Grund, Menueleiste, Post 2
Der Grund ist fest das Raster. Raus sind die vier Formen-Bausteine, die grosse
G-Marke, das Wabenraster samt seinem Kachel-Erzeuger, die Punkte und die
Musterauswahl mit ihrer Taste. Ebenso das durchgehende Band: Sechsecke auf den
Naehten, Band und G-Marke, CSS, Schalter und Taste.

Beim Aufraeumen war zwischenzeitlich ".bg > * { display: none; }" mit
verschwunden. Diese eine Zeile hatte das Band die ganze Zeit verdeckt, eine
Einblende-Regel gab es dafuer naemlich nie. Ohne sie schwebten Sechsecke und
G-Marke ueber den Slides.

Die Projektauswahl ist eine Menueleiste ueber die volle Breite: Projekt,
Datei, Bearbeiten, Slide, Ansicht. Sie fuehrt nichts selbst aus, sondern
betaetigt die vorhandenen Schalter im Bedienfeld, damit jedes Verhalten an
genau einer Stelle steht. Haken und graue Eintraege liest sie beim Oeffnen aus
denselben Schaltern.

post2.html ist eine Kopie von post1.html bis auf Titel, Ueberschrift und
Projektschluessel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 19:50:35 +02:00
dejanandClaude Opus 5 92529a8c47 Element-Feld rechts: Text, Masse, Ausrichten, Ebene
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>
2026-08-07 19:14:00 +02:00
dejanandClaude Opus 5 778aa7bab7 Elemente loeschen, Ebene einstellen, Streifen als eine Flaeche
Drei Sachen, die beim Arbeiten gefehlt haben.

Der Streifen war keine durchgehende Flaeche. Jede Slide zeichnete nur ihre
direkten Nachbarn mit (i-1 bis i+1), ein Element liess sich damit genau eine
Slide weit schieben und war danach abgeschnitten. Jetzt traegt jede Slide das
vollstaendige Blatt. Der Preis sind n mal n Seiten statt n mal drei -- bei
einem Carousel dieser Groesse nicht spuerbar, und der Export laeuft
unveraendert durch.

Elemente lassen sich loeschen. Sie gehen per display:none aus dem Fluss, das
zweite Bild wird dagegen wirklich entfernt, sonst stuende es weiter im Stand
und im Auswahlfeld. Ein geloeschtes Element kann man nicht mehr anklicken,
deshalb steht es im Bedienfeld als "… zurueck" bereit -- ohne das waere es
nur ueber "Alles auf Standard" oder Rueckgaengig zu holen, also praktisch
verloren.

Und jedes Element hat ein Feld "Ebene", das wie z-index wirkt. Leer heisst
Standard, damit bleibt die Gestaltung unveraendert, solange niemand etwas
setzt. Text steht im Fluss und ignoriert z-index, deshalb kommt beim Setzen
ein position:relative dazu; am Layout aendert das nichts.

Geprueft: 8 Faelle ueber das DevTools-Protokoll (Reichweite ueber zwei
Slides hinaus, Ebene setzen und wieder leeren, loeschen und zurueckholen),
dazu der volle Exportlauf und die Maus-Bedienung.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 18:58:29 +02:00
dejanandClaude Opus 5 cbb5141d8b Importiertes Bild landet mittig auf der gewaehlten Slide
Der Import legte das Bild bisher nur ab und liess die Zuordnung in einem
Auswahlfeld liegen. Auf der Slide war damit nichts zu sehen, und der Import
wirkte wie ein Fehlschlag -- zu Recht, denn ohne den Weg ueber "Inhalt" war
das Bild nirgends.

Jetzt landet es sofort auf der gerade gewaehlten Slide, mittig, und ist
gleich ausgewaehlt. Die Mitte wird gemessen statt gerechnet: das Blatt ist
gepolstert und die Mockups stehen perspektivisch im Raum, ein Dreisatz ueber
left und bottom laege daneben. Der Versatz wandert in die Bearbeitung, das
Bild bleibt also frei verschiebbar.

Ein zweites Bild gibt es dafuer jetzt auf jeder Slide, nicht nur auf
Feature-Slides -- sonst waere die Zusage "landet auf der gewaehlten Slide"
auf der Titel-Slide gebrochen.

Geprueft ueber den echten Weg (Datei ins Feld, change ausloesen) auf einer
Feature- und auf der Titel-Slide: Versatz 0/0 px in beiden Faellen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 18:39:45 +02:00
dejanandClaude Opus 5 11eaf3f3e7 Umlaute im Dateinamen, klarere Meldung bei altem Server
Beim Import wurde aus "Pruefbild" ein "pr-fbild": der Namensfilter warf alles
weg, was nicht ASCII ist. Umlaute werden jetzt umschrieben statt entfernt.

Und /upload antwortet mit 404, solange der Python-Server noch in einer
Fassung ohne den Endpunkt laeuft. Das ist die wahrscheinlichste Ursache,
wenn der Import scheinbar nichts tut -- die Seite neu zu laden hilft
dagegen nicht, weil serve.py nur beim Start eingelesen wird. Die Meldung
sagt das jetzt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 18:23:15 +02:00
dejanandClaude Opus 5 8e1ac0d2a9 Eigene Bilder importieren und auf Slides legen
Bilder aus dem Finder kommen jetzt ueber die Dateiauswahl oder per Ziehen
direkt auf eine Slide herein. Beim Ablegen wird das Bild dort zum zweiten
Bild und laesst sich im Bearbeiten-Modus frei schieben und in der Groesse
aendern; ueber den Knopf importiert man nur und ordnet danach unter Inhalt
zu. Das zweite Bild laesst sich dort auch wieder abwaehlen.

Die Datei geht byteweise unveraendert an den neuen Endpunkt /upload und
liegt danach unter assets/eigene/. Nichts wird neu kodiert, skaliert oder
umbenannt -- nur Zeichen, die in einem Dateinamen nichts zu suchen haben,
weichen einem Bindestrich. Der Umweg ueber den Server ist Absicht: ein Foto
als Base64 im Projektstand waere groesser als der gesamte uebrige Stand und
machte jeden Diff unlesbar. So steht dort nur der Pfad, und das Bild liegt
mit im Repo wie jedes andere Asset auch.

Die Auswahllisten holt der Generator beim Start ueber /bilder vom Server
statt sie im Code zu pflegen. Importierte stehen deshalb sofort darin, mit
einem Stern gekennzeichnet. Beim Zuweisen folgt das Rahmenformat dem
Seitenverhaeltnis der Aufnahme.

Geprueft ueber das DevTools-Protokoll: ablegen, Bytes gegen die Quelle
vergleichen, Format, Verschieben im Bearbeiten-Modus, Export und Neustart.
Die abgelegte Datei war byteweise identisch mit der Quelle.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 18:09:40 +02:00
dejanandClaude Opus 5 1cce5ec492 Slides lassen sich anlegen, kopieren, loeschen und umsortieren
Wie viele Slides ein Post hat, stand bisher im Code. SLIDES war ein festes
Array, der Stand speicherte nur Einstellungen dazu, und die durchgehende
Flaeche lag als 5400 px in der CSS.

Jetzt entsteht SLIDES aus einem Deck. Jeder Eintrag ist entweder eine
mitgelieferte Vorlage (ref) oder eine selbst angelegte Slide; eigene Texte
liegen als Ueberschreibung daneben. Fuer Vorlagen wandert damit nur ein
Verweis in den Stand, keine Kopie -- eine Aenderung an der Vorlage im Code
kommt weiterhin bei allen an, die sie nicht angefasst haben. Haette man die
Slides vollstaendig in den Stand geschrieben, waeren sie dort eingefroren.

Unter der Slide-Auswahl stehen vier Knoepfe: neu, kopieren, loeschen,
verschieben. Die Felder pro Slide (Verschiebungen, Muster, Layout) wandern
im Gleichschritt mit. Bleibt eine einzige Slide uebrig, ist der Post ein
Einzelbild: die Kopfzeile sagt es und der ZIP-Knopf verschwindet.

Neu ist die Gruppe "Inhalt (nur diese Slide)" mit Tag, Ueberschrift,
Fließtext und der Auswahl des Screenshots. Getippt wird Text, nicht
Auszeichnung: *Wort* setzt den Akzent, ein Zeilenumbruch bricht die Zeile um.
Gespeichert wird trotzdem fertiges Markup, weil die Vorlagen es so
mitbringen. Beim Bildwechsel folgt das Rahmenformat dem Seitenverhaeltnis
der Aufnahme, sonst stuende ein Hochformat in einem Querformat-Rahmen. Alle
Screens werden vorgeladen, nicht nur die gerade benutzten -- ein Bild, das
erst beim Auswaehlen geladen wuerde, fehlte im Export.

Der Stand steht auf v6. Ein Stand ohne Deck stammt aus der Zeit fester fuenf
Slides und behaelt die Vorlagen.

Dabei abgesichert: Der Tastaturschutz rief e.target.matches auf. Ist nichts
fokussiert, ist das Ziel das Dokument und hat kein matches. Seit der
Neuaufbau den zuletzt fokussierten Knopf entfernt, ist das erreichbar.

Geprueft mit 17 Faellen ueber das DevTools-Protokoll: anlegen, tippen,
Screenshot tauschen, kopieren, schieben, loeschen, Neustart. Dazu ein Export
einer selbst angelegten Slide und der volle Durchlauf der bestehenden elf.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 17:36:54 +02:00
dejanandClaude Opus 5 21e1d3009f Post 1 Alt und Post 2 entfernt
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>
2026-08-07 17:18:56 +02:00
dejanandClaude Opus 5 94dbd5c7d4 Rueckgaengig, Slide-Tausch und ausgeblendete Tags
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>
2026-08-07 01:13:57 +02:00
dejanandClaude Opus 5 0a378896c9 Titel-Slide auf Ueberschrift und Mockup reduziert
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>
2026-08-07 00:29:36 +02:00
dejanandClaude Opus 5 344f58dde0 Titel-Mockup getauscht, Projektstand geht beim Laden nicht mehr verloren
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>
2026-08-07 00:04:34 +02:00
dejanandClaude Opus 5 46cce993ca Fertiges Laptop-Mockup auf der Titel-Slide, Tags umbenannt
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>
2026-08-06 22:58:33 +02:00
dejanandClaude Opus 5 1923fbbb15 Ueberschriften nachgezogen, eigenes Blatt fuer die Chat-Slide
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>
2026-08-06 22:16:52 +02:00
dejanandClaude Opus 5 38c256e52f Ausrichten im Bearbeiten-Modus
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>
2026-08-06 21:39:24 +02:00
dejanandClaude Opus 5 3832f82a65 Export behaelt die volle Aufloesung, Kontrolle erkennt fehlende Bilder
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>
2026-08-06 20:03:59 +02:00
dejanandClaude Opus 5 94e1b9a84a Canvas mit der Maus schieben und zoomen
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>
2026-08-06 17:58:04 +02:00
dejanandClaude Opus 5 1359c6eba8 Projektstand liegt im Repo statt nur im Browser
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>
2026-08-06 17:36:49 +02:00
dejanandClaude Opus 5 f046f6d6f0 Screens der Szene vollstaendig sichtbar einpassen
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>
2026-08-05 21:52:15 +02:00
dejanandClaude Opus 5 89434d728e Notizzettel, keine Schatten, Szenen-Mockup
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>
2026-08-05 21:36:55 +02:00
dejanandClaude Opus 5 170b72a538 Canvas-Bearbeitung, Projektspeicher und Arbeitsfläche
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>
2026-08-02 14:07:23 +02:00
raffael 124524482b HiveGrid Social: Design-Library und Post-Generator
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
2026-08-01 18:36:18 +02:00