Skip to content

M8.19: blend spine and keys editable on the canvas - #191

Merged
bflatastic merged 2 commits into
mainfrom
m8-blend-spine
Oct 6, 2026
Merged

bflatastic merged 2 commits into
mainfrom
m8-blend-spine

Conversation

@bflatastic

Copy link
Copy Markdown
Member

A blend's spine and its key objects can now be edited directly on the canvas.

M8.19: spine and keys on the canvas

  • Spine editing
    • A selected blend shows its spine.
    • Direct Selection drags spine points and handles.
    • The Pen tool adds and deletes points on the spine of a selected blend.
    • New commands: object.blend.spine.moveAnchor, addAnchor and removeAnchor. object.blend.info now lists the spine.
  • Straight spines become paths
    • On the first edit, a blend's straight spine becomes a real path, with its points pinned to the keys (new append-only field BlendSpec.keyAnchors).
    • Moving a key moves its spine end, and moving a spine end moves its key.
    • Older spines, and spines set with Replace Spine, still spread the keys evenly.
  • Picking keys: hit-testing now goes into blend keys (doc/hit.rs). Direct and Group Selection pick keys, while the steps still select the blend as a whole. Edits to a key redraw the blend live.
  • Release leaves the spine as an unpainted path below the keys, and the result gains spines.
  • Edited spines are kept by Reverse Spine, Reverse Front to Back and adding keys.
  • Shared code: the handle logic was pulled into Anchor::set_handle in geom, which path.setHandle now reuses.
  • ROADMAP: the M8 row lists this change.

Checks

  • This is the last of a six-PR stack on main (M8.12, M8.18, then this PR). Conflicts in shared files were merged token by token, keeping both sides.
  • cargo xtask ci passes all 7 steps (fmt, clippy, tests, assets, brands, layers, wasm) at the top of the stack, with 3,178 tests.
  • Nothing dropped. object.blend.release's result gains spines; the ids are unchanged.

🤖 Generated with Claude Code

bflatastic and others added 2 commits October 6, 2026 11:12
A selected blend shows its spine. Direct Selection drags spine points
and handles, the Pen tool adds and deletes points on a selected
blend's spine (object.blend.spine.moveAnchor/addAnchor/removeAnchor).
The straight spine becomes a path on the first edit, its points pinned
to the key objects (append-only BlendSpec.key_anchors): moving a key
moves its end of the spine and the other way round; spines from older
files and Replace Spine still spread the keys evenly. Direct and Group
Selection pick blend keys on the canvas, edits redraw the blend live,
and Release leaves the spine as a path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant