openpencil/crates
Fini 322ae23760 feat(editor): drop an image file onto a node to set its fill
Dropping a png/jpg/webp used to be silently ignored — placing a
screenshot meant importing, dragging into position and matching sizes
by hand. Now a drop resolves the deepest fillable node under the
cursor (walking up past text and icons), writes a cover image fill in
one undo step, and rings the target while hovering so the outcome is
visible before release. Empty-canvas drops insert an image node at the
point; document drops keep their open/import behavior. Drag positions
come from an AppKit probe on macOS; other platforms degrade to a
centered insert.
2026-07-28 00:29:39 +08:00
..
op-acp fix(editor): async hygiene — safe block_on, bounded acp channels, thread teardown 2026-07-26 13:19:34 +08:00
op-ai feat(agent): surface a quality credential after generation 2026-07-28 00:29:39 +08:00
op-ai-skills refactor: dedupe cross-crate code and converge hardcoded literals 2026-07-26 11:24:22 +08:00
op-auth-bridge refactor: dedupe cross-crate code and converge hardcoded literals 2026-07-26 11:24:22 +08:00
op-cli refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-codegen refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-config-store test(desktop): keep persistence tests out of the real user config 2026-07-28 00:29:39 +08:00
op-design-lint refactor: final 800-line sweep across editor, mcp, services, and tool crates 2026-07-26 22:34:37 +08:00
op-editor-core feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-editor-host-core feat(agent): surface a quality credential after generation 2026-07-28 00:29:39 +08:00
op-editor-ui feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-figma refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-git
op-host-desktop feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-host-native feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-host-services feat(agent): surface a quality credential after generation 2026-07-28 00:29:39 +08:00
op-host-web feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-host-web-server refactor: dedupe cross-crate code and converge hardcoded literals 2026-07-26 11:24:22 +08:00
op-html refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-i18n refactor: final 800-line sweep across editor, mcp, services, and tool crates 2026-07-26 22:34:37 +08:00
op-mcp refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-opmerge chore(sync): integrate origin/v0.8.2 interactions and retry batch 2026-07-18 13:11:52 +08:00
op-orchestrator feat(agent): surface a quality credential after generation 2026-07-28 00:29:39 +08:00
op-pen-loader feat(editor): drop an image file onto a node to set its fill 2026-07-28 00:29:39 +08:00
op-process-io
op-rpc-transport refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
op-smoke feat(agent): surface a quality credential after generation 2026-07-28 00:29:39 +08:00
op-util refactor: dedupe cross-crate code and converge hardcoded literals 2026-07-26 11:24:22 +08:00
op-web-sdk refactor: typed error enums across the whole workspace 2026-07-27 21:09:06 +08:00
CLAUDE.md docs: refresh the architecture guide after the dedupe and typed-error campaigns 2026-07-27 21:08:34 +08:00