v0.15.0
OpenBMB/VoxCPMv0.15.0Sep 16, 2026by github-actions[bot]
Upgrading?
AI Summary
A major release introducing MCP SDK v2, WebMCP, and significant UI/UX improvements including command palette and AI chat management.
Key Highlights
- MCP SDK v2 migration with native Valibot schemas
- WebMCP support for browser agents
- Command palette for editor and application actions
- AI chat history management and local storage
Breaking Changes
- Use MCP SDK v2 server/client types
- Replace Scene Graph overrides records with instanceOverrides
- Update custom Vue SDK binding providers
- Use Vue 3.5.41 or newer
New Features
- WebMCP design inspection and editing
- Component variant sets
- Design inspection with Vision model
- Snap to geometry and alignment guides
- CodeMirror integration for Design JSX and HTML/CSS
Full Release Notes
### Breaking changes - Use MCP SDK v2 server/client types for programmatic MCP integrations. Define custom tools with native Valibot `input` schemas and execution metadata instead of `params`, `ParamDef`, or `paramToZod()`. - Replace Scene Graph `overrides` records with `instanceOverrides`, using separate `self` and `descendants` maps. Rename `figmaDerivedLayout`, `figmaDerivedTextGlyphs`, and `FigmaDerivedTextGlyph` to `derivedLayout`, `derivedTextGlyphs`, and `DerivedTextGlyph`. - Update custom Vue SDK binding providers to implement `getBindingId()` and handle `unresolved`. Replace `setValue()` with `prepareEdit()`, returning a stable edit key, captured value, setter, and restoration callback. - Replace Vue SDK `useDialogMessages()`, `dialogMessages`, and their catalog keys with the corresponding product-domain message composables and catalogs. - Use Vue 3.5.41 or newer within Vue 3 for the Vue SDK, and CanvasKit 0.41.1 or newer when supplying its optional CanvasKit peer. Update custom CanvasKit integrations to use `PathBuilder` and immutable `Path` operations. ### Added - Expose design inspection and undoable layer-property and variable edits to browser agents through experimental WebMCP in supporting browsers, with explicit Off, Inspect, and Edit access controls in Settings. - Control custom tool exposure independently through `mcp`, `ai`, and `webmcp` exclusions. Tools are included by default, subject to execution support and user permissions. - Bind Design JSX spacing, sizing, corners, and typography directly to numeric document variables. - Define component properties and assign instance values in Design JSX using stable property IDs. - Save AI conversations and attachment previews locally, switch between chats, rename or delete them, and browse saved transcripts across documents. Choose whether reasoning stays collapsed, expands while thinking, or stays expanded, with animated disclosure controls that respect reduced motion. - Add a searchable command palette for editor and application actions. - Search current AI provider catalogs from model pickers, with curated recommendations, recent compatible models, and offline fallbacks. - Render triangle and line arrow stroke caps on lines and open vector paths, and choose them from the stroke cap picker. - Expose component properties and instance-swap targets through the Figma API and automation. - Create, select, move, duplicate, transfer, and delete canvas and frame guides directly from rulers, with undoable edits, measurements, context-menu actions, and `.fig` round-trip fidelity. - Open to a unified home with recent and configured storage documents in grid or list layouts, and open multiple selected design files in separate tabs. - Snap vector points, moved layers, and resized edges to nearby geometry, guides, frame and canvas bounds, and whole-pixel coordinates, with visible alignment guides and persistent snapping preferences. - Run Pi through AI SDK HarnessAgent as a configurable desktop provider with saved model profiles, secure credentials, existing MCP design tools, and per-profile thinking and permission settings. - Combine components into variant sets through Figma API scripts and automation. - Add local AI usage and technical diagnostics, including token telemetry, provider/model summaries, recent failures, configurable retention, export, and clear controls (#588). - Import, render, edit, resize, select, and export Figma text-on-path layers while preserving their curved glyph layout. - Show temporary Figma-style distance measurements between selected and Option/Alt-hovered layers (#491). - Edit Design JSX and HTML/CSS previews in CodeMirror, with theme-aware highlighting, Tailwind viewing, completion, diagnostics, bounded execution, and session-level undo (#130). - Set provider-specific reasoning effort on supported AI model profiles (#454). - Show unavailable or substituted document fonts with affected-layer selection and retry actions, and expose font fidelity through the Figma API, MCP, and `openpencil fonts [file] --json`. Choose `warn`, `strict`, or `allow` font-substitution policies for file-backed CLI raster and PDF exports with `--font-policy` (#503, #625). - Add reusable remote MCP connections for ACP agents, with Streamable HTTP endpoints and credential-backed bearer tokens. - Author and manage multidimensional component variants and published component libraries, including revision previews, linked-instance updates, stable library identities, offline catalogs, storage-backed catalogs, and read-only library definitions (#239). - Recover unsaved and pathless documents locally, including after closing their tabs, with options to disable recovery and restore or discard retained snapshots (#487, #505, #574). - Inspect selected designs with a configured Vision model and attach images to AI chat with bounded analysis and previews (#232, #471). - Pin selected layers as explicit AI chat context, show collapsible reasoning, copy individual responses, and grow the composer with multiline prompts (#13). ### Changed - Refresh the OpenPencil mark across the editor, documentation, browser tabs, installed web apps, and desktop icons, with small-size and dark-background adaptations. - Explore editable component, typography, and paint comparisons in the demo, with the original examples preserved on a reference page. - Use compact desktop Home search actions with consistent responsive layout and control sizing. - Keep pixel-grid rounding invisible while showing alignment guides only for real geometry, objects, and canvas/layout guides. - Embed images when copying selections into Figma, and preserve geometry, text sizing, component links, variables, modes, and shared styles when pasting within OpenPencil. - Choose the app theme and whether animations follow the system or stay off under Appearance in General Settings, with live updates and persistent preferences. - Simplify property panels with fill and stroke style pickers in section headers, concise effect style rows, and collapsed equal corner fields when all four share a variable. Preserve applied and missing styles and remove the redundant Dimensions heading for text layers. - Open variable pickers below their trigger when space permits, flipping above near the viewport edge. - Keep AI chat preferences with the model overview and edit models in a fixed-size Settings pane with explicit Save and Cancel actions. - Match page-list density to the layer tree and add subtle, reduced-motion-aware dialog transitions. - Fade in streaming Markdown list items and code lines without animating completed responses. - Vertically center shaped section titles and allow renaming a section by double-clicking its canvas label. - Load supported online fonts before revealing imported pages, preserve substituted text during editing, and shape canvas labels with Inter typography and shared Arabic/CJK font fallback. - Complete translated app, accessibility, font, color, file, clipboard, collaboration, chat, vectorization, storage, recovery, component-library, and connection feedback across supported locales, and synchronize document language with the selected locale. - Separate local MCP server controls, browser WebMCP access, and remote connections in Settings, with inline searchable tool permissions. - Show translated field errors, hints, and consistent contextual alerts in Settings forms, focus the first invalid field on submission, and explain missing requirements instead of silently disabling Save or Test. - Pan horizontally with Shift+wheel while preserving native horizontal trackpad movement. ### Fixed - Render four-point diamond gradients, preserve text layout across fill types, and keep image colors accurate on sRGB displays. - Keep newly created and edited objects visible during zoom instead of replaying outdated scene content. - Keep property fields and paint previews live during editing, rotated selection labels readable and aligned, and object edges stable when previews settle. - Show compact bordered section labels with inset nested titles and clearer hover feedback. - Keep Undo and Redo commands available as edit history changes, without requiring another scene edit. - Avoid recursive desktop HTTP proxy requests when font downloads intercept Tauri IPC traffic. - Keep FIT image fills proportional, centered, and fully visible without stretching or cropped edges. - Preserve edited instance text, including cleared labels, when saving and reopening `.fig` files. - Honor `.pen` frame layout defaults and sizing and padding shorthands so imported auto-layout frames keep their computed dimensions and child positions (#564). - Avoid macOS Keychain prompts during credential status checks and pause repeated credential access after failures until explicitly retried from Settings. - Honor explicit Design JSX instance dimensions and preserve authored overrides through component synchronization. - Route browser Command/Ctrl plus and minus shortcuts to canvas zoom instead of page zoom. - Resolve `$name` references in imported `.pen` fills, stroke fills, font families, dimensions, and spacing without requiring a `--` prefix (#563). - Resolve bound fields in each layer’s mode, keep variable edits scoped and undoable, and make broken bindings visible and recoverable. - Display letter spacing in pixels and support explicit automatic line height. - Prevent the stock photo tool from replacing text, lines, structural layers, or containers with content while supporting closed shape geometry. - Preserve imported Figma text alignment metadata, explicit normal blend modes on text and vectors, and implicit fixed text sizing in auto-layout frames across save and reload. - Render imported Figma strokes with odd-length dash patterns correctly. - Stop showing a misleading desktop-only warning when web font loading or catalog lookup fails. - Resolve fallback fonts reliably for cached characters, mixed-language text, and text-case transformations. - Preserve imported Figma divider-line geometry during auto-layout recomputation, preventing half-pixel shifts on save and reload. - Resolve package imports under Node and Bun from ordinary tarballs while preserving Bun source-first workspace execution (#663). - Use the user's home directory as the default MCP file root on Windows, avoiding the caller's unreliable working directory. - Open legacy raw `.fig` files that store the Kiwi document and thumbnail without a ZIP wrapper (#582). - Preserve a frame's auto-layout HUG sizing, variable bindings, and variable modes when converting it into a component through the Figma API or automation (#595). - Run `openpencil import` on Node so npm-installed CLI users no longer encounter `Bun is not defined` (#575). - Generate recent-file previews from the conventional `Cover` page without modifying the source file. - Resolve Vue SDK semantic test selectors correctly in non-browser runtimes (#397). - Commit vector vertex and Bézier-handle edits when the pointer is released and keep transformed vector-edit overlays aligned (#586). - Preserve app-created component properties and instance-swap targets across `.fig` save and reload cycles (#548). - Reconnect desktop automation to an already-running MCP server through its discovery file (#546). - Keep text-editing carets, hit testing, and selection highlights aligned with vertically centered or bottom-aligned text (#539). - Match AI chat code-block colors and backgrounds to the active theme, and let desktop users select and copy chat text without replacing it with canvas layers (#537, #538). - Restore visible above, below, and child drop feedback while dragging layers in the Layers panel. - Place editor-created instances beside nested source components in world space, including transformed parents. - Prevent malformed collaboration updates from corrupting synchronized nodes or derived text rendering. - Transfer native `.fig` exports over binary Tauri IPC, preventing large desktop saves from being truncated or exhausting WebView memory (#484). - Decode zstd-compressed FIG containers and reject invalid compressed payloads (#397). - Compose caller CSS with Tailwind defaults when importing DOM/CSS documents (#397). - Preserve desktop HTTP timeout, abort, and empty-response semantics (#397). - Report whether missing Figma clipboard images were actually fetched (#397). - Report exhausted provider credit, request failures, and output-token limits through localized chat toasts and copied diagnostics (#451, #454). - Prevent Windows desktop crashes when loading large system fonts for non-Latin text. - Preserve open vector segments when the same vector network also contains filled regions (#450). - Match Figma Plugin API behavior for `rescale()`, page `backgrounds`, and nullable visual `absoluteRenderBounds` (#442). - Keep imported and pasted Figma instances linked to their remapped source components so later component edits update existing instances (#385). - Restore native copy, cut, and paste shortcuts in desktop text inputs while preserving design clipboard handling on the canvas. - Preserve committed desktop text input when the WebView supplies text through the input event before updating the hidden text field (#607). - Preserve selected layers when browser clipboard serialization fails during cut operations, and fall back to the session clipboard when system clipboard access is unavailable (#568). - Treat MCP tool results with an omitted `isError` field as successful while preserving explicit MCP errors (#583). - Preserve effective nested instance text overrides when importing complex Figma component hierarchies (#102). - Preserve SVG clip paths, including clip shapes referenced through `<use>`, when importing editable vectors. - Preserve circles, ellipses, rectangles, lines, polylines, and polygons supplied as JSX children of inline SVG elements (#452). - Stop local MCP servers after the app disconnects instead of leaving orphaned background processes (#494). - Prevent unbounded instance duplication when editing Figma-imported or pasted components with serialized or renamed children, keep extra instance children in their intended order, and avoid pasted instances re-linking pre-existing instances during clipboard import. ### Performance - Reduce pauses after repeated frame creation without leaving hidden property edits or popups active. - Reduce repeated text shaping and scene invalidation while moving and resizing objects, and reuse fitting canvas labels during zoom. - Reduce unnecessary layout work after automation and Figma API edits by updating only affected layers and containers. - Keep rapid trackpad zoom reversals and effect-heavy document navigation responsive by cancelling obsolete reconstruction and reusing safe raster snapshots. - Show the FIG page list from a lightweight Kiwi scan before materializing the full document. - Avoid redundant collaboration writes when synchronized node fields have not changed. - Release completed streaming-response state to reduce retained chat memory (#544). - Open large documents faster by reducing repeated position calculations when finding layers under the pointer (#527). - Avoid redundant autosaves while a `.fig` export is in progress, while ensuring newer edits are saved afterward (#528). - Defer JSX generation and syntax highlighting until the Code panel is active, keeping large canvas selections responsive (#500). - Paste large, flat Figma selections faster by avoiding repeated scans of clipboard layers (#500). - Reduce peak memory during `.fig` export by sharing immutable binary resources with the isolated export graph. ### Security - Protect new real-time collaboration sessions with stronger invitation credentials.
Related Repositories
public-apis/public-apis★ 491,126
A collective list of free APIs
NousResearch/hermes-agent★ 255,895
The agent that grows with you
yt-dlp/yt-dlp★ 199,990
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,478
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,699
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.