-
90baee6219
fix(docker): build the web image on the current workspace
master
Vitali sharp8n
2026-10-09 00:07:04 +0300
-
0ea0b1b4f0
chore: merge upstream/master into upstream-sync-2026-10
Vitali sharp8n
2026-10-08 23:20:41 +0300
-
-
4e5d2ef7c2
fix(mcp): restore node bin entrypoints removed by cleanup
Vitali sharp8n
2026-10-08 21:41:23 +0300
-
ed423ab426
refactor(storage): send S3 requests through the AWS SDK (#983)
Danila Poyarkov
2026-10-08 17:52:42 +0000
-
9081c4b1d6
fix(preview): toggle controls both ways and keep islands in step with the canvas (#982)
Danila Poyarkov
2026-10-08 17:51:00 +0000
-
230b14080e
fix(storage): skip the browser cache for S3 requests (#980)
T3rM1nAt0-R
2026-10-08 17:34:02 +0000
-
3289649da8
fix: repair the app e2e suite and the bugs it was hiding (#968)
Danila Poyarkov
2026-10-08 17:15:18 +0000
-
7ee621ec41
feat: import and export W3C design tokens (#964)
Danila Poyarkov
2026-10-08 16:53:46 +0000
-
e3c49cc8d4
fix(fig): keep a new layer's GUID across saves (#973)
Danila Poyarkov
2026-10-08 16:40:45 +0000
-
89380fb58f
cleanup
Vitali sharp8n
2026-10-08 18:39:17 +0300
-
e17f74991b
feat(storybook): generate Radix UI components for React stories (#971)
Danila Poyarkov
2026-10-08 10:13:52 +0000
-
7e9e293305
feat(storybook): generate Reka UI components for Vue stories (#969)
Danila Poyarkov
2026-10-08 10:13:52 +0000
-
7b011bceaf
fix(fig): treat the unset override key as no key (#967)
Danila Poyarkov
2026-10-07 21:33:09 +0000
-
6e68366bc6
fix(recovery): store snapshots of any size (#966)
Danila Poyarkov
2026-10-07 21:30:07 +0000
-
4254204685
feat(dom-css): compile component variants into state styles (#965)
Danila Poyarkov
2026-10-07 21:15:40 +0000
-
4eb3449b0c
fix(app): keep a closing tab's canvas off the next document (#958)
Danila Poyarkov
2026-10-07 21:09:58 +0000
-
cb075b3e1a
perf: speed up opening large pages (#953)
Danila Poyarkov
2026-10-07 20:57:57 +0000
-
2bb43c85dc
fix(fig): keep the sizes Figma derived for instance layers when a page loads (#951)
Danila Poyarkov
2026-10-07 20:57:55 +0000
-
0201feb35f
fix(figma-api): size script text to its content, as Figma does (#950)
Danila Poyarkov
2026-10-07 20:49:37 +0000
-
974905289a
fix(canvas): keep image-heavy documents within CanvasKit memory (#963)
Danila Poyarkov
2026-10-07 20:30:25 +0000
-
b5a5b41523
feat(storybook): give components with behaviours their own story controls (#961)
Danila Poyarkov
2026-10-07 20:06:17 +0000
-
c47d1b78e6
refactor: share behaviour control roles through dom-css (#960)
Danila Poyarkov
2026-10-07 20:06:16 +0000
-
6a06b31dd8
perf(text): measure each text once per shaping and layout width (#959)
Danila Poyarkov
2026-10-07 19:48:25 +0000
-
cb7018a2d7
perf: stop repeating glyph coverage and component sync during layout (#957)
Danila Poyarkov
2026-10-07 18:46:56 +0000
-
6a9b69f677
fix: keep bound text and visibility in step with their variables (#954)
Danila Poyarkov
2026-10-07 18:37:15 +0000
-
1c09e3074d
refactor(canvas): draw screen-sized chrome through one outline helper (#947)
Danila Poyarkov
2026-10-07 18:37:05 +0000
-
759f9eb611
feat: show controls in a prebuilt demo and fix what saving it to .fig lost (#938)
Danila Poyarkov
2026-10-07 18:37:05 +0000
-
f8d2dbc7e6
feat(chat): attach dropped images and style tables, menus, and link prompts in replies (#955)
Danila Poyarkov
2026-10-07 18:18:15 +0000
-
099e5d7a15
fix(fig): keep filled frames and copied text sized as in OpenPencil when exported to Figma (#956)
Danila Poyarkov
2026-10-07 18:05:23 +0000
-
1717d8d19d
fix: meet WCAG AA contrast and name controls for screen readers (#952)
Danila Poyarkov
2026-10-07 17:51:24 +0000
-
b3f35ab650
fix: keep stored page backgrounds and number layers by their own page (#949)
Danila Poyarkov
2026-10-07 13:35:59 +0000
-
68ffd72839
feat(mcp): let MCP clients read only the selection, with a compact get_selection (#732)
Victor Wads
2026-10-07 13:01:28 +0000
-
85d8c69ccc
fix(app): keep opened documents saved until they are edited (#945)
Danila Poyarkov
2026-10-07 12:50:03 +0000
-
cff091bc6a
test: resolve repository files without climbing directories (#946)
Danila Poyarkov
2026-10-07 12:35:39 +0000
-
11e708de39
fix(layout): size each axis on its own and lay out before geometry reads (#942)
Danila Poyarkov
2026-10-07 11:52:08 +0000
-
e8b5d75339
perf: scope variable changes to what they can reach (#935)
Danila Poyarkov
2026-10-07 11:32:18 +0000
-
4faccd047d
feat(canvas): select auto layout frames by their gaps and dot their children, as in Figma (#943)
Danila Poyarkov
2026-10-07 11:29:52 +0000
-
5b9533a230
ci: build and check packages in parallel and reuse verified trees in the merge queue (#944)
Danila Poyarkov
2026-10-07 11:04:39 +0000
-
690c1247e4
feat(collab): show MCP agents, follow streamed JSX, and follow your agents as they work (#725)
Victor Wads
2026-10-07 10:04:58 +0000
-
76988569b0
fix: match Figma's panel X, Y, rotation and themed page backgrounds (#940)
Danila Poyarkov
2026-10-07 10:02:52 +0000
-
af18eec514
fix(ai): polish chat history and stabilize chat tests (#923)
Danila Poyarkov
2026-10-07 09:53:05 +0000
-
2f79278df1
refactor: read stored settings and external responses with Valibot (#937)
Danila Poyarkov
2026-10-07 09:28:42 +0000
-
9b4100b1d5
refactor(settings): move guided setup logic out of components and share its UI (#921)
Danila Poyarkov
2026-10-07 09:28:25 +0000
-
8bf71bd92f
feat(ai): add guided AI setup for providers, coding agents, and Pi (#916)
Danila Poyarkov
2026-10-07 08:46:57 +0000
-
7992516d81
fix: match Figma's transforms, strokes, booleans, sections, and names (#931)
Danila Poyarkov
2026-10-07 08:36:50 +0000
-
55d8c57822
feat(desktop): show updates in a Software Update window (#936)
Danila Poyarkov
2026-10-06 14:57:31 +0000
-
22d5dfe6b5
fix: refuse risky desktop writes and run every Storybook play function (#933)
Danila Poyarkov
2026-10-06 14:52:12 +0000
-
6324f8e396
test(core): type the behaviour tests for the test typecheck (#934)
Danila Poyarkov
2026-10-06 13:58:17 +0000
-
710e1a3ac1
fix(ai): keep saving chat history in Safari Private Browsing (#920)
Danila Poyarkov
2026-10-06 13:57:56 +0000
-
e0716a3a38
feat: behaviours and preview mode (#893)
Danila Poyarkov
2026-10-06 13:23:05 +0000
-
6c6f24409e
feat: let a collection name the attribute its modes switch by (#913)
Danila Poyarkov
2026-10-06 12:35:41 +0000
-
29e0d3acf2
refactor(vue)!: remove the variables table composables (#908)
Danila Poyarkov
2026-10-06 12:35:41 +0000
-
03b70328bf
feat: edit variables as tokens in the variables dialog (#907)
Danila Poyarkov
2026-10-06 12:35:40 +0000
-
08c13dabbd
fix: show the caret in new, empty text (#932)
Danila Poyarkov
2026-10-06 12:33:49 +0000
-
b0e0b321e9
fix: share Figma's creation and grouping between editor and plugin API (#919)
Danila Poyarkov
2026-10-06 12:28:52 +0000
-
00da4678ad
feat(ai): refine tool change and run views (#858)
Danila Poyarkov
2026-10-06 11:56:06 +0000
-
02fd53a8e0
fix(core): load fontoxpath under Node's ESM loader (#824)
MrHard
2026-10-06 11:44:16 +0000
-
a6a87035da
fix(canvas): show every top-level frame's name and select frames by it (#930)
Danila Poyarkov
2026-10-06 11:37:46 +0000
-
e77eeff11c
fix(fig): write text glyphs from the layout the renderer draws (#928)
Danila Poyarkov
2026-10-06 11:37:02 +0000
-
bd7acd6e34
fix(desktop): pin every command line the app may start (#922)
Danila Poyarkov
2026-10-06 11:19:05 +0000
-
f7a013191b
refactor(fig): export the symbol readers and move the library tests home (#929)
Danila Poyarkov
2026-10-06 10:44:22 +0000
-
9dce9fdcbc
feat(collab)!: sync layer trees as a CRDT and open each room in its own tab (#902)
Danila Poyarkov
2026-10-06 10:40:25 +0000
-
82961a16a3
build: update dependencies with security fixes within their ranges (#927)
Danila Poyarkov
2026-10-06 10:10:44 +0000
-
8d1ad54193
feat(ai): revert, regenerate, and edit chat turns (#844)
Danila Poyarkov
2026-10-06 09:54:42 +0000
-
105032153e
feat(core): name the node type createInstance and detachInstance return (#918)
Danila Poyarkov
2026-10-06 09:35:03 +0000
-
85b83cf050
test(fig): pin override and variable precedence to what Figma renders (#912)
Danila Poyarkov
2026-10-06 09:08:51 +0000
-
708ec9e72d
fix: upgrade vulnerable dependencies within their ranges (#926)
Danila Poyarkov
2026-10-06 08:26:19 +0000
-
1c66fed8da
test: type the tabs module in the closed-documents spec (#917)
Danila Poyarkov
2026-10-05 18:55:49 +0000
-
b834c5323f
fix(scene-graph): let generated IDs walk past large imported graphs (#915)
Danila Poyarkov
2026-10-05 18:55:47 +0000
-
f465da8b81
fix: release documents when their tabs close (#904)
Danila Poyarkov
2026-10-05 18:11:34 +0000
-
19d01f0835
fix(harness): start Pi sessions with MCP tools under Node (#897)
Danila Poyarkov
2026-10-05 17:21:50 +0000
-
9c28c13fdf
perf(scene-graph): give imported nodes the shape every node shares (#903)
Danila Poyarkov
2026-10-05 17:14:12 +0000
-
09accf78df
fix: share CSS value parsing between dom-css and design JSX (#910)
Danila Poyarkov
2026-10-05 17:02:43 +0000
-
7c4d9aa20d
feat: open documents dropped onto the window (#906)
Danila Poyarkov
2026-10-05 14:24:43 +0000
-
ae9f1e35a3
test: run each heavy unit test file in its own process (#899)
Danila Poyarkov
2026-10-05 14:13:53 +0000
-
1dfd501d83
feat: name the call and list every problem in validation errors (#911)
Danila Poyarkov
2026-10-05 14:06:26 +0000
-
37bc706a59
fix: lay out fill text and repeat() grid tracks (#866)
Danila Poyarkov
2026-10-05 14:06:07 +0000
-
7e78003fc7
build: merge CHANGELOG.md entries instead of conflicting (#905)
Danila Poyarkov
2026-10-05 12:56:22 +0000
-
aa86873dd7
test: typecheck the test suites and fix what that found (#896)
Danila Poyarkov
2026-10-05 12:42:38 +0000
-
24db186ac8
feat: select layers at Figma's click depth (#900)
Danila Poyarkov
2026-10-05 12:39:04 +0000
-
69dbc36a7e
fix: match Figma when dragging, drawing, duplicating, and pasting (#894)
Danila Poyarkov
2026-10-05 12:39:03 +0000
-
c8d68acc9e
chore: prefer es-toolkit helpers and lint the mechanical cases (#898)
Danila Poyarkov
2026-10-05 09:34:00 +0000
-
fb0cb9ee5f
feat: write variable-bound properties as tokens in exported code (#895)
Danila Poyarkov
2026-10-05 09:15:44 +0000
-
83cf621a91
fix(scene-graph): apply an instance's assignment to a late child (#884)
Danila Poyarkov
2026-10-05 09:10:44 +0000
-
510cdbc36f
feat(scene-graph)!: let a SceneGraph take its ID generator (#887)
Danila Poyarkov
2026-10-05 08:21:22 +0000
-
a50444c265
feat(app): record runtime errors in diagnostics and make events readable (#874)
Danila Poyarkov
2026-10-05 07:59:44 +0000
-
244757a668
fix(ci): install the review guidance tool's dependencies (#891)
Danila Poyarkov
2026-10-05 06:24:03 +0000
-
6a05e30f15
fix(design-jsx): say what gradient helpers expect when stops are not an array (#881)
Danila Poyarkov
2026-10-04 18:28:44 +0000
-
01e58a3ad0
feat: write variables as a CSS token stylesheet (#856)
Danila Poyarkov
2026-10-04 18:15:52 +0000
-
69dba7002f
refactor: define OpenPencil plugin data in one typed registry (#878)
Danila Poyarkov
2026-10-04 17:32:18 +0000
-
7ad6475e2b
feat: create, fill, and edit slots (#862)
Danila Poyarkov
2026-10-04 17:02:28 +0000
-
e2a3aa3f80
fix: validate parsed JSON at untrusted boundaries with Valibot (#855)
Danila Poyarkov
2026-10-04 17:01:50 +0000
-
b9753aa016
docs: sync translations with documentation changes since v0.15.1 (#886)
Danila Poyarkov
2026-10-04 16:38:35 +0000
-
403cbd24ab
docs: trim the README CLI section and align its examples (#885)
Danila Poyarkov
2026-10-04 16:38:28 +0000
-
1d51583b64
feat(core): export resolvePasteTarget from the editor entry (#827)
MrHard
2026-10-04 16:20:03 +0000
-
b52d7e2651
feat: control documents, history, settings, and tools from the CLI and MCP (#871)
Danila Poyarkov
2026-10-04 16:02:36 +0000
-
dc0922038b
feat(core): export flatten and outline stroke geometry from canvas (#826)
MrHard
2026-10-04 14:13:08 +0000
-
8d10b9ca27
fix: export layers and pages that are not on screen in app mode (#877)
Danila Poyarkov
2026-10-04 13:55:23 +0000
-
de0c48f47d
fix(core): save an unedited worker-opened .fig instead of hanging (#880)
Danila Poyarkov
2026-10-04 13:41:21 +0000
-
d2e380ea9d
fix(core): draw gradient and image strokes as the paint they are (#868)
Danila Poyarkov
2026-10-04 13:25:45 +0000