Danila Poyarkov
28f7ef165b
feat(text): wrap styled outline text
2026-05-17 20:23:55 +03:00
Danila Poyarkov
1c8fe1ee8b
feat(editor): add outline stroke command
2026-05-17 20:18:14 +03:00
Danila Poyarkov
1b1c7e6409
test(text): lock complex outline guards
2026-05-17 20:01:37 +03:00
Danila Poyarkov
75c2975fdc
feat(text): outline loaded fallback glyphs
2026-05-17 19:59:30 +03:00
Danila Poyarkov
12787abf85
feat(text): outline loaded style runs
2026-05-17 19:49:44 +03:00
Danila Poyarkov
d927a2b443
feat(text): share outline conversion for paths
2026-05-17 19:45:39 +03:00
Danila Poyarkov
fa3f60d10c
feat(canvas): flatten loaded text outlines
2026-05-17 19:25:43 +03:00
Danila Poyarkov
0772354bff
test(canvas): assert boolean matrix cells
2026-05-17 19:16:56 +03:00
Danila Poyarkov
3151132fd3
fix(editor): reject image boolean sources
2026-05-17 19:15:14 +03:00
Danila Poyarkov
af70b0eeaf
feat(canvas): flatten container and stroke paths
2026-05-17 19:11:22 +03:00
Danila Poyarkov
d48e3e5335
test(canvas): verify boolean visual matrix
2026-05-17 18:41:32 +03:00
Danila Poyarkov
becbf4360c
refactor(figma-api): share renderer-backed flatten
2026-05-17 18:37:53 +03:00
Danila Poyarkov
28829a56a9
fix(editor): guard unsupported boolean sources
2026-05-17 18:32:01 +03:00
Danila Poyarkov
dc93ec54c5
feat(editor): add flatten selection command
2026-05-17 18:27:54 +03:00
Danila Poyarkov
92328a21d8
build(lint): enforce shared black color constants
2026-05-17 18:05:07 +03:00
Danila Poyarkov
2eab8f9a50
test(canvas): add boolean shape visual matrix
2026-05-17 18:00:35 +03:00
Danila Poyarkov
40d8a54046
feat(canvas): render boolean operation paths
2026-05-17 17:54:19 +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
bf57a429d9
refactor(figma-api): align grouping API signatures
2026-05-17 17:11:15 +03:00
Danila Poyarkov
c322f80893
test(editor): harden paste to replace coverage
2026-05-17 16:08:03 +03:00
Danila Poyarkov
bdbb37b092
feat(editor): add paste to replace
2026-05-17 16:05:28 +03:00
Danila Poyarkov
daef4bdde7
fix(editor): use frame defaults for framed selection
2026-05-17 15:54:47 +03:00
Danila Poyarkov
4a37a5e534
feat(editor): add frame selection command
2026-05-17 15:52:20 +03:00
Danila Poyarkov
0da23d5526
refactor(app): derive command menu shortcuts
2026-05-17 15:07:14 +03:00
Danila Poyarkov
75d1726640
test(app): cover menu shortcut conversion
2026-05-17 15:02:42 +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
29d7ae4817
refactor(vue): centralize canvas menu groups
2026-05-17 14:09:52 +03:00
Danila Poyarkov
3534a4a919
fix(canvas): render exact font faces
2026-05-17 13:40:56 +03:00
Danila Poyarkov
bb6c537b8e
Merge master into image fill hash fix
2026-05-17 13:02:00 +03:00
Danila Poyarkov
3b323a8740
test: cover fig image fill hash roundtrip
2026-05-17 12:58:43 +03:00
Danila Poyarkov
f5bcf92ce4
test(canvas): cover scene cache recovery after drag preview
2026-05-17 02:41:13 +03:00
Danila Poyarkov
6954ff3ce7
refactor(jsx): replace hand-rolled Tailwind mapping with twirlwind
...
- Use twirlwind for CSS-to-Tailwind class conversion instead of
450 lines of manual lookup tables and formatting functions
- Build a CSS style object from scene node properties, pass to twirl()
- Remove design-jsx/tailwind.ts (pxToSpacing, colorToTwClass, etc.)
- Remove unused Tailwind-specific helpers from jsx/helpers.ts
- Update tests for twirlwind's v4-native output format
2026-05-17 00:54:53 +03:00
Danila Poyarkov
46bf5a2bd2
test(engine): split profiler coverage by module
2026-05-16 14:15:04 +03:00
Danila Poyarkov
bf636155cf
test(engine): stabilize render and heavy fig tests
2026-05-16 13:39:45 +03:00
Danila Poyarkov
e6a6926f39
test(engine): split geometry coverage by domain
2026-05-16 13:30:25 +03:00
Danila Poyarkov
ab700fd8be
test(engine): stabilize full engine smoke
2026-05-16 13:27:46 +03:00
Danila Poyarkov
21b649e540
test(engine): organize clipboard and vector coverage
2026-05-16 13:18:38 +03:00
Danila Poyarkov
2fc90769b1
fix(kiwi): export variant prop defs as text
2026-05-16 13:09:48 +03:00
Danila Poyarkov
535d243a14
test(engine): split mutation coverage by domain
2026-05-16 12:51:43 +03:00
Danila Poyarkov
83bb90c188
test(figma): place image api coverage with figma api tests
2026-05-16 12:40:49 +03:00
Danila Poyarkov
39acdd82c7
test(engine): split image coverage by domain
2026-05-16 12:38:00 +03:00
Danila Poyarkov
6eb50affc4
test(engine): move root tests into domains
2026-05-16 12:30:27 +03:00
Danila Poyarkov
a710841392
test(engine): align io tests with source tree
2026-05-16 11:59:02 +03:00
Danila Poyarkov
9616094766
refactor(text): group derived text helpers
2026-05-16 11:56:35 +03:00
Danila Poyarkov
91f516ecaa
fix(clipboard): include text glyph blobs
2026-05-16 11:46:14 +03:00
Danila Poyarkov
992be9b713
fix(clipboard): include glyph advances
2026-05-16 11:05:15 +03:00
Danila Poyarkov
e47455d91b
fix(clipboard): export Figma font style names
2026-05-16 10:52:51 +03:00
Danila Poyarkov
20342d68a2
perf(vue): coalesce canvas surface frames
2026-05-15 11:21:33 +03:00