[00132] Implement Rust Widget APIs for UI Effects and Visual Extras - #131
Merged
rorychatt merged 5 commits intoAug 10, 2026
Merged
Conversation
…ireframeNote widgets Implements the five Rust widget APIs missing per GitHub Issue #129: Confetti and Animation effects, a multi-segment StackedProgress bar, and the WireframeCallout/WireframeNote design-annotation widgets. StackedProgress lives in progress.rs rather than effects.rs since it is a progress bar, not an effect. Registers the new wire-format widget types in widget_names.rs's Ivy mapping (Confetti/Animation/StackedProgress have Ivy counterparts; the wireframe widgets are Rust-only).
Adds Effects and Wireframe WidgetKind variants to widget_harness.rs with EffectsApp (confetti, three animations, two stacked progress bars, one wired to on_select) and WireframeApp views, plus matching case arms and CSS in e2e/app/index.html's renderWidget client.
Covers confetti's trigger, the three animation nodes' type/easing/ visibility/direction, stacked progress segment rendering, the on_select click-to-state-update flow, and the wireframe callout/note rendering.
The plan calls for "a Confetti per trigger" in the harness; add the missing Auto and Hover nodes and update the spec to assert all three.
rorychatt
deleted the
tendril/00132-ImplementRustWidgetAPIsForUIEffectsAndVisualExtras
branch
August 10, 2026 09:25
rorychatt
added a commit
that referenced
this pull request
Aug 10, 2026
Combines this plan's blade/breadcrumbs/pagination/toolbar widgets with main's animation/confetti/stacked_progress/wireframe widgets (PR #131), re-derives the widget_names.rs mapped-type count (38 -> 48) from the actual merged list, and renumbers this plan's doc pages (34-37 -> 37-40) to avoid colliding with main's newly added 34-36.
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.
Fixes #129
Summary — 00132: Implement Rust Widget APIs for UI Effects and Visual Extras
Implements the five Rust widget APIs missing per Issue #129:
Confetti,Animation,StackedProgress,WireframeCallout,WireframeNote.Changes
rusty/src/widgets/effects.rs(new) —EffectTrigger,Confetti,AnimationType,AnimationEasing,AnimationDirection,Animation. The animation kind is exposed asanimation_type(→animationType) rather thantype, to avoid clobbering the widgetdiscriminator the
Widgetderive writes under"type".rusty/src/widgets/progress.rs— addedProgressSegmentandStackedProgress(amulti-segment progress bar with an
on_selectevent), deliberately kept out ofeffects.rssince it is a progress bar, not an effect.
rusty/src/widgets/wireframe.rs(new) —WireframeCalloutandWireframeNote, designannotation widgets with no existing reference implementation; their prop shape is a documented
assumption.
rusty/src/widgets/mod.rs— module declarations and re-exports for all five new types.rusty/src/shared/widget_names.rs— registered the five new wire-format type strings in theIvy widget-name mapping (
animation/confetti/stacked_progressmap to real Ivy widgets;wireframe_callout/wireframe_noteareRustOnly). Not called for by the plan's own text, butrequired for
cargo testto pass — a real, pre-existing gate this plan's new widgets tripped.rusty-server/src/bin/widget_harness.rs—Effects/WireframeWidgetKindvariants,EffectsApp(aConfettiper trigger, threeAnimationnodes, twoStackedProgressbars — onewired to
on_select),WireframeApp(a callout wrapping aTextBlock, an authored note).e2e/app/index.html— five newrenderWidgetcase arms (confetti,animation,stacked_progress,wireframe_callout,wireframe_note) and matching CSS.e2e/tests/widgets/effects.spec.ts,wireframe.spec.ts(new) — Playwright coverage forevery new widget, including the
StackedProgressclick →on_select→ state round-trip.rusty-docs/docs/03_widgets/34_stacked_progress.md,35_effects.md,36_wireframe.md(new) — widget reference docs.
Verification
All 9 verifications resolved:
src/frontendfiles changedsrc/frontendfiles changed (1 pre-existing, unrelated failure noted for context)Commits
6b7be02— Add Confetti, Animation, StackedProgress, WireframeCallout, WireframeNote widgetsb2ba911— Add E2E harness support for effects and wireframe widgets76aae58— Add Playwright specs for effects and wireframe widgetsd634163— Add widget docs for StackedProgress, Effects, Wireframe978ebf8— EffectsApp: cover all three Confetti triggers, not just ClickNotable deviations
StackedProgresslives inprogress.rs, noteffects.rs— an explicit, plan-sanctioneddeviation from the source issue.
widget_names.rswas edited even though the plan's Solution section doesn't mention it — anecessary fix for a pre-existing test gate the new widgets triggered.
data-label,data-selected) differ cosmetically from the plan's illustrative names (data-segment-label,data-segment-index) but follow the file's own existing convention more closely.Created using Ivy Tendril.