- Canvas stage: plain left-click in the empty content area (outside
the canvas rectangle) now starts a pan. Ctrl+left-click still pans
anywhere, middle-click unchanged. Only pure left-click qualifies
(any modifier leaves the old routing intact).
- Export rebrand Animatr → RUWIO for everything user-visible:
- Default filenames: projekt.animatr.json → projekt.ruwio.json;
animatr-runtime.js → ruwio-runtime.js; App's export fallback
base animatr → ruwio.
- Generated comment headers in runtime/scene/bundled scripts.
- Console warn prefix in the runtime and the scene store.
- Example HTML title, heading, and embed-usage snippet.
- parseProject error message.
- ExportDialog copy.
- RUNTIME_VERSION 14 → 15 so cached runtimes reload.
- On-disk magic stays `animatr-project` and window.AnimatrPlayer /
__animatrPending / localStorage & IndexedDB keys are untouched so
old project files and previously-exported HTML keep working.
Regression tests: legacy magic still parses; parseProject error
mentions RUWIO and not Animatr; runtime/scene/bundled scripts and
example HTML all carry the new brand; console prefix is [ruwio].
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
149 lines
9.3 KiB
Plaintext
149 lines
9.3 KiB
Plaintext
rotation povot gibts nur bei rect und das objekt rotiert nicht um den pivot sondern immer ums zentrum
|
|
|
|
assets sidebar braucht kleine preview thumbnails die man an und aus machen kann
|
|
|
|
bei bedarf muss man eine spur in der timeline auf "separate position and rotation" umstellen können. dazu führen wir ein context-menü auf spuren ein
|
|
|
|
die animations-engine muss von der eigentlichen animation getrennt sein weil man ja auch mehrere animationen auf einer webseite haben kann und dann will man das nicht alles redundant haben
|
|
|
|
die aktuell nicht bearbeiteten timelines müssen etwas weniger opacity haben
|
|
|
|
control-drag muss die bühne verschieben
|
|
|
|
bei timeline zoom wird bei der aktiven spur der keyframe und connect line vorne nicht weggeschnitten
|
|
|
|
|
|
der playhead soll kein gedrehtes quadrat sein so wie die keyframes sondern ein aufrechtes rect
|
|
|
|
|
|
baue eine frontent testing engine. mit shift+control+alt+t muss such die app dann selbst durchtesten. schreibe tests für die funktionen die wir bisher haben
|
|
|
|
|
|
fehlerreport mit allen relevanten informationen muss automatisch in die zwischenablage kopiert werden. schreib dir da alles rein was du zum fixen brauchst
|
|
|
|
rechtsklick auf keyframe muss die auswahl von "still frame" bieten. von einem ein still frame aus findet keine tween animation statt. das objekt bleibt einfach stehen. der keyframe wird als dot dargestellt statt als diamant
|
|
|
|
text-objekte muss man neben rect und kreis zur verfügung haben
|
|
|
|
ich möchte ein fullscreen preview auf shift-space
|
|
|
|
|
|
bitte fehlende tests ergänzen
|
|
|
|
neues feature: clips. ein clip ist eine eigene timeline. diese timelines sind bibliotheks-objekte und können in die haupt-timeline gezogen werden. sie landen auf einer oder mehreren clip-spuren. ein clip wird dort nur als block angezeigt, nicht als keyframes. man kann den clip durch doppelklick aber öffnen wie die haupt-timeline. durch DnD kann man die position des clips in der timeline verschieben.
|
|
|
|
die clips muss man am anfang und ende durch ziehen verkürzen können. verkürzungen müssen in der UI sichtbar sein durch anfasser die man auch wieder anders justieren kann
|
|
|
|
für user-interaktionen (wie neues text-objekt) brauchen wir eigene popups. keine browser stock confirms
|
|
|
|
<button data-v-228c0a9d="" class="breadcrumb-btn"> ← Haupt-Timeline </button> verdeckt die timeline switches. das muss etwas weiter oben am bottom des asset asides angezeigt werden
|
|
|
|
den zurück pfeil bitte als phosphor icon machen
|
|
|
|
spuren muss man einfärben können. wir bieten die grundfarben als color tiles bei rechtsklick auf die spur an gilt auch für clipspuren
|
|
|
|
clips draggen darf nur auf der x-achse gehen. y verschiebung darf nicht möglich sein - das ist irreführend
|
|
|
|
das timeline panel muss man per anfasser höher ziehen können
|
|
|
|
spuren muss man locken können. sie dürfen dann nur noch die halbe höhe haben und an der zeitlinie muss erkennbar sein das nicht bearbeitet werden kann
|
|
|
|
per box select muss man über mehrere spuren keyframe multiselection durchführen können um sie zusammen in der zeit zu verschieben
|
|
|
|
rect circle und text brauchen wir nicht als instanzen in der lib. da tauchen nur importierte elemente auf. diese muss man auch mehrmals einfügen können per DnD oder "+"
|
|
|
|
ALLE texte der gui bitte in englisch
|
|
|
|
|
|
wir machen mal ein about popup und verwalten ab sofort eine version. wir starten mit 0.1.0
|
|
about öffnet bei click auf den app namen oben links
|
|
|
|
ein element rein draggen muss das element (grafik) als draggable anzeigen, nicht den bibliothekseintrag
|
|
|
|
context menüs ragen unten immernoch aus dem viewport raus
|
|
|
|
rechts click menu muss überall unterdrückt werden wo wir noch keins haben. das browser context menu darf nirgends angezeigt werden
|
|
|
|
maskenlayer sind tracks mit einem pfad-objekt (circle, rect, text) alles unter einem masken track wird davon maskiert. allerdings immer nur in einer gruppe. elemente außerhalb der gruppe mit der maske werden normal dargestellt. es kann mehrere masken tracks geben. ein maskentrack kann entweder positiv oder negativ maskieren. ein maskenlayer mus zwei ansichten haben: normale elemente (damit man sie zieht zum bearbeiten) und masking (damit sie maskieren)
|
|
|
|
|
|
tests tests tests ;)
|
|
|
|
tasten i und o setzen die brackets. die brackets müssen orange. wenn der playhead auf der bracket ist hat der playhead vorrang beim draggen. heißt wenn die maus über dem playhead ist bewegt man den egal ob da auch eine klammer ist. klammern und playhead müssen weiß werden bei hover (bzw. schwarz in light theme)
|
|
|
|
bei langer timeline (wenn man hin und her scrollen kann) liegen playhead und needle sowie die klammern über der track-label-spalte. die track labels müssen z-index ganz nach oben - durekt unter sämtlichen popups etc.
|
|
|
|
kann der animationspfad sich live mit ändern wenn man das objekt bewegt?
|
|
|
|
|
|
|
|
wir bauen einen button schritt für schritt:
|
|
zuerst nehmen wir das konzept der clips. ein clip kann ja in der timeline frei positioniert werden.
|
|
ein button kann das auch, nur das er grundsätzlich jede beliebige länge auf der zeitachse haben kann.
|
|
er ist ein loop-objekt. dadurch loopt er seine zeitachse auch durch wenn die haupt zeitliste auf pause steht.
|
|
von seinem mouse-hover state hängt ab, wencher zusätzliche track on top sichtbar wird.
|
|
der grundloop läuft immer, aber
|
|
|
|
die states sind verschiedene zeitleisten innerhalb des buttons die umgeschaltet werden
|
|
|
|
|
|
|
|
wir machen 2 arten von buttons. damit wir erstmal weiter kommen zuerst das sehr simple konzept des 5 frame buttons.
|
|
normal / hover / pressed / disabled / hitarea
|
|
die zeitachse sieht bei diesem objekt etwas anders aus als eine normale zeitleiste: es gibt nur diese 5 frames (das kann man dann auch breiter darstellen)
|
|
im ersten frame platziert man die grundgrafik und mutiert die in den 4 weiteren
|
|
das hitarea ist nur ein rect oder circle auf den die maus reagiert. das bauen wir erstmal so.
|
|
layer kann man prinzipiell auch hier so viele haben wie man will, die müssen aber nicht zwingend in allen 4 grafik-frames auch was sichtbares beinhalten.
|
|
hast du das verstanden? gibts fragen?
|
|
|
|
|
|
|
|
die tracklisten-spalte muss genauso breit wie die assets spalte darüber. .name-spacer in.scrub-bar muss fixed sein und darf sich beim horizintalen scrollen der tracks nicht da wegbewegen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
der button der aus der clip-editor ansicht raus führt sieht gut aus
|
|
<div data-v-7a7a37b1="" class="scope-footer"><button data-v-7a7a37b1="" class="scope-back"><svg data-v-7a7a37b1="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="12" height="12" fill="currentColor"><g><path d="M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z"></path></g></svg> Main timeline</button><span data-v-7a7a37b1="" class="scope-current" title="Clip"><svg data-v-7a7a37b1="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="12" height="12" fill="currentColor"><g><path d="M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,88h80v80H40Zm96-16V56h32V72Zm-16,0H88V56h32Zm0,112v16H88V184Zm16,0h32v16H136Zm0-16V88h80v80Zm80-96H184V56h32ZM72,56V72H40V56ZM40,184H72v16H40Zm176,16H184V184h32v16Z"></path></g></svg> Clip</span></div>
|
|
der button der aus der button ansicht raus führt soll genauso sein, das ist momentan ein kleiner exit button links neben dem state switch
|
|
|
|
|
|
also ich würde stark bevorzugen wenn du den code ließt statt immer den vite dev zu nehmen
|
|
ich kann das visuell kontrollieren und dir screenshots von den sachen machen. und der handle ist genau wie vorher
|
|
|
|
diese spur darf nur erscheinen wenn man überhaupt schon mindestens einen clip hat.
|
|
<div data-v-228c0a9d="" class="track clip-track-dropzone"><span data-v-228c0a9d="" class="dropzone-hint">Drop a clip here to add a new track</span></div>
|
|
und der text muss immer zentriert stehen bleiben und darf nicht horizontal mit der timeline mitgescrollt werden
|
|
|
|
im button editor zeigt das preview mit angewendeten masken die hauptbühne an - nicht die button-bühne
|
|
|
|
die farbe einer gruppe muss automatisch auf alle kinder angewendet werden. es sei denn man färbt einen track HINTERHER anders ein
|
|
|
|
im button dürfen keyframes nur auf den 4 states einrasten
|
|
|
|
der clip-art drawer muss bevor er reingeschoben wird schon so tun als hätte er die volle breite damit die thumbs nicht hin und her purzteln beim verbreitern. die position von den thimbs muss vor dem slide in feststehen
|
|
|
|
irgendwie ist das verschieben von elementen kaputt gegangen. in dem szenario habe ich 2 einfache elemente auf der bühne. wenn ich das eine verschiebe verschiebt sich das andere und das was ich eigenlich verschoben habe snapt zurück, das betrifft das drüber liegende element. bei dem unteren layer gehts. das war mir aber schon vorher mal aufgefallen in einem anderen film
|
|
|
|
shadow einstellungen auf keyframes werden in preview und editor nicht gleich behandelt. eine animation des shadows findet im preview nicht statt
|
|
|
|
|
|
|
|
die inline hilfe texte in den settings sind zu klein. das kann man nicht lesen
|
|
|
|
warum ist eigentlich still frame easing disabled? man muss doch zu einem still-frame hin easen können. verstehe den grund nicht
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ich würde an dieser stelle mal ein paar regression-tests hinzufügen und dann committen
|
|
|
|
wenn man den leeren teil des content-views zieht (außerhalb der canvas constraints) muss canvas move auch ohne control key gehen
|
|
|
|
export dateien heißen noch animatr. wir haben in RUWIO umbenannt |