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>
92 lines
1015 B
JSON
92 lines
1015 B
JSON
{
|
|
"bandTon": "orange",
|
|
"bgState": [
|
|
{
|
|
"bg": "raster",
|
|
"int": "dezent"
|
|
},
|
|
{
|
|
"bg": "raster",
|
|
"int": "dezent"
|
|
},
|
|
{
|
|
"bg": "raster",
|
|
"int": "dezent"
|
|
},
|
|
{
|
|
"bg": "raster",
|
|
"int": "dezent"
|
|
},
|
|
{
|
|
"bg": "raster",
|
|
"int": "dezent"
|
|
}
|
|
],
|
|
"current": 0,
|
|
"deck": [
|
|
{
|
|
"ref": "chat",
|
|
"werte": {}
|
|
},
|
|
{
|
|
"ref": "kanaele",
|
|
"werte": {}
|
|
},
|
|
{
|
|
"ref": "aufgabe",
|
|
"werte": {}
|
|
},
|
|
{
|
|
"ref": "menue",
|
|
"werte": {}
|
|
},
|
|
{
|
|
"ref": "mobil",
|
|
"werte": {}
|
|
}
|
|
],
|
|
"edits": [
|
|
{
|
|
"headline": {
|
|
"dy": 3
|
|
}
|
|
},
|
|
{
|
|
"headline": {
|
|
"dy": 3
|
|
}
|
|
},
|
|
{
|
|
"headline": {
|
|
"dy": 3
|
|
}
|
|
},
|
|
{
|
|
"headline": {
|
|
"dy": 3
|
|
}
|
|
},
|
|
{
|
|
"headline": {
|
|
"dy": 3
|
|
}
|
|
}
|
|
],
|
|
"frameStyle": "chamfer",
|
|
"layoutState": [
|
|
"standard",
|
|
"standard",
|
|
"standard",
|
|
"standard",
|
|
"standard"
|
|
],
|
|
"rasterAn": "punkte",
|
|
"superSample": 2,
|
|
"tagOut": "an",
|
|
"textMitte": "an",
|
|
"tilt": "an",
|
|
"v": 7,
|
|
"variant": "hell",
|
|
"view": "streifen"
|
|
}
|