Skip to content

Path drawing: draw_start on finished svg strokes, arrow/connector, draw_offset, svg d morph, dot at progress 0 #431

Description

@LeadcodeDev

Context

Follow-up of #376 and #377.

To do

  • draw_start is ignored on svg once draw_progress reached 1 or is not animated: the paint_resvg branch (svg.rs, around line 514) ignores it. A stroke drawn over 0–0.5 s with draw_start 0→1 over 0.9–1.4 s is never erased. This contradicts the rule doc, which says draw_start alone erases a finished stroke.
  • draw_start keyframes validate and do nothing on arrow, connector and shape.
  • draw_offset (marching the drawn window along the path) is rejected as unknown.
  • Keyframes on d with target inside an inline svg are rejected ("unknown field target"); only shape supports path morph.
  • Path morph between paths of different command structure passes validate, prints a render-time warning and holds the first shape: resample, or raise a named validation error.
  • arrow and connector paint an 8×8 dot at draw_progress 0 (fixed for line in draw_progress: a dot at progress 0 on line, and an unscaled stroke without caps while an svg draws #376, not for these two).

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.
  • cargo fmt --all --check, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace pass.
  • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions