Commit graph

2200 commits

Author SHA1 Message Date
Danila Poyarkov b21509cc8d fix(storage): isolate workspace refresh state
- Discard stale provider refreshes and queued previews

- Guard malformed deflate data and listener failures

- Start periodic refresh without an immediate callback
2026-08-10 22:30:54 +03:00
Danila Poyarkov c2bcb21fcf fix(vue): preserve workspace item types 2026-08-10 21:18:36 +03:00
Danila Poyarkov 6d9aeea28b refactor(vue): split workspace preview lifecycle 2026-08-10 20:42:56 +03:00
Danila Poyarkov 4fe27dd1e6 fix(storage): harden workspace previews
- Validate ranged thumbnail payloads and S3 bounds

- Invalidate stale previews and expose loading errors

- Document the public document workspace composable
2026-08-10 20:02:58 +03:00
Danila Poyarkov dde7376bd3 feat(storage): show workspace document previews
- Load embedded Figma thumbnails through bounded S3 byte-range requests

- Add a headless Vue workspace composable with lazy previews and refresh lifecycle

- Cache local previews and refresh the workspace after saves and synchronization
2026-08-10 17:21:36 +03:00
Danila Poyarkov d6ec858243
Merge pull request #479 from open-pencil/chore/acronym-casing
refactor: standardize acronym casing
2026-08-10 16:56:40 +03:00
Danila Poyarkov 55b368dc4a fix: complete acronym casing follow-ups
- Cover UI identifiers in the acronym guardrail
- Preserve FIG thumbnail and metadata values through archive parsing
- Use Vue-compatible acronym prop attributes
2026-08-10 16:38:17 +03:00
Danila Poyarkov 7f91594d0c refactor: standardize acronym casing
- Rename first-party API, RPC, JSON, CORS, SVG, JSX, and related identifiers to preserve acronym casing
- Keep upstream and serialized boundary names unchanged
- Add a lint guardrail and migration notes for exported APIs
2026-08-10 15:48:16 +03:00
Danila Poyarkov 4d6ddd3f84
Merge pull request #477 from victorwads/codex/fix-fig-component-instances
fix(fig): preserve component instance rendering
2026-08-10 13:41:38 +03:00
Danila Poyarkov c1ef116968 Merge remote-tracking branch 'origin/master' into review-pr-477-current 2026-08-10 13:40:22 +03:00
Danila Poyarkov 4986fb8b54 fix(ai): simplify model configuration
- Separate model, connection, and advanced settings

- Resolve capabilities and output limits from provider catalogs

- Keep custom model compatibility declarations explicit
2026-08-10 12:55:35 +03:00
Danila Poyarkov c493bd0872 fix(fig): preserve vector network origin when resizing
- Scale imported vector vertices around their own geometry origin\n- Cover offset geometry and tangent scaling
2026-08-10 12:52:43 +03:00
Danila Poyarkov c7c505ccc9
Merge pull request #478 from open-pencil/release/v0.14.0
Release v0.14.0
2026-08-10 11:53:00 +03:00
Danila Poyarkov 751195891f Release v0.14.0 2026-08-10 11:40:44 +03:00
Victor Wads 54abfca334
fix(fig): address instance rendering review 2026-08-10 05:09:03 -03:00
Victor Wads 0208d79375 test(fig): update roundtrip export size 2026-08-10 04:49:28 -03:00
Victor Wads bc79d16ac4
fix(fig): preserve instance text edits on save 2026-08-10 04:30:28 -03:00
Victor Wads e159893ec4
fix(fig): preserve component instance rendering 2026-08-10 04:30:06 -03:00
Danila Poyarkov f972efe229
Merge pull request #435 from open-pencil/fig-population-worker
feat(fig): prototype lazy population worker
2026-08-07 15:02:38 +03:00
Danila Poyarkov 02400a84b9 fix(fig): finalize worker cleanup semantics
- Retain worker graphs only for lazy first-page imports\n- Make termination idempotent\n- Wait on deterministic population telemetry in E2E coverage
2026-08-07 14:43:59 +03:00
Danila Poyarkov a5a744843f fix(fig): harden population worker lifecycle
- Register invalidation immediately and release subscriptions on every failure path\n- Bound worker requests and settle parse and population errors consistently\n- Clear stale page loading state and retain current instance override imports
2026-08-07 09:36:46 +03:00
Danila Poyarkov 854e1642d8 feat(fig): prototype lazy population worker
- Populate subsequent lazy pages in a development-only persistent worker
- Journal created, updated, and deleted graph state as field deltas
- Invalidate stale worker replicas after authoritative graph mutations
- Fall back to synchronous population when the worker is unavailable
2026-08-07 09:27:54 +03:00
Danila Poyarkov 4a5e7d5570
Merge pull request #470 from open-pencil/gold-preview-current-audit
fix(fig): preserve imported text and clone geometry
2026-08-07 09:27:26 +03:00
Danila Poyarkov 9829669f85 refactor(fig): name divider position result 2026-08-07 09:14:48 +03:00
Danila Poyarkov 82ac131dfe fix(fig): preserve divider main-axis position
Restore only the centered cross-axis coordinate when carrying effective derived divider geometry through clone recreation.
2026-08-07 09:08:57 +03:00
Danila Poyarkov 7b091723a2 style: format FIG compatibility fixes 2026-08-07 08:50:40 +03:00
Danila Poyarkov c446524ce2 fix(scene-graph): validate text invalidation patches
- Ignore undefined values before cache invalidation and preview mutation\n- Treat text direction as a glyph-shaping input\n- Cover the corrected invalidation contract
2026-08-07 08:50:39 +03:00
Danila Poyarkov f9701ef855 fix(fig): preserve effective clone geometry
- Restore authoritative image-leaf bounds after final component swaps\n- Preserve derived cross-axis positions for thin divider clones\n- Add synthetic and Gold Preview regression coverage
2026-08-07 08:50:39 +03:00
Danila Poyarkov eb55cb1025 fix(text): preserve imported FIG glyph outlines
Keep authoritative derived glyphs through layout, alignment, fill, and decoration changes while still invalidating them for actual shaping edits.

Add scene-graph invalidation coverage and a Gold Preview fixture regression test.

Co-authored-by: Joseph Cumines <joeycumines@gmail.com>
2026-08-07 08:50:39 +03:00
Danila Poyarkov a703a48926
Merge pull request #469 from open-pencil/fix-canvas-backing-limit
fix(canvas): bound retained backing allocations
2026-08-07 08:50:16 +03:00
Danila Poyarkov afc5305e8c fix(canvas): report retained backing failures
- Warn once with the rejected surface dimensions and original CanvasKit error
- Disable repeated cache allocation attempts until the renderer surface is replaced
- Keep direct scene rendering as the visible fallback
2026-08-05 19:10:41 +03:00
Danila Poyarkov c4df0c0257 Merge remote-tracking branch 'origin/master' into fix-canvas-backing-limit
# Conflicts:
#	CHANGELOG.md
2026-08-05 18:56:29 +03:00
Danila Poyarkov 82ef49aa9e fix(canvas): bound retained backing allocations
- Scale retained margins to a fixed device-pixel budget on large viewports
- Fall back to direct scene rendering when CanvasKit rejects an offscreen surface
- Cover the reported wide HiDPI geometry without coupling rendering to a WebGL context
2026-08-05 18:54:18 +03:00
Danila Poyarkov e6ba419ed1
Merge pull request #465 from zackarychapple/codex/scale-target-aspect-ratio-instances
fix(fig): scale target-aspect instance subtrees
2026-08-05 18:16:59 +03:00
Danila Poyarkov 77263c1d48 fix(fig): limit target-aspect scaling
- Traverse fixed wrappers only to reach descendants with SCALE constraints

- Preserve fixed siblings and use component geometry as the scale basis

- Cover target-aspect icons without changing the Preline geometry baseline
2026-08-05 18:00:52 +03:00
Zack Chapple fcfe259f26 fix(fig): scale target-aspect instance subtrees
- Use preserved targetAspectRatio metadata as the instance scale basis

- Scale nested geometry through fixed wrapper layers

- Cover proportion-constrained logo imports with a regression test
2026-08-05 17:18:34 +03:00
Danila Poyarkov 85abfd5d21
Merge pull request #468 from open-pencil/polish-pr-455
feat(chat): switch saved model profiles from chat
2026-08-05 17:16:16 +03:00
Danila Poyarkov 005f1bcdfa
Merge branch 'master' into polish-pr-455 2026-08-05 17:03:52 +03:00
Danila Poyarkov 3353c747af fix(ai): preserve valid design assignment
- Reject removing the active Design profile when no tools-capable fallback exists

- Cover text-only fallback handling
2026-08-05 17:03:37 +03:00
Danila Poyarkov a0283fda40
Merge pull request #464 from open-pencil/polish-pr-437
docs(ai): publish polished BYOK compatibility reference
2026-08-05 17:00:58 +03:00
Danila Poyarkov a63de8caaf
Merge branch 'master' into polish-pr-437 2026-08-05 16:47:58 +03:00
Danila Poyarkov 9f8ae33d84
Merge pull request #467 from open-pencil/fig-effective-text-shaping
fix(fig): shape generated text and preserve transforms
2026-08-05 16:38:46 +03:00
Danila Poyarkov 2a4beb83ae
Merge branch 'master' into fig-effective-text-shaping 2026-08-05 16:23:42 +03:00
Danila Poyarkov 53fae9e245 docs(ai): tighten BYOK compatibility probes
- Scope recipes to OpenAI-compatible endpoints and enforce CORS status and header values
- Record unavailable ID coverage, output budgets, stream HTTP status, finish reasons, and zero-call failures
- Repair the repository README link to the published compatibility reference
2026-08-05 16:23:23 +03:00
Danila Poyarkov ea7ca7ec7a fix(layout): refresh effective text flow
- Recompute Yoga positions after shaped text changes effective geometry

- Resolve inherited stretch and skip hidden or absolute children

- Share and normalize Plugin API transform matrices
2026-08-05 16:07:11 +03:00
Danila Poyarkov ec419df8a3
Merge pull request #463 from open-pencil/adapt-pr-443-menu
feat(app): open storage workspace from the File menu
2026-08-05 16:00:24 +03:00
Danila Poyarkov 7a3a8bf53f refactor(chat): polish model profile switching
- Centralize design-profile eligibility for the selector, role assignment, fallback, and tests
- Keep built-in provider model selection intact while switching saved custom profiles
- Add localized accessible labeling and constrain long profile names
2026-08-05 15:44:27 +03:00
Rob Coenen 4bdaeb6d6e feat(chat): switch models from the chat panel
The chat model chip is a dropdown for built-in providers but a static label
for OpenAI-compatible and custom-model setups, so anyone using a custom
endpoint had to open Settings to change models -- even with several models
already configured.

Add a profile switcher that reassigns the design role from the chat panel.
It lists saved profiles that can use tools, shows the profile name rather
than the raw model ID, and badges the vision-capable ones. It writes the
same assignments.design field the Settings dropdown does, so the two stay in
sync.

Only renders when more than one tools-capable profile exists; a single
profile keeps the existing label. Built-in providers keep ProviderModelSelect
unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 15:28:31 +03:00
Danila Poyarkov fb3dc932b8
Merge branch 'master' into adapt-pr-443-menu 2026-08-05 15:27:44 +03:00
Danila Poyarkov 0982ac513d fix(i18n): clarify Russian workspace menu label 2026-08-03 20:41:26 +03:00