Danila Poyarkov
|
a4d4cf1bee
|
fix(canvas): switch edited text on click
|
2026-05-17 20:49:25 +03:00 |
|
Danila Poyarkov
|
a535c6be8a
|
fix(canvas): edit nested text on drill double-click
|
2026-05-17 20:46:13 +03:00 |
|
Danila Poyarkov
|
5d71e810b6
|
fix(text): preserve requested font weights
|
2026-05-17 20:40:39 +03:00 |
|
Danila Poyarkov
|
b46722a50b
|
fix(text): prefer matching local font slant
|
2026-05-17 20:33:13 +03:00 |
|
Danila Poyarkov
|
b1ad6d41e9
|
fix(editor): enable outlining grouped strokes
|
2026-05-17 20:27:45 +03:00 |
|
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
|
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
|
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
|
5ddd0b966f
|
fix(app): wire renderer into figma api
|
2026-05-17 18:49:35 +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
|
7da08789cd
|
refactor(figma-api): type creation methods against plugin typings
|
2026-05-17 16:30:35 +03:00 |
|
Danila Poyarkov
|
f9a75b70a3
|
test(figma-api): type-check plugin compatibility subset
|
2026-05-17 16:24:47 +03:00 |
|
Danila Poyarkov
|
011ff17c87
|
refactor(editor): isolate paste replacement logic
|
2026-05-17 16:11:31 +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
|
a23c75531a
|
refactor(canvas): align overlay file layout
|
2026-05-17 15:48:20 +03:00 |
|
Danila Poyarkov
|
b790a044e4
|
refactor(app): model canvas copy submenu
|
2026-05-17 15:14:55 +03:00 |
|
Danila Poyarkov
|
c922e1d9a4
|
fix(i18n): localize provider settings
|
2026-05-17 14:24:24 +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
|
5634e0ecb4
|
refactor(vue): centralize editor command metadata
|
2026-05-17 13:56:56 +03:00 |
|
Danila Poyarkov
|
2ef07b7049
|
refactor(text): use explicit font weight aliases
|
2026-05-17 13:44:58 +03:00 |
|
Danila Poyarkov
|
0f58b3eb37
|
chore(text): align font face module naming
|
2026-05-17 13:42:51 +03:00 |
|
Danila Poyarkov
|
3534a4a919
|
fix(canvas): render exact font faces
|
2026-05-17 13:40:56 +03:00 |
|
Danila Poyarkov
|
f9034d4492
|
perf(kiwi): avoid shifting import propagation queues
|
2026-05-17 13:19:07 +03:00 |
|
Danila Poyarkov
|
bb6c537b8e
|
Merge master into image fill hash fix
|
2026-05-17 13:02:00 +03:00 |
|
Danila Poyarkov
|
c044d26431
|
perf(canvas): cache label hit tests and trace scene renderer
|
2026-05-17 03:27:19 +03:00 |
|
Danila Poyarkov
|
faaa741911
|
feat(profiler): expose scene picture and flush timings
|
2026-05-17 03:09:16 +03:00 |
|
Danila Poyarkov
|
1326aac68d
|
Revert "perf(canvas): preview mouse panning with CSS transforms"
This reverts commit 30191ad11b.
|
2026-05-17 03:03:51 +03:00 |
|
Danila Poyarkov
|
30191ad11b
|
perf(canvas): preview mouse panning with CSS transforms
|
2026-05-17 02:57:35 +03:00 |
|
Danila Poyarkov
|
05b3a870c2
|
perf(canvas): avoid duplicate scene picture draw on record
|
2026-05-17 02:50:01 +03:00 |
|
Danila Poyarkov
|
957d822af1
|
perf(canvas): restore scene cache after position previews
|
2026-05-17 02:38:23 +03:00 |
|
Danila Poyarkov
|
7f784ef1ec
|
perf(canvas): fast-path solid render colors
|
2026-05-17 02:34:41 +03:00 |
|
Danila Poyarkov
|
617f3864ac
|
perf(canvas): keep scene picture cache warm after edits
|
2026-05-17 02:27:58 +03:00 |
|