feat: text-polish system, three new components, chromatic_wipe transition - #211
Merged
Conversation
…tion Text finishing toolkit (schema + engine): - text.states/text.swap: label-to-label swap (outgoing blurs up, incoming unblurs from below), box sized on the longest label. - text.caret: a line/block caret pinned to a typewriter's reveal head. - shimmer: light-sweep animation composited SrcATop so it only lights painted glyph pixels, not the box. - char_* presets gain direction/distance/scale_from/jitter+seed/ink_from tuning knobs. New components: - pointer: simulated mouse pointer (arrow + click ring) sharing waypoint choreography with cursor, for product walkthroughs. - number_wheel: odometer-style rolling digit reels, distinct from counter's value interpolation. - success_check: self-drawing checkmark in a halo with pop + settling rotation, replacing the hand-assembled shape+svg+scale_in stack. Engine/schema: - chromatic_wipe slide transition (red/cyan edge split at the peak, recomposing by the end). - animated_box_size and shimmer_effect regression tests; chromatic_wipe transition test. Docs: CLAUDE.md and README updated for the new components/finishes; new skill rule pages for card-resize, char-animation-tuning, hyperframes mapping, number-wheel, pointer walkthrough, streaming-text, text-polish. Not included: taap-it.mp4 (untracked stray render output in repo root, left out of this commit).
ink_from_starts_at_the_given_colour_and_settles_to_the_texts_own used char_scale_in specifically because it "leaves alpha alone" — but the preset ties its scale to the same progress `t` the colour ramp uses, so at t=0.1 the glyph paints at 10% of a 90px font. That's thin enough that anti-aliasing can leave zero pixels at exactly alpha==255, depending on subpixel glyph placement — which differs by Skia build/ font metrics between machines, hence green locally and red in CI. The fill colour is uniform across a unit regardless of AA coverage, so weighting the mean by alpha reads the same value without requiring any pixel to be fully opaque.
…comments The seven new .claude/skills/rustmotion/rules/*.md pages (plus the matching additions to CLAUDE.md and the arc recipe in motion-path.md) were authored in French, following the existing convention for that directory — but that convention wasn't the right call for net-new content, so they're English now. Pre-existing French elsewhere in those two files is untouched. Also trimmed a handful of comments in pointer.rs and text.rs that restated the line right below them without adding anything (per-vertex labels on a coordinate literal, "Draw fill" above a call to draw_text_with_fallback). Read through number_wheel.rs and success_check.rs too — their comments carry real rationale (why a scale curve is isolated, why the stroke waits on the halo) rather than padding, so left as-is.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Text finishing toolkit (schema + engine):
New components:
Engine/schema: