openpencil/tests/engine
xemc b01ed830e8 feat(figma-api): add combineAsVariants for real component variant sets
figma.combineAsVariants() was unimplemented in the scripting/automation
layer (figma-api/proxy.ts's compatibility surface), even though the editor
UI already has a full equivalent — createComponentSetFromComponents()
(editor/components.ts) plus wrapSelectionInContainer()
(editor/structure/container-wrap.ts) — wired to the app's own "Create
component set" menu action.

This ports that logic down to FigmaAPI (the class MCP tools, the CLI, and
AI chat scripting all run against): wraps selected COMPONENT nodes sharing
a parent into a COMPONENT_SET, and derives variant property definitions from
"Category/Value" node-name segments, matching the editor behavior exactly.
Drops the undo-stack push and selection-state writes the editor path has,
since neither concept exists at the scripting layer — everything else is
the same primitives (SceneGraph.createNode/insertChildAt/reparentNode),
which FigmaAPI already had direct access to.

Also adds a matching combine_as_variants tool (packages/core/src/tools/
create/components.ts) registered in EXTENDED_TOOLS, so it's exposed
through MCP, the CLI, and AI chat alongside the existing create_component/
create_instance tools.
2026-08-19 20:05:54 +03:00
..
acp chore: enable stricter oxlint rules 2026-05-18 18:58:30 +03:00
app feat(ai): add HarnessAgent sidecar foundation (#560) 2026-08-19 17:41:10 +03:00
bytes refactor(core): centralize Base64 encoding 2026-07-28 08:27:22 +03:00
cli refactor: standardize acronym casing 2026-08-10 15:48:16 +03:00
clipboard fix(clipboard): preserve pasted instance links 2026-08-12 20:08:06 +03:00
collab perf(collab): skip unchanged Yjs node fields (#529) 2026-08-15 11:40:27 +03:00
color feat(vue): consolidate color model 2026-07-13 21:48:36 +03:00
core feat(fig): support text on path 2026-08-17 12:00:01 +03:00
dom-css fix(fig): restore strict parse validation 2026-07-18 03:58:18 +03:00
editor feat(fig): support text on path 2026-08-17 12:00:01 +03:00
figma/api feat(figma-api): add combineAsVariants for real component variant sets 2026-08-19 20:05:54 +03:00
geometry fix(fig): restore strict parse validation 2026-07-18 03:58:18 +03:00
hit-test perf(scene-graph): accelerate axis-aligned hit tests (#534) 2026-08-16 15:43:25 +03:00
icons fix(core): preserve inline SVG primitives (#485) 2026-08-12 16:02:45 +03:00
io fix(fig): harden component property round trips 2026-08-19 18:05:25 +03:00
kiwi fix(fig): preserve regenerated override lineage 2026-07-21 01:51:27 +03:00
layout feat(fig): support text on path 2026-08-17 12:00:01 +03:00
library feat: add Figma-style variants and component libraries (#512) 2026-08-14 19:31:41 +03:00
lint test(engine): move root tests into domains 2026-05-16 12:30:27 +03:00
mcp fix(mcp): close orphaned servers after app disconnects (#494) 2026-08-12 18:44:31 +03:00
pen refactor(fig): own instance interpretation 2026-07-18 02:06:34 +03:00
profiler chore: format codebase 2026-05-24 12:15:29 +03:00
random test(engine): move root tests into domains 2026-05-16 12:30:27 +03:00
render Merge remote-tracking branch 'origin/master' into feat/configurable-snapping-guides 2026-08-19 13:20:21 +03:00
scene-graph fix(editor): harden snapping edge cases 2026-08-19 12:33:32 +03:00
snap test(engine): move root tests into domains 2026-05-16 12:30:27 +03:00
tauri refactor(ai): ship Harness as optional companion (#561) 2026-08-19 20:04:35 +03:00
text Merge origin/master into feat/configurable-snapping-guides 2026-08-18 22:05:51 +03:00
tools feat: add Figma-style variants and component libraries (#512) 2026-08-14 19:31:41 +03:00
vector refactor(canvas): adopt immutable CanvasKit paths (#554) 2026-08-18 23:09:45 +03:00
vue fix(editor): harden snapping edge cases 2026-08-19 12:33:32 +03:00
perf.bench.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00