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
char_* presets: rotate_from, scale/baseline jitter, reflow (undelivered parts of #363) #429
#363 was closed after fixing char_* on rich_text/gradient_text, but three requested capabilities were not delivered and are rejected as unknown fields. rules/char-animation-rich-and-gradient-text.md only notes them as absent.
To do
rotate_from (+ rotate_origin): each unit starts tilted and straightens while it settles (staircase word reveal).
scale_jitter / baseline_jitter with seed: deterministic per-unit size and baseline variation (letters born at different sizes, then aligning).
reflow / reflow_easing on char_* presets and typewriter: a centred line stays centred while it is being written, instead of growing from a fixed left edge.
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.
All three items are on CharAnimationTiming on main — rotate_from/rotate_origin, scale_jitter/baseline_jitter with seed, and reflow/reflow_easing (merged in #450).
The two gaps #450 asked to be read before closing are both resolved, each the way the repository rule allows — a field the validator accepts must have an effect, or the validator rejects it or warns:
reflow on rich_text is named rather than silently inert. check_reflow_reaches_this_component (merged in fix(validate): stop the false positives, name the right edge, warn once #449) emits reflow has no effect on rich_text, because that component's char animation lays out from token positions it precomputes independently.
reflow on typewriter is rejected outright, verified just now: unknown field reflow, expected one of delay, duration, loop, …, and the component is refused rather than silently dropped. AnimationEffect::Typewriter carries a bare AnimationTiming, and putting reflow there would make it inert on every other preset — the same violation, moved.
Whether typewriter should gain real reflow is a feature question, not this issue's unfinished business: #450 recorded that the original complaint did not reproduce. Open a new issue if a scenario shows it.
Activity
feat(char): add rotate_from, scale and baseline jitter, and reflow
feat(char): add rotate_from, scale and baseline jitter, and reflow
feat(char): add rotate_from, scale and baseline jitter, and reflow (#450
LeadcodeDev commentedon Sep 29, 2026
All three items are on
CharAnimationTimingonmain—rotate_from/rotate_origin,scale_jitter/baseline_jitterwithseed, andreflow/reflow_easing(merged in #450).The two gaps #450 asked to be read before closing are both resolved, each the way the repository rule allows — a field the validator accepts must have an effect, or the validator rejects it or warns:
reflowonrich_textis named rather than silently inert.check_reflow_reaches_this_component(merged in fix(validate): stop the false positives, name the right edge, warn once #449) emitsreflow has no effect on rich_text, because that component's char animation lays out from token positions it precomputes independently.reflowontypewriteris rejected outright, verified just now:unknown fieldreflow, expected one ofdelay,duration,loop, …, and the component is refused rather than silently dropped.AnimationEffect::Typewritercarries a bareAnimationTiming, and puttingreflowthere would make it inert on every other preset — the same violation, moved.Whether
typewritershould gain real reflow is a feature question, not this issue's unfinished business: #450 recorded that the original complaint did not reproduce. Open a new issue if a scenario shows it.