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
197e19b6f4
test(e2e): cover live move repaint and component labels
2026-05-17 02:11:04 +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
7cfa08aec5
fix(clipboard): normalize glyph advance by fontSize
...
Figma expects derivedTextData glyph advance values normalized to
font-size units (advance / fontSize), not absolute pixel values.
This caused pasted text to appear horizontally mirrored because
Figma multiplied the already-absolute advances by fontSize again.
2026-05-16 18:02:10 +03:00
Danila Poyarkov
680350cdcb
test(e2e): extract shared editor setup and store helpers
...
- useEditorSetup() / useEditorSetupWithClear() in tests/e2e/fixtures.ts
- Migrated 15 simple specs to shared fixture
- Moved getSelectedNode/getSelectedNodes to tests/helpers/store.ts
- Replaced inline getSelectedNode in 4 specs
- Reverted 8 specs with custom beforeAll setup (not fixture-compatible)
- Test duplication in tests/: 329 → 307 clones (10.12% → 8.95%)
2026-05-16 16:55:34 +03:00
Danila Poyarkov
11e38b626a
test(e2e): extract shared editor setup fixture
...
- useEditorSetup() / useEditorSetupWithClear() in tests/e2e/fixtures.ts
- Migrated 17 specs to shared fixture, removing ~300 lines of boilerplate
- Moved getSelectedNode/getSelectedNodes to shared store helpers
- Replaced inline getSelectedNode in 4 specs with shared import
- Test duplication: 329 → 308 clones (10.12% → 9.08%)
2026-05-16 16:19:03 +03:00
Danila Poyarkov
23583525f5
test(e2e): hide rulers in visual regression snapshots
...
- Add &no-rulers to all E2E test URLs that use &no-chrome
- Regenerate snapshots without ruler ticks/selection badges
- Remove stale snapshot dirs from old test paths
2026-05-16 15:36:37 +03:00
Danila Poyarkov
46bf5a2bd2
test(engine): split profiler coverage by module
2026-05-16 14:15:04 +03:00
Danila Poyarkov
cb51fc73fc
test(tauri): clean up font cache mocks
2026-05-16 13:55:09 +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
692ddf9a3f
refactor(toolbar): reuse test id helpers
2026-05-15 13:13:24 +03:00
Danila Poyarkov
698bcde00b
refactor(vue): share generated test id helpers
2026-05-15 13:10:44 +03:00
Danila Poyarkov
6b406002dd
test(e2e): remove remaining raw test id strings
2026-05-15 13:02:41 +03:00
Danila Poyarkov
1583181d3a
test(e2e): remove raw test id selectors
2026-05-15 12:55:01 +03:00
Danila Poyarkov
2f94ce6510
test(e2e): use Playwright test id locators
2026-05-15 12:49:49 +03:00
Danila Poyarkov
b46295a7bb
fix(editor): close padding editor on canvas click
2026-05-15 11:49:18 +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
22741a3dc4
perf(canvas): gate draw call instrumentation
2026-05-15 01:41:34 +03:00
Danila Poyarkov
834f369882
test(canvas): expect pending fonts to skip text
2026-05-14 23:46:36 +03:00
Danila Poyarkov
fc3262fea9
test(vue): cover event-driven canvas rendering
2026-05-14 23:32:26 +03:00
Danila Poyarkov
031897c73a
test(editor): cover auto-layout padding editor
2026-05-14 22:37:16 +03:00
Danila Poyarkov
686ca5326f
chore: enforce Vue style and state boundaries
2026-05-14 22:05:43 +03:00
Danila Poyarkov
f673d5bbc1
chore: keep architecture checks standalone
2026-05-14 20:44:30 +03:00
Danila Poyarkov
8976ea7c3d
chore: enforce test structure rules
2026-05-14 20:35:23 +03:00
Danila Poyarkov
c80ce4c7a9
test: cover architecture lint rules
2026-05-14 19:07:23 +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
Danila Poyarkov
9ab6bfa3bf
fix(app): restore left panel scrolling
2026-05-13 05:47:32 +03:00
Danila Poyarkov
8cf51ffefd
perf(editor): use repaint previews while resizing
2026-05-13 05:38:14 +03:00
Danila Poyarkov
1242fa7086
fix(editor): keep drag previews in sync
2026-05-13 05:34:04 +03:00