openpencil/crates
Kayshen-X b7bcd9db12 feat(canvas): ellipse arc drag handles
Adds the canvas drag handles that author an ellipse arc — start
angle, sweep (end) angle, and the donut inner-radius.

- op-editor-ui: `ArcHandle` enum + `arc_handle_positions` (doc-space
  positions of the 3 handles for an Ellipse scene node), re-exported
  from `widgets`. The canvas overlay paints them as filled
  primary-tinted dots for a single-selected Ellipse with the Select
  tool.
- op-host-native: `ArcHandleDragState` + `arc_handle_hit` (checked
  before the resize handles since the sweep grip can overlap the
  right-mid resize handle). Press starts the drag with a history
  snapshot; each move recomputes start/sweep/inner from the cursor
  via `arc_drag_command` and re-applies `SetEllipseArc` (no-history
  apply); release commits the snapshot only when the arc changed.
  Dragging the start handle keeps the end fixed; a sweep collapsing
  to 0 snaps to a full 360° circle.

op-editor-ui 145 / op-host-native 64 / op-host-desktop 21 tests
green (+2 arc-handle-position units).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-17 17:26:37 +08:00
..
op-ai feat: close six TS-parity gaps in the Rust shell 2026-05-17 13:03:11 +08:00
op-app refactor(rust): add op-app composition-root crate 2026-05-16 23:57:03 +08:00
op-cli feat: close six TS-parity gaps in the Rust shell 2026-05-17 13:03:11 +08:00
op-codegen fix: clear clippy -D warnings across the workspace 2026-05-17 01:26:29 +08:00
op-editor-core feat(panels): shadow/blur parameter steppers in the Effects section 2026-05-17 14:38:26 +08:00
op-editor-ui feat(canvas): ellipse arc drag handles 2026-05-17 17:26:37 +08:00
op-figma fix(figma): codex review round 2 — pre-validation allocation guards 2026-05-17 16:43:44 +08:00
op-host-desktop feat(editor): add node-effect add/remove commands + MCP tools 2026-05-17 13:48:31 +08:00
op-host-native feat(canvas): ellipse arc drag handles 2026-05-17 17:26:37 +08:00
op-host-web feat(panels): shadow/blur parameter steppers in the Effects section 2026-05-17 14:38:26 +08:00
op-i18n style: apply cargo fmt across the workspace 2026-05-17 00:26:15 +08:00
op-mcp feat(editor): add node-effect add/remove commands + MCP tools 2026-05-17 13:48:31 +08:00
op-pen-loader feat(canvas): render ellipse arcs / pie / donut sectors 2026-05-17 17:10:50 +08:00
wasm-libc-shim fix: clear clippy -D warnings across the workspace 2026-05-17 01:26:29 +08:00
CLAUDE.md docs: fix stale i18n + renderer paths flagged by Codex review 2026-05-16 15:45:54 +08:00