Commit graph

2634 commits

Author SHA1 Message Date
Danila Poyarkov 89b60b9870 fix(clipboard): preserve typed selection data across copy and paste 2026-09-11 02:59:31 +03:00
Danila Poyarkov b436ee4d2b refactor(fig): own Figma clipboard encoding and conversion 2026-09-11 00:36:03 +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 93a407e45f test: isolate managed browser and MCP runtimes 2026-09-10 21:41:10 +03:00
Danila Poyarkov 629a8a1b27 docs: describe settings and property panel polish 2026-09-10 19:49:37 +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 a8be429cb3 fix(pages): match layer tree row density 2026-09-10 19:49:36 +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 ec0aacd4f6
build: upgrade oxfmt and format Vue imports (#669)
* build: upgrade oxfmt for Vue import sorting

* style: apply Vue-aware import sorting
2026-09-10 02:45:13 +03:00
Danila Poyarkov c2aec9bacb
fix(packages): make packed exports runtime-safe (#665)
* fix(packages): make packed exports runtime-safe

Make checked-in package manifests truthful for ordinary npm and Bun packing, and verify installed artifacts under both runtimes. Centralize package discovery, artifact inspection, and bounded process execution so CI and release publication share the same contracts.

* ci: build package dependencies before checks

Keep workspace jobs independent of ignored dist output now that public package exports consistently resolve built artifacts.

* ci: preserve source-first engine tests

Keep the broader dependency build for package and repository validation, but retain Core-only setup for engine shards so workspace tests continue exercising source modules.

* ci: build engine shard dependencies

Build the seven workspace packages imported by engine tests in dependency order. This preserves a single module instance per package and keeps each clean CI shard independent of ignored dist output.

* ci: restore established package build boundaries

Keep the original repository and engine job setup, and add installed artifact verification only after the existing package build. Avoid changing which module copies unrelated tests execute.

* fix(packages): preserve Bun source identity in tarballs

Retain source-first workspace resolution and ship complete source trees for Bun conditions. Verify clean installed consumers without overlaying archives, reuse consumer validation before release publication, and repair Bun 1.3.10 private source alias resolution.

* refactor(tooling): reuse package and process utilities

Use pkg-types for manifest I/O and types, tinyexec for subprocess lifecycle, and npm's pack listing for release staging. Preserve archive verification and project release invariants rather than reimplementing package-manager file selection.

* refactor(tooling): resolve workspace roots at CLI boundaries

Discover and validate the nearest workspace once, support explicit roots, and pass roots to reusable checks. Replace subprocess entrypoint dispatch with direct calls and preserve aggregate package diagnostics without adding arbitrary test timeout increases.

* fix(release): enforce publication boundaries

Use root version alignment and shared validated npm output parsing. Enforce the public npm registry policy and test verification-before-publication, mismatched artifacts, and partial retries without registry writes.

* refactor(tooling): validate package responses with Valibot

Express npm pack and manifest identity contracts as schemas, infer parsed output types, and preserve contextual failures and relative-path safety. Document Valibot as the first-party validation convention while retaining Zod at SDK boundaries.

* refactor(tooling): validate manifests at input boundaries

Share Valibot schemas for consumed manifest fields, recursive exports, supported workspace declarations, and npm registry responses. Infer domain types and reject malformed metadata instead of silently skipping it downstream.

* refactor(tooling): group package helpers by ownership

Colocate manifest and workspace contracts, separate npm response parsing from generic JSON handling, and split smoke packing, installation, and runtime checks. Remove the release tarball forwarding shim and consolidate its coverage in package-artifacts. Preserve public tooling exports and CLI commands.
2026-09-09 18:25:22 +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 cb08d351e8
Merge pull request #657 from itorr/codex/fix-canvas-zoom-shortcuts
fix(keyboard): route zoom shortcuts to canvas
2026-09-08 13:21:14 +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
Danila Poyarkov b4e479d9d0
feat: persist AI conversations and add chat history (#661)
* feat: persist AI conversations and add chat history

Store transcripts and attachment previews in IndexedDB, separate conversation history from transport lifetime, and add document-aware switching with shared Storybook coverage. Preserve interrupted activity and guard stale writes and async switches.

* test: group chat history tests by domain

* feat: simplify chat history navigation and diagnostics

Use a compact header with searchable document-scoped history and a correctly anchored conversation menu. Move diagnostic copying into the menu with copy-result feedback, and separate Storybook fixtures from composition.

* fix: address chat history review findings

* test: cover harness shutdown and restored chat scrolling

* fix: preserve Portless proxy port in MCP routes

* docs: clarify UI animation conventions

* feat: configure reasoning display and animate disclosure

* fix: separate transcript following from reasoning disclosure

* fix: restore selected chat after document recovery

* refactor: separate chat history persistence and sessions

* style: format reasoning story imports
2026-09-08 11:19:07 +03:00
7ot0m3 992102f3a5 test(keyboard): exercise zoom shortcuts with real input 2026-09-07 10:51:54 +08:00
7ot0m3 ec6c42f0e5 fix(keyboard): route zoom shortcuts to canvas 2026-09-07 10:36:10 +08:00
Danila Poyarkov 9dac52da13
test: fix heavy unit-test measurement and round-trip checks (#655)
* test: use core page switching for imported text measurement

* test: correct FIG round-trip equivalence checks
2026-09-07 00:33:12 +03:00
PAVEL TKACHEV c946337f3d
fix(pen): resolve ordinary variable references (#622)
* fix(pen): resolve ordinary variable references

Recognize nonempty dollar-prefixed variable names while preserving double-dash references and existing bindings.

Add parser regressions, a reproducible .pen fixture, and visual coverage comparing variable references with literal values.

Update the Unreleased changelog for #563.

* test(pen): strengthen variable reference coverage

---------

Co-authored-by: Danila Poyarkov <dev@dannote.net>
2026-09-06 23:50:03 +03:00
Danila Poyarkov 076f7ce0d9
fix: restore engine test coverage and isolation (#653)
* ci: require complete engine test shard coverage

* test: provide path data in the font editing gate fixture

* test: remove stale Tauri runtime markers during cleanup

* fix(collab): deduplicate pending page switches

* test: simplify pending page switch regression setup
2026-09-06 23:29:45 +03:00
Danila Poyarkov 5ab13032ec
Merge pull request #651 from open-pencil/adapt-pr-645
fix: handle nested CLI import outputs and stale oracle imports
2026-09-06 19:14:16 +03:00
Danila Poyarkov 103f6003d6
Merge branch 'master' into adapt-pr-645 2026-09-06 19:05:52 +03:00
Danila Poyarkov 39e761c1b7 fix(tools): import SceneGraph from its owning package
Adapt the import repair identified in #645 without restoring forwarding-only Core subpaths.

Co-authored-by: Joseph Cumines <joeycumines@gmail.com>
2026-09-06 18:18:52 +03:00
Danila Poyarkov de4c90a023 fix(cli): create missing import output directories
Adapt the output-directory fix from #645 while preserving source-based workspace exports. Cover existing and missing nested destinations for JSON and FIG imports.

Co-authored-by: Joseph Cumines <joeycumines@gmail.com>
2026-09-06 18:18:51 +03:00
Danila Poyarkov 72b8da1a75
refactor(ui): organize components and themes by family (#649)
Group reusable UI components into button, input, select, toggle, feedback, overlay, menu, and paint families while retaining dialog, panel, and binding.

Colocate stories with their components, preserve Storybook titles and existing story exports, and separate the combobox keyboard interaction from its default playground.

Move InlineLabelEditor into the input family and colocate the model catalog service with its composable. Update imports without compatibility shims.

Reorganize matching themes and document component-family and story conventions in AGENTS.md. Preserve existing application behavior.
2026-09-06 18:08:07 +03:00
Danila Poyarkov 6e4fab40dc style(ui): sort imports after family moves 2026-09-06 17:54:22 +03:00
Danila Poyarkov d5ed2310c2
refactor(settings): extract domain workflows (#647)
Move model, MCP, storage, vectorization, diagnostics, and usage settings workflows into their owning app domains. Keep presentation, navigation, confirmations, and short-lived credential inputs in components.

Separate Settings credential APIs from chat initialization and standardize composable organization and spacing.

Guard asynchronous results against changed targets and disposed editors. Serialize MCP mutations across editor instances, persist connections disabled until credential writes succeed, and revalidate credentials before enabling them.

Add regression coverage for credential failures, cross-editor races, provider switching, role assignments, and subscription cleanup.
2026-09-06 17:51:19 +03:00
Danila Poyarkov 3fdac60afa Merge branch 'refactor/settings-workflows' into refactor-ui-families
# Conflicts:
#	src/app/ai/models/settings/profile-editor/selection.ts
2026-09-06 16:46:02 +03:00
Danila Poyarkov cc4dc933e8 fix(settings): revalidate queued credentials and handle status failures 2026-09-06 16:41:50 +03:00
Danila Poyarkov 2b4e5240e7 style(settings): separate composable responsibilities 2026-09-06 15:41:15 +03:00
Danila Poyarkov 95fbd06dc3 fix(settings): share MCP mutation queues across editors 2026-09-06 15:41:15 +03:00
Danila Poyarkov b5391f7305 fix(settings): persist credentials before enabling connections 2026-09-06 15:18:18 +03:00
Danila Poyarkov 2f28752138
feat(ai): add searchable model catalogs (#643)
Add a reusable Reka UI combobox with Fuse.js search, scoped slots, and Storybook interaction coverage.

Connect model pickers to the models.dev catalog with curated recommendations, recent compatible models, and cached/offline fallbacks. Refresh model suggestions, including Kimi K3 and Claude Fable 5.1.

Apply selected-model metadata immediately, preserve offline vision capabilities, and allow failed catalog requests to retry.

Extract profile editing into focused selection, connection, and persistence workflows, sharing model-option projection between Settings and chat.
2026-09-06 15:06:49 +03:00
Danila Poyarkov 8407f23fd1 refactor(ai): colocate catalog service and composable 2026-09-06 14:56:09 +03:00
Danila Poyarkov 742d544342 Merge branch 'refactor/settings-workflows' into refactor-ui-families 2026-09-06 14:45:03 +03:00
Danila Poyarkov 9f5d583bed Merge branch 'feat/model-picker-catalog' into refactor/settings-workflows 2026-09-06 14:37:39 +03:00
Danila Poyarkov c30b2def7b Merge remote-tracking branch 'origin/master' into feat/model-picker-catalog
# Conflicts:
#	packages/vue/src/i18n/locales/de/ai.json
#	packages/vue/src/i18n/locales/fr/ai.json
#	packages/vue/src/i18n/locales/pl/ai.json
#	packages/vue/src/i18n/locales/ru/ai.json
2026-09-06 14:34:55 +03:00
Danila Poyarkov 24df07ac41 fix(settings): guard asynchronous credential workflows 2026-09-06 14:34:32 +03:00