Commit graph

23 commits

Author SHA1 Message Date
Danila Poyarkov 5371ed11b8 feat(app): migrate paint effect and export panels
- Share compact item-row and paint-field anatomy across Fill, Stroke, Effects, and Export
- Add COLOR binding transactions with picker rollback and one-step undo
- Replace bespoke panel test hooks with semantic selectors and visual coverage
2026-07-14 17:06:28 +03:00
Danila Poyarkov 422f83331f feat(vue): promote color and fill primitives
- Add accessible OkHCL channel sliders and use Reka ColorSlider for standard color channels

- Split fill state and binding-aware swatches from application popover composition

- Add keyboard-operable gradient stops, shared demos, generated docs, and focused coverage
2026-07-13 23:41:04 +03:00
Danila Poyarkov fcdf7f1d4c feat(app): migrate layout size controls
- Replace duplicated width and height binding branches with shared semantic fields

- Switch edited Hug and Fill dimensions to Fixed in one reversible transaction

- Add typed LayoutControls actions, documentation, and visual coverage
2026-07-13 15:34:25 +03:00
Danila Poyarkov 12031b76c9 feat(app): migrate position and appearance panels
- Move independent-corner presentation and batched mutations into AppearanceControls

- Rebuild Position and Appearance with aligned panel grids and semantic locators

- Replace type text headers with compact node icons and add visual coverage
2026-07-13 14:47:48 +03:00
Danila Poyarkov e8092bd561 feat(vue): add headless NumberField primitive
- Add pointer scrubbing, keyboard stepping, mixed and bound state contracts

- Parse safe numeric expressions and preserve deprecated ScrubInput aliases

- Cover the primitive with Storybook, SDK docs, unit tests, and E2E tests
2026-07-10 22:26:51 +03:00
Danila Poyarkov 0aae91f4f2 feat(editor): add blend mode and mask controls
- Add selection mask commands, shortcuts, context-menu access, and mask type controls
- Add mixed-selection blend mode editing with single-step undo
- Document the headless mask composable and localize the new controls
2026-07-10 17:01:28 +03:00
Danila Poyarkov 898431e646 feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
Danila Poyarkov abd795bd9a chore: format codebase 2026-05-24 12:15:29 +03:00
Danila Poyarkov da9dbbb9c6 fix(editor): preserve edits over imported metadata 2026-05-21 14:54:17 +03:00
Danila Poyarkov 8542c1db65 fix(vue): ignore click jitter before moving selection
- Start selection moves only after a 4px screen-space threshold
- Keep click selection from previewing or committing 1px geometry changes
- Cover below-threshold and intentional move behavior
2026-05-21 14:54:10 +03:00
Danila Poyarkov 1c8fe1ee8b feat(editor): add outline stroke command 2026-05-17 20:18:14 +03:00
Danila Poyarkov d927a2b443 feat(text): share outline conversion for paths 2026-05-17 19:45:39 +03:00
Danila Poyarkov dc93ec54c5 feat(editor): add flatten selection command 2026-05-17 18:27:54 +03:00
Danila Poyarkov 15c3ee3f00 fix(vue): remove boolean submenu from canvas menu 2026-05-17 17:42:15 +03:00
Danila Poyarkov 83c24925e8 feat(editor): add boolean operation commands 2026-05-17 17:33:26 +03:00
Danila Poyarkov 4a37a5e534 feat(editor): add frame selection command 2026-05-17 15:52:20 +03:00
Danila Poyarkov 433d812b9d refactor(vue): format command shortcuts by platform 2026-05-17 14:19:37 +03:00
Danila Poyarkov cc90c63952 feat(vue): add flip commands to canvas menu 2026-05-17 14:15:20 +03:00
Danila Poyarkov 20342d68a2 perf(vue): coalesce canvas surface frames 2026-05-15 11:21:33 +03:00
Danila Poyarkov 743f2b5a16 perf(vue): avoid scene renders for overlay events 2026-05-15 01:51:05 +03:00
Danila Poyarkov fc3262fea9 test(vue): cover event-driven canvas rendering 2026-05-14 23:32:26 +03:00
Danila Poyarkov d2c3b1bce8 test(editor): cover auto-layout hover targets 2026-05-14 18:28:04 +03:00
Danila Poyarkov c00356bc29 fix(demo): make auto-layout text responsive 2026-05-13 06:23:08 +03:00