Commit graph

341 commits

Author SHA1 Message Date
Danila Poyarkov c361ec3c87 fix(canvas): preserve path text with loaded fonts 2026-09-16 00:59:26 +03:00
Danila Poyarkov 2e66792c59 chore: merge master into live-editor-regressions 2026-09-16 00:14:31 +03:00
Danila Poyarkov b458e3c3ae perf(canvas): reuse labels with shared font fallback
Acquire section paragraphs once, reuse proven fitting layouts, and bound retained text with borrowed native-resource lifetimes. Share document text family selection and Arabic/CJK coverage resolution rather than preserving missing glyphs. Validate exact zoom parity with real existing font fixtures.
2026-09-15 23:08:53 +03:00
Danila Poyarkov 38e80a4567
Merge branch 'master' into mcp-v2-webmcp 2026-09-15 19:55:49 +03:00
Danila Poyarkov 1a2107b0e1 fix(canvas): keep labels readable and refine section badges
Choose readable opposite edges for rotated frame titles and size badges, sharing placement with hit testing. Render section titles as compact inset badges with contrast-aware borders and hover feedback.
2026-09-15 19:54:04 +03:00
Danila Poyarkov 953171dea1 refactor(settings): finish shared section migration
Use SettingsSection across Settings, including header actions. Delete SettingsSectionHeader, use shared diagnostic groups and retention controls, and remove the model provider's one-off styles.
2026-09-15 19:45:30 +03:00
Danila Poyarkov b64d1b593c fix(settings): refresh select labels and unify controls
Render selected labels from reactive options rather than cached menu text. Refine action-row hover and cursor states, add a connection-test icon, simplify media credentials, and share semantic external links across Settings. Cover locale switching and link destinations with focused regressions and Storybook states.
2026-09-15 19:20:30 +03:00
Danila Poyarkov 99e7e1909e refactor(settings): share section layout and polish General
Use a slot-based section for consistent spacing and accessible headings. Align selectors, simplify translated copy, and separate experimental rendering and reload feedback. Keep section states in Storybook.
2026-09-15 18:57:08 +03:00
Danila Poyarkov b0dfde74f5 fix(settings): standardize save feedback and deletion guards
Share persistent alerts, distinguish partial persistence from validation errors, preserve model identity on retries, and apply the store's deletion eligibility before clearing credentials. Document toast, field-error, alert, and Storybook ownership.
2026-09-15 17:53:30 +03:00
Danila Poyarkov 79552129b5 fix(canvas): discard stale zoom fallback pictures
Backing installation advances the preview baseline but previously stamped old whole-scene pictures with the new scene version. Zooming outside backing coverage could replay deleted content and hide newly created shapes.

Discard mismatched pictures before advancing that baseline, preserving valid pictures. Cover scene, preview, page and font invalidation plus exact visible pixels through zoom reversals in retained and tiled renderers.
2026-09-15 17:40:34 +03:00
Danila Poyarkov 453b27f15f perf(properties): retain inactive panels safely
Retain one selection-property subtree while frame presets are shown. Suspend opted-in descendant scopes after cleanup, cancel drafts before detachment can blur inputs, close portals, and release previews and pending resource work.

Track focused-element removal with VueUse so WebKit shortcuts resume after input teardown. Cover retained identity, hidden inactivity, binding rollback, async disposal, undo, popup reactivation and browser focus behavior.
2026-09-15 17:01:44 +03:00
Danila Poyarkov ea4b8e4b97 feat(settings): unify preferences and integration editors
Unify Settings navigation, credential drafts, translated form validation, and appearance controls. Add explicit WebMCP access modes and searchable MCP tool permissions while preserving execution and credential safeguards.
2026-09-15 16:34:05 +03:00
Danila Poyarkov dceae73c6e perf(text): preserve coverage across paragraph eviction
Keep successful glyph coverage weakly owned by source nodes rather than repeating shaping when dense scans evict native paragraphs. Preserve font/input invalidation and bound pending ID invalidations without increasing native cache limits.

Add a dense-preview regression with exact raster comparison and count paragraph builds across all canvas renderers. The previous compiled build rebuilds 3,600 paragraphs over three held frames; the fixed build rebuilds none.
2026-09-15 16:32:07 +03:00
Danila Poyarkov f4f3736034 test(native): open a document before editor fixtures
The Home tab exposes an editor store without a mounted canvas or text editor. Open New design during fixture setup and await actual editor readiness before populating nodes or starting text input. Reuse already-open documents and keep WebDriver input assertions unchanged.

Full check passes. Native WebKit text input, fixture reuse and Settings checks pass (4 tests); Windows-only layer dragging skips on macOS. Upstream Tauri service bridge/teardown warnings remain; this does not claim IME or native clipboard coverage.
2026-09-15 14:43:31 +03:00
Danila Poyarkov 8defd2c676 fix(renderer): rasterize settled scenes at viewport origin
Skia analytic coverage depends on framebuffer dimensions as well as raster origin. Replay existing retained subtree pictures into the live viewport at settlement, while preserving overscan images for navigation. Keep settlement pending until the viewport pass and report the presentation path accurately. No additional viewport cache is allocated.

Preserve exact held/released assertions and cover odd/even/fractional pans at DPR 1, 1.25, 1.5 and 2. Verify native picture and backing identity reuse; update one pixel in the existing baseline only after proving equality with direct rendering.

Validation: full check, 735 scoped unit tests, and 58 targeted browser tests pass. The targeted set still excludes the previously classified paint-field-width baseline. An additional tiled large-blur test fails identically on parent d16400b3e, with byte-identical actual PNGs. Broader release acceptance remains separate.
2026-09-15 13:25:43 +03:00
Danila Poyarkov d16400b3e6 feat(editor): checkpoint live interaction improvements
Unify preview-aware transforms across scene drawing, labels, selection and input. Give live property and creation edits explicit preview ownership, preserve cancellation and one-step undo, and reuse bounded text preparation resources.

Include retained device-grid handling, worktree HMR coverage, and nested/reflected interaction regressions in this cohesive progress checkpoint.

Validation: full check passes; 734 scoped unit tests and 53 targeted browser tests pass. This is NOT merge-ready: the unchanged exact nested filled-section held/released regression still fails with 63 differing pixels (maximum channel delta 5/255). The browser pass count excludes that separately run failure and the previously classified paint-field-width baseline. Raster-origin investigation and broader acceptance remain outstanding.
2026-09-15 11:36:17 +03:00
Danila Poyarkov 9973bd2f18 test: replace legacy demo snapshots with current coverage 2026-09-14 01:20:56 +03:00
Danila Poyarkov fdf04c35e5 feat(automation): expose reviewed tools through WebMCP
Register inspection and atomic editing tools through document.modelContext with input validation, result bounds, captured targets, cancellation guards, and workspace cleanup. Verify native browser discovery and cross-page undo.
2026-09-14 01:16:23 +03:00
Danila Poyarkov 4194684765 fix: honor ruler visibility on the overlay canvas 2026-09-14 01:12:26 +03:00
Danila Poyarkov 31d886ca27 fix: preserve replacement documents after demo preparation 2026-09-14 01:12:26 +03:00
Danila Poyarkov e0012fb165 Merge remote-tracking branch 'origin/master' into demo-final-review 2026-09-14 01:10:54 +03:00
Danila Poyarkov 2ff9c34d17 Merge remote-tracking branch 'origin/master' into browser-history-contracts 2026-09-14 00:46:59 +03:00
Danila Poyarkov 21ecce1f38 feat: assemble an editable demo document
Compose announcement, typography, and paint workbenches with native linked components and editable effects. Preserve the original examples on a reference page.

Wait for the canvas and existing fonts before layout, fit demo pages on first visits, and preserve user viewports thereafter.
2026-09-14 00:36:53 +03:00
Danila Poyarkov 3ea63ad09f fix: refresh Undo and Redo command availability
Publish committed history changes independently of scene mutations so menus observe history recorded after the final draw. Align the assets regression with the documented top-left default.
2026-09-14 00:25:36 +03:00
Danila Poyarkov 4077dcbd44 fix: preserve authored instance sizing through synchronization 2026-09-14 00:24:52 +03:00
Danila Poyarkov 4340f864a4 test(properties): group corner specs by domain 2026-09-13 14:52:20 +03:00
Danila Poyarkov eb38da0d08 fix(properties): preserve shared corner bindings in collapsed controls 2026-09-13 14:45:26 +03:00
Danila Poyarkov df28cf5832 chore: update property controls with master 2026-09-13 14:11:22 +03:00
Danila Poyarkov 7af5e05f9c test(snapping): verify pixel rounding without guides 2026-09-13 14:02:16 +03:00
Danila Poyarkov de6c0efc00 fix(renderer): preserve proportions of FIT image fills 2026-09-13 13:48:11 +03:00
Danila Poyarkov 0dd1014c2a fix(properties): simplify Effect styles and equivalent corners 2026-09-11 03:27:27 +03:00
Danila Poyarkov 89b60b9870 fix(clipboard): preserve typed selection data across copy and paste 2026-09-11 02:59:31 +03:00
Danila Poyarkov b6f015a9f6 fix: address Select forwarding and MCP readiness review 2026-09-10 23:54:03 +03:00
Danila Poyarkov a4a916c97a test: seed motion preferences through Playwright storage state 2026-09-10 23:24:06 +03:00
Danila Poyarkov cf86685c51 test(motion): cover legacy preferences and mobile Off mode 2026-09-10 23:13:31 +03:00
Danila Poyarkov 70341c33a1 feat(settings): centralize motion policy and add animation preference 2026-09-10 23:10:24 +03:00
Danila Poyarkov cc99e6ecb3 fix(dialog): honor reduced motion over state animations 2026-09-10 22:40:19 +03:00
Danila Poyarkov d3b8942dcc test(properties): refresh verified panel snapshots 2026-09-10 22:29:45 +03:00
Danila Poyarkov ccb9dcdd5b test(chat): describe streaming animation coverage accurately 2026-09-10 21:41:11 +03:00
Danila Poyarkov 7f80296c3b fix(ui): preserve focus for composed icon triggers 2026-09-10 21:41:10 +03:00
Danila Poyarkov 608cbc9960 fix(chat): animate inserted Markdown lists and code lines 2026-09-10 19:49:37 +03:00
Danila Poyarkov 3d74f52344 fix(properties): simplify style controls and anchor variable pickers 2026-09-10 19:49:37 +03:00
Danila Poyarkov eb277dd2a9 fix(settings): stabilize model editing and animate dialogs 2026-09-10 19:49:36 +03:00
PAVEL TKACHEV 6e74ad2a51
fix(pen): honor layout and sizing defaults (#652)
Fixes #564.
2026-09-10 17:02:56 +03:00
Danila Poyarkov a779edd08a
refactor: scope browser test instrumentation and global types (#667) 2026-09-10 14:26:36 +03:00
Danila Poyarkov 77739c42a4
fix(bindings): resolve modes and preserve edit transactions (#671)
* fix(bindings): capture mode edits and expose unresolved values

* fix(bindings): correct unresolved accessibility metadata

* fix(bindings): distinguish mixed identities from unresolved values
2026-09-10 12:14:04 +03:00
Danila Poyarkov e69ba75c12
refactor(ui): compose shared editor controls (#670)
* refactor(ui): extract shared action and navigation primitives

* refactor(ui): compose settings and libraries with shared tabs

* feat(ui): preserve native activation and toolbar keyboard navigation

* refactor(home): share document entries and accessible input controls

* fix(layers): share virtualized row geometry and selection styling

* refactor(layout): compose spacing and readable dimension controls

* refactor(properties): compose advanced strokes and inline effects

* refactor(ui): reuse actions in page and property controls

* refactor(settings): adopt shared actions without changing workflows

* refactor(ui): share collaboration and provider actions

* refactor(ui): finish shell and paint action composition

* test(ui): restore extracted control and settings coverage

* test(ui): complete workflow extraction coverage

* fix(ui): address review and trim redundant snapshots

* fix(layout): preserve single-step Undo for guides and wrap
2026-09-10 12:09:06 +03:00
Danila Poyarkov 6cec1b2c58
fix: prevent repeated Keychain prompts and isolate native tests (#664)
* fix: prevent repeated Keychain prompts and isolate native tests

* fix: make credential settings contextual and actionable

* fix: refresh credential recovery state in open Settings

* fix: allow retrying credential status checks

* fix: recover credential access after backend panics

* test: centralize native Tauri invocation

* refactor: clarify credential preferences workflow path
2026-09-09 13:41:55 +03:00
Danila Poyarkov 86269ff440 Merge remote-tracking branch 'origin/master' into fix-pr-657 2026-09-08 13:20:09 +03:00
Danila Poyarkov 85eb57559e fix(keyboard): match Figma zoom behavior 2026-09-08 12:29:55 +03:00