You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Animations touching only border_radius, clip_path_progress or font_size are never applied #426
Found while verifying #373 and #384 (both closed), and reported independently by a user for font_size.
Cause
props_has_paint_overrides (crates/rustmotion-components/src/box_builder.rs, around line 1039) is an allow-list (translate, scale, rotation, opacity, blur, glow, perspective, width, height). apply_animated_props is only called when it returns true, so an animation that touches only a property missing from that list is dropped. Adding any translate_x track to the same node "unlocks" it.
Repros
Animating border_radius validates and has no effect #373: {"type":"div","style":{"width":200,"height":200,"background":"#000000","animation":[{"name":"keyframes","keyframes":[{"property":"border_radius","keyframes":[{"time":0,"value":100},{"time":1,"value":100}]}]}]}} → sharp corners at frame 15. On a shaperect, corners stay sharp even with another track present.
font_size keyframes on a text (40 → 200) are accepted and the text keeps its initial size.
To do
Make every animated property reach the render, without a hand-maintained allow-list.
Audit every animatable property for the same defect (letter_spacing, stroke_width, gap, padding, …) with one render test per property animated alone.
border_radius animation on shape.
font_size animation applied to text layout and rendering.
Definition of done
A test that fails on current main is written first. For anything visual it is a render test (scenario → frame → pixel assertions); tests that build AnimatedProperties by hand are not enough — that is exactly how the regressions listed here slipped through.
Each item is verified end to end: scenario JSON, rustmotion validate, render, image inspected.
Vocabulary changes update crates/rustmotion/skills/SKILL.md, the relevant rules/ file and the exported schema. A field the validator accepts must have an effect, otherwise the validator rejects it or warns.
No comments in Rust code (repository rule). Commits follow <type>: <verb> <message>. No AI attribution in commits, PRs or issue comments.
Activity