feat(studio): inspector round 2 — color editors, effective defaults, timing UX#73
Merged
Merged
Conversation
…timing UX User-feedback iteration on the schema-driven inspector: - ColorList kind: color arrays render one picker+hex row per entry with add/remove (typed whole-array writes); Fill kind for string|gradient unions with a Single/Linear/Radial mode selector, per-stop pickers and angle; existing values detect their mode - effective-view: displayed values come from a typed serde round-trip that fills every #[serde(default)]; absent-from-raw fields carry a dimmed DEFAULT marker; writes still target the raw document. Fixes the reported sync bug (gauge show_value now shows checked like the render) and gives font-weight/font-family their real defaults - start_at/end_at leave the generic list for a dedicated Timing section: Visible from/until (s), bounded by the containing scene's duration (scenes and composition pointers), placeholders and a visibility-window help line; clearing restores the default window - multiline strings (code/content/message or values with newlines) render as monospace textareas
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.
Closes #72 — user-feedback iteration on #71, with screenshots.
colorsarrays get one ColorPicker+hex row per entry with add/remove ("+ Add color"); fill-type unions (shapefill) get a Single / Linear / Radial segmented mode with per-stop pickers and an angle input — existing values auto-detect their mode; writes produce the hex string or the gradient object.show_valuesync bug): displayed values come from a typed serde round-trip (from_value::<Component>→to_value) that fills every serde default; fields absent from the raw carry a dimmed DEFAULT marker; writes keep targeting the raw. Gaugeshow_valuenow shows checked like the render; weight shows "Regular · 400"; font-family placeholders "Inter". Invalid elements fall back to the raw view.start_at/end_atbecome "Visible from / until (s)", bounded by the containing scene's duration (scenes and composition pointers), placeholders "scene start"/"end of scene", help line "Visibility window — the element keeps its layout slot outside it". Clearing restores the default window.code,content,message, or any value with newlines) render as monospace textareas.v1 limits noted: no stop-position editing on gradients, no color-row reordering, no "unset" from the fill segmented — all editable via source. TDD honesty: tests written first as stubs but the red run wasn't executed for this batch (enum-variant compilation coupling); 9 new tests all green.
Note:
examples/rustmotion-promo.jsonshows working-tree drift from the user's own studio test session — deliberately excluded from this PR.Verify:
cargo check -p rustmotion-studio✓ ·cargo test --workspace→ 384 passed ✓ ·cargo fmt --check✓ · clippy gated ≤1 ✓