Danila Poyarkov
ea323c33f0
fix(clipboard): match shaped glyphs by character index, not array position
2026-05-16 18:38:58 +03:00
Danila Poyarkov
578b93e189
fix(clipboard): use CanvasKit shaping + pretext word wrap for Figma text
...
- shapeTextForClipboard() now processes all lines, not just the first
- buildFigmaClipboardHTML() passes CanvasKit-shaped positions to
derivedTextData when available (browser with CanvasKit loaded)
- Add @chenglou/pretext for proper Unicode-aware word wrapping as
fallback when CanvasKit isn't available (CLI, headless, .fig export)
- Falls back to basic word-boundary wrapping if pretext fails
2026-05-16 18:26:24 +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
e7b610b228
docs: restore dropped user-facing changelog entries
2026-05-16 15:42:52 +03:00
Danila Poyarkov
a33100b076
docs: tighten changelog for end users
2026-05-16 15:42:18 +03:00
Danila Poyarkov
9c5db24cf5
docs: update changelog for test and quality improvements
2026-05-16 15:40:06 +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
f7445c88e8
chore: include dupe detection in check gate
2026-05-16 15:12:35 +03:00
Danila Poyarkov
41b314b5ef
chore(test): require zero duplicate clones
2026-05-16 14:49:06 +03:00
Danila Poyarkov
e94323ee29
refactor: remove duplicated implementation blocks
2026-05-16 14:45:32 +03:00
Danila Poyarkov
b460d194e7
chore(test): trim stale path redirects
2026-05-16 14:28:40 +03:00
Danila Poyarkov
41fccdfcc6
chore(test): flag broad engine basic tests
2026-05-16 14:26:44 +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
937577c0e6
chore(test): generalize engine domain redirects
2026-05-16 12:22:03 +03:00
Danila Poyarkov
fca62ac3fe
chore(test): guard engine test domains
2026-05-16 12:18:21 +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
358ac9ebf7
fix(clipboard): orient text glyph outlines
2026-05-16 11:52:22 +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
8476ab2c99
chore(vue): guard browser side effects
2026-05-15 17:47:40 +03:00
Danila Poyarkov
4e942f77d7
chore(test): lint raw test id selectors
2026-05-15 17:10:35 +03:00
Danila Poyarkov
4a174e52ed
chore(vue): lint generated test id literals
2026-05-15 13:14: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
5f3a4f7816
chore(vue): prefer test id directive
2026-05-15 12:47:01 +03:00
Danila Poyarkov
744f0a0f42
refactor(vue): use test id directive
2026-05-15 12:37:00 +03:00
Danila Poyarkov
50a4e1bf93
refactor(vue): use test id helper for dynamic attrs
2026-05-15 12:28:50 +03:00
Danila Poyarkov
cb1c52521b
chore(vue): enforce shared test id prop types
2026-05-15 12:21:08 +03:00
Danila Poyarkov
711c7cf5a9
refactor(vue): use shared test id prop types
2026-05-15 12:18:50 +03:00
Danila Poyarkov
0749bfa755
chore(vue): standardize test id helpers
2026-05-15 12:07:58 +03:00
Danila Poyarkov
e2eaf85cff
chore(vue): enable stricter prop linting
2026-05-15 11:57:38 +03:00
Danila Poyarkov
b46295a7bb
fix(editor): close padding editor on canvas click
2026-05-15 11:49:18 +03:00
Danila Poyarkov
9537f35a27
perf(vue): remove wheel gesture dependency
2026-05-15 11:39:47 +03:00