Animation: Keys kopieren, einfügen, duplizieren; Frames einfügen und entfernen #102

Closed
opened 2026-09-16 21:23:31 +02:00 by meleki · 1 comment
Owner

Aus #97, Entscheidung 20: v1 kann Keys auswählen, verschieben, löschen. Was fehlt:

  • Ctrl+C / Ctrl+V auf der Key-Auswahl: eingefügt wird relativ zum Playhead, in dieselben Zeilen. Beim Einfügen in eine andere Zeile nur, wenn die Property dieselbe Art hat.
  • Duplizieren per Alt+Drag (Kopie wandert, Original bleibt).
  • Frames einfügen / entfernen am Playhead: alle Keys rechts davon rücken um n Frames, über alle Zeilen. Das ist heute die einzige Möglichkeit, eine Animation „in der Mitte länger zu machen“, und geht nur per Gummiband + Drag.
  • Landen auf einen bestehenden Key ersetzt ihn (dieselbe Regel wie beim Verschieben).

Tests: Kommandos mit Undo im Unit-Test, e2e am Tab (Einfügen relativ zum Playhead).

Aus #97, Entscheidung 20: v1 kann Keys auswählen, verschieben, löschen. Was fehlt: - **Ctrl+C / Ctrl+V** auf der Key-Auswahl: eingefügt wird relativ zum Playhead, in dieselben Zeilen. Beim Einfügen in eine andere Zeile nur, wenn die Property dieselbe Art hat. - **Duplizieren** per Alt+Drag (Kopie wandert, Original bleibt). - **Frames einfügen / entfernen am Playhead**: alle Keys rechts davon rücken um n Frames, über alle Zeilen. Das ist heute die einzige Möglichkeit, eine Animation „in der Mitte länger zu machen“, und geht nur per Gummiband + Drag. - Landen auf einen bestehenden Key ersetzt ihn (dieselbe Regel wie beim Verschieben). **Tests:** Kommandos mit Undo im Unit-Test, e2e am Tab (Einfügen relativ zum Playhead).
admin added this to the Development project 2026-09-16 21:24:29 +02:00
admin moved this to Next in Development on 2026-09-17 06:47:18 +02:00
Author
Owner

Umgesetzt in bf02c9e (Wiki f0554dd).

Bedienung

  • Ctrl+C / Ctrl+V: kopiert die gewählten Keys; Einfügen setzt den frühesten auf den Playhead-Frame, Abstände bleiben. Ziel sind die Herkunftszeilen; Keys aus nur einer Zeile landen in der gewählten Zeile, wenn deren Art passt. In einer anderen Animation zählt die Zeile mit derselben Property, Zeilen ohne Gegenstück fallen mit Hinweis weg. Ein eingefügter Key ersetzt einen vorhandenen auf demselben Frame.
  • Ctrl+Drag (auf dem Mac auch Cmd) dupliziert: Original bleibt, die Kopie landet beim Loslassen. (Ursprünglich Alt+Drag, auf Wunsch vor dem Commit auf Ctrl umgestellt.)
  • Rechtsklick in die Timeline: Copy, Paste at frame N, Insert frames at N…, Remove frames from N…. Die beiden Frame-Einträge fragen die Anzahl ab (Standard 1) und zeigen vorher, was passiert. Einfügen schiebt alle Keys ab dem Playhead in allen Zeilen nach hinten, Entfernen löscht die Keys in den entfernten Frames und zieht den Rest nach. Jeder Schritt ist ein Undo; Schritte ohne Wirkung werden abgelehnt.
  • Grenze: Solange Keys in der Zwischenablage liegen, gehört Ctrl+V im Animation-Tab dem Key-Paste; Bilder werden aus einem anderen Tab eingefügt.

Tests (lokal)

npm run check                        → 92 Files, 1227 Tests (vorher 1222), CHECK EXIT 0
npm run build                        → BUILD EXIT 0
GM_STEPS=24,25,26 (frisch geseedet)  → ALL PASSED – 106 checks (vorher 101)
  • 5 neue Unit-Tests (Paste relativ zum Frame samt Easing, gewählte Zeile nur bei gleicher Art, andere Animation, Duplizieren, Frames einfügen/entfernen, jeweils mit Undo).
  • Gegenprobe mit 3 eingebauten Fehlern (Duplizieren = Verschieben, gewählte Zeile ignoriert, Entfernen behält Keys): je 1 Test rot, danach Original zurück.
  • e2e-Modul 25: +5 Checks mit echten Gesten (Gummiband → Ctrl+C → Playhead 12 → Ctrl+V, Ctrl+Drag, Rechtsklick → Insert frames → 3). Harness kennt dafür jetzt die Tasten c, v und den Modifier alt.
  • Check-Summe in README und Wiki auf 948 (943 + 5, gerechnet). CI auf bf02c9e wurde nicht abgewartet.
Umgesetzt in `bf02c9e` (Wiki `f0554dd`). **Bedienung** - **Ctrl+C / Ctrl+V:** kopiert die gewählten Keys; Einfügen setzt den frühesten auf den Playhead-Frame, Abstände bleiben. Ziel sind die Herkunftszeilen; Keys aus nur einer Zeile landen in der gewählten Zeile, wenn deren Art passt. In einer anderen Animation zählt die Zeile mit derselben Property, Zeilen ohne Gegenstück fallen mit Hinweis weg. Ein eingefügter Key ersetzt einen vorhandenen auf demselben Frame. - **Ctrl+Drag** (auf dem Mac auch Cmd) dupliziert: Original bleibt, die Kopie landet beim Loslassen. (Ursprünglich Alt+Drag, auf Wunsch vor dem Commit auf Ctrl umgestellt.) - **Rechtsklick** in die Timeline: *Copy*, *Paste at frame N*, *Insert frames at N…*, *Remove frames from N…*. Die beiden Frame-Einträge fragen die Anzahl ab (Standard 1) und zeigen vorher, was passiert. Einfügen schiebt alle Keys ab dem Playhead in allen Zeilen nach hinten, Entfernen löscht die Keys in den entfernten Frames und zieht den Rest nach. Jeder Schritt ist ein Undo; Schritte ohne Wirkung werden abgelehnt. - Grenze: Solange Keys in der Zwischenablage liegen, gehört Ctrl+V im Animation-Tab dem Key-Paste; Bilder werden aus einem anderen Tab eingefügt. **Tests (lokal)** ``` npm run check → 92 Files, 1227 Tests (vorher 1222), CHECK EXIT 0 npm run build → BUILD EXIT 0 GM_STEPS=24,25,26 (frisch geseedet) → ALL PASSED – 106 checks (vorher 101) ``` - 5 neue Unit-Tests (Paste relativ zum Frame samt Easing, gewählte Zeile nur bei gleicher Art, andere Animation, Duplizieren, Frames einfügen/entfernen, jeweils mit Undo). - Gegenprobe mit 3 eingebauten Fehlern (Duplizieren = Verschieben, gewählte Zeile ignoriert, Entfernen behält Keys): je 1 Test rot, danach Original zurück. - e2e-Modul 25: +5 Checks mit echten Gesten (Gummiband → Ctrl+C → Playhead 12 → Ctrl+V, Ctrl+Drag, Rechtsklick → Insert frames → 3). Harness kennt dafür jetzt die Tasten `c`, `v` und den Modifier `alt`. - Check-Summe in README und Wiki auf **948** (943 + 5, gerechnet). CI auf `bf02c9e` wurde nicht abgewartet.
admin moved this to Done in Development on 2026-09-17 13:02:09 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#102