[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"package:cask:openpencil:en":3,"releases:stats:cask:openpencil:en":493,"releases:cask:openpencil:1:false:false:en":494,"releases-count:cask:openpencil:true:en":547},{"accentColor":4,"artifacts":5,"autoUpdates":30,"categories":31,"conflictsWith":38,"dependsOn":41,"deprecated":34,"description":49,"descriptionEn":50,"developer":51,"disabled":34,"displayName":52,"downloadSha256":53,"downloadSize":54,"downloadUrl":55,"editorChoice":34,"formulaeUrl":56,"homepage":57,"iconUrl":58,"installCommand":59,"installs":60,"installs30d":61,"isFont":34,"isLibrary":34,"kegOnly":34,"kind":64,"latestRelease":65,"machineTranslated":34,"name":52,"names":84,"platforms":86,"primaryCategory":460,"rank30d":461,"releaseCount":462,"releaseStats":463,"repoUrl":470,"screenshots":471,"sourceLocale":78,"sourceUrl":479,"summary":480,"summaryTranslation":481,"supports":482,"tags":484,"tap":491,"token":85,"version":83,"versionChangedAt":492},"#1C7E78",{"apps":6,"binaries":8,"entries":9,"pkgs":29},[7],"OpenPencil.app",[],[10,17],{"declaration":11,"phase":14,"sources":15,"target":13,"type":16},{"app":12,"target":13},[7],"\u002FApplications\u002FOpenPencil.app","install",[7],"app",{"declaration":18,"phase":26,"sources":27,"type":28},{"zap":19},[20],{"trash":21},[22,23,24,25],"~\u002FLibrary\u002FApplication Support\u002Fnet.dannote.open-pencil","~\u002FLibrary\u002FCaches\u002Fnet.dannote.open-pencil","~\u002FLibrary\u002FPreferences\u002Fnet.dannote.open-pencil.plist","~\u002FLibrary\u002FSaved Application State\u002Fnet.dannote.open-pencil.savedState","cleanup",[],"zap",[],true,[32],{"icon":33,"machineTranslated":34,"name":35,"slug":36,"sourceLocale":37},"lucide:pen-tool",false,"Design","design","zh-CN",{"casks":39,"formulae":40},[],[],{"arch":42,"casks":45,"formulae":46,"requirements":47},[43,44],"arm64","x86_64",[],[],{"macos":48},{},"OpenPencil is an open-source design editor that opens `.fig` and `.pen` documents. It is available as a Tauri desktop application and a browser app, with a separate programmable toolkit for automation and custom editing surfaces. The project is actively developed and warns that some features still have rough edges.\n\n## Design workflows\nWork with layers, vector graphics, reusable components and variants, variables, typography, auto layout and CSS Grid. The official project supports Figma file read\u002Fwrite and copy\u002Fpaste workflows, although compatibility gaps remain documented in its roadmap. Export selections as images or code, and use document tools to inspect colors, spacing and design tokens. Version 0.14.0 adds editable PowerPoint export and HTML\u002FCSS\u002FTailwind\u002FJSX import.\n\n## AI and automation\nBuilt-in chat can create and modify design nodes through tool calls. Bring your own provider credentials; supported providers and models have different compatibility limits. The separate CLI and MCP packages support headless inspection and editing, while desktop agent integrations require their local agent CLIs. The Vue SDK lets developers build custom editors. Version 0.15.1 exposes separate built-in AI and local MCP tool permissions and configurable chat step limits.\n\n## Collaboration and privacy\nPeer-to-peer collaboration uses WebRTC, with shared cursors, presence and viewport following. Local documents do not require a hosted account, but cloud storage, remote collaboration and configured AI providers can transmit data. Review provider and tool-access settings before exposing private documents or enabling side-effect tools.\n\n## macOS installation\nInstall the desktop app with `brew install --cask openpencil`. The current official README requires macOS 13 or later with current Safari updates. This listing records version 0.15.1 and measures the exact aarch64 application archive; a separate Intel artifact is recorded in Homebrew variations. CLI and MCP installation is separate from the desktop cask. The project is MIT licensed.\n\n## Sources\n- [Official repository and README](https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil)\n- [Official documentation](https:\u002F\u002Fopenpencil.dev\u002F)\n- [Exact 0.15.1 release](https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Ftag\u002Fv0.15.1)\n- [Homebrew cask](https:\u002F\u002Fgithub.com\u002FHomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fo\u002Fopenpencil.rb)\n","Open-source design editor compatible with Figma","OpenPencil contributors","OpenPencil","b7fcfcbc5d3e486b0c13a3caa90f442c256413bd3226108efe013ed686ec9c98",14508013,"https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Fdownload\u002Fv0.15.1\u002FOpenPencil_aarch64.app.tar.gz","https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Fopenpencil","https:\u002F\u002Fopenpencil.dev\u002F","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002F2cdea0eb5d35\u002F156ec384df06-256.png","brew install --cask openpencil",{"d30":61,"d365":62,"d90":63},216,2103,1221,"cask",{"bodyMarkdown":66,"brewCommittedAt":67,"hasNotes":30,"id":68,"isLatest":30,"isPrerelease":34,"machineTranslated":34,"publishedAt":69,"sections":70,"source":77,"sourceLocale":78,"summary":79,"title":80,"translation":81,"version":83},"### Added\n\n- Configure built-in AI and local MCP tool access independently on a Tool access page, including optional extended AI tools, searchable read-only and side-effect groups, and per-target defaults (#584).\n- Set the built-in AI's maximum steps per message in Chat settings, including a custom number, with consistent stopping and remaining-step warnings (#573).\n- Open documents and jump to a named layer from `openpencil:\u002F\u002Fopen?file=&node=` links, resolving the file against open tabs or a one-time file picker. Path segments match the way the filesystem does: case-insensitively on macOS and Windows, exactly on Linux.\n- Open documents and jump to a named layer in the web app from `?file=&node=` links, fetching the file from an `https:` URL without credentials, ignoring the URL fragment, and refusing a document larger than 64 MiB — a ceiling the automation bridge's `openFile` now shares.\n\n### Changed\n\n- Create new documents with the sRGB colour profile, so Display P3 is reserved for documents that declare it.\n- Export diagnostics from Settings only, with a retention count you choose. AI requests and tool activity now carry conversation and request identifiers, while chat no longer offers a separate diagnostic log or includes transcript content.\n- Replace the demo's legacy reference page with a component library on the first page, including component sets, linked instances, component properties, and the variable collections, and show the standard canvas loading overlay and tab indicator while it is generated instead of an empty canvas.\n\n### Fixed\n\n- Store colours edited in the colour picker in the document's colour profile, and convert them on the way to the display, so a Display-P3 document no longer looks different on an sRGB display than on a wide-gamut one.\n- Keep Display-P3 documents rendering correctly in wide gamut where the browser supports it and in sRGB elsewhere, fixing the black rectangles and incorrect blend colours, with a dismissible notice when wide gamut is unavailable.\n- Classify MCP `open_file` and `close_file` operations as read-only hints, and close opened document tabs through the new `close_file` tool with the usual unsaved-change prompt.\n- Let the desktop app use an MCP server you started yourself by allowing the app's own origin by default, instead of requiring `OPENPENCIL_MCP_CORS_ORIGIN`.\n- Explain why the local MCP server did not start — a missing `@open-pencil\u002Fmcp` install, a denied command, an early exit, or an unreachable address — with translated guidance, and find a globally installed server when the desktop app is launched from the system shell.\n- Animate the AI chat tool-call disclosure, which expanded and collapsed without motion because its animation classes were misspelled.\n- Mark unsaved documents and ask whether to save before closing a tab, the desktop window, or the application, rather than relying on recovery alone.\n- Defer AI provider connections and system credential reads until you send a message or use a connected feature, so opening documents and browsing chat history no longer trigger unexpected credential prompts.\n- Save and recover documents whose text uses disabled numeric, fraction, or small-caps OpenType features, which previously failed to write a `.fig` file.\n- Update instance text properties on the canvas while typing, with grouped undo for rapid edits.\n- Point Homebrew installation instructions to the official `openpencil` cask and document separate CLI installation.\n- Reach the custom model option in the model picker for providers with large model catalogs instead of requiring a search for it.\n\n### Performance\n\n- Reduce editor pauses while generating recovery snapshots and exporting text-heavy `.fig` documents.\n- Recompute layout only for the pages an edit affects, instead of every page, when editing a component or its instances.\n\n\nSource: https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Ftag\u002Fv0.15.1","2026-09-18T16:31:18Z",901,"2026-09-18T15:40:46Z",[71],{"area":72,"items":73},"Highlights",[74,75,76],"Separates AI and MCP tool permissions and adds chat step limits.","Fixes color-profile rendering and prompts before closing unsaved documents.","Defers AI credential access and improves export and recovery performance.","editorial","en-US","Adds separate AI\u002FMCP tool permissions, chat step limits and document links; fixes color profiles, unsaved-document prompts, font saving and credential prompts, and improves export performance.","OpenPencil 0.15.1",{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},"source","0.15.1",[52,85],"openpencil",[87,116,142,169,195,222,248,275,301,328,354,381,407,434],{"arch":44,"artifacts":88,"conflictsWith":103,"dependsOn":106,"downloadSha256":112,"downloadUrl":113,"macos":114,"requiresRosetta":34,"tag":115,"version":83},{"apps":89,"binaries":90,"entries":91,"pkgs":102},[7],[],[92,96],{"declaration":93,"phase":14,"sources":95,"target":13,"type":16},{"app":94,"target":13},[7],[7],{"declaration":97,"phase":26,"sources":101,"type":28},{"zap":98},[99],{"trash":100},[22,23,24,25],[],[],{"casks":104,"formulae":105},[],[],{"arch":107,"casks":108,"formulae":109,"requirements":110},[44],[],[],{"macos":111},{},"1700ff3ac4c6391288d6b3ca00bd13bd59e3811ddb606869fbe7c319de87755e","https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Fdownload\u002Fv0.15.1\u002FOpenPencil_x64.app.tar.gz","27","golden_gate",{"arch":43,"artifacts":117,"conflictsWith":132,"dependsOn":135,"downloadSha256":53,"downloadUrl":55,"macos":114,"requiresRosetta":34,"tag":141,"version":83},{"apps":118,"binaries":119,"entries":120,"pkgs":131},[7],[],[121,125],{"declaration":122,"phase":14,"sources":124,"target":13,"type":16},{"app":123,"target":13},[7],[7],{"declaration":126,"phase":26,"sources":130,"type":28},{"zap":127},[128],{"trash":129},[22,23,24,25],[],[],{"casks":133,"formulae":134},[],[],{"arch":136,"casks":137,"formulae":138,"requirements":139},[43],[],[],{"macos":140},{},"arm64_golden_gate",{"arch":44,"artifacts":143,"conflictsWith":158,"dependsOn":161,"downloadSha256":112,"downloadUrl":113,"macos":167,"requiresRosetta":34,"tag":168,"version":83},{"apps":144,"binaries":145,"entries":146,"pkgs":157},[7],[],[147,151],{"declaration":148,"phase":14,"sources":150,"target":13,"type":16},{"app":149,"target":13},[7],[7],{"declaration":152,"phase":26,"sources":156,"type":28},{"zap":153},[154],{"trash":155},[22,23,24,25],[],[],{"casks":159,"formulae":160},[],[],{"arch":162,"casks":163,"formulae":164,"requirements":165},[44],[],[],{"macos":166},{},"26","tahoe",{"arch":43,"artifacts":170,"conflictsWith":185,"dependsOn":188,"downloadSha256":53,"downloadUrl":55,"macos":167,"requiresRosetta":34,"tag":194,"version":83},{"apps":171,"binaries":172,"entries":173,"pkgs":184},[7],[],[174,178],{"declaration":175,"phase":14,"sources":177,"target":13,"type":16},{"app":176,"target":13},[7],[7],{"declaration":179,"phase":26,"sources":183,"type":28},{"zap":180},[181],{"trash":182},[22,23,24,25],[],[],{"casks":186,"formulae":187},[],[],{"arch":189,"casks":190,"formulae":191,"requirements":192},[43],[],[],{"macos":193},{},"arm64_tahoe",{"arch":44,"artifacts":196,"conflictsWith":211,"dependsOn":214,"downloadSha256":112,"downloadUrl":113,"macos":220,"requiresRosetta":34,"tag":221,"version":83},{"apps":197,"binaries":198,"entries":199,"pkgs":210},[7],[],[200,204],{"declaration":201,"phase":14,"sources":203,"target":13,"type":16},{"app":202,"target":13},[7],[7],{"declaration":205,"phase":26,"sources":209,"type":28},{"zap":206},[207],{"trash":208},[22,23,24,25],[],[],{"casks":212,"formulae":213},[],[],{"arch":215,"casks":216,"formulae":217,"requirements":218},[44],[],[],{"macos":219},{},"15","sequoia",{"arch":43,"artifacts":223,"conflictsWith":238,"dependsOn":241,"downloadSha256":53,"downloadUrl":55,"macos":220,"requiresRosetta":34,"tag":247,"version":83},{"apps":224,"binaries":225,"entries":226,"pkgs":237},[7],[],[227,231],{"declaration":228,"phase":14,"sources":230,"target":13,"type":16},{"app":229,"target":13},[7],[7],{"declaration":232,"phase":26,"sources":236,"type":28},{"zap":233},[234],{"trash":235},[22,23,24,25],[],[],{"casks":239,"formulae":240},[],[],{"arch":242,"casks":243,"formulae":244,"requirements":245},[43],[],[],{"macos":246},{},"arm64_sequoia",{"arch":44,"artifacts":249,"conflictsWith":264,"dependsOn":267,"downloadSha256":112,"downloadUrl":113,"macos":273,"requiresRosetta":34,"tag":274,"version":83},{"apps":250,"binaries":251,"entries":252,"pkgs":263},[7],[],[253,257],{"declaration":254,"phase":14,"sources":256,"target":13,"type":16},{"app":255,"target":13},[7],[7],{"declaration":258,"phase":26,"sources":262,"type":28},{"zap":259},[260],{"trash":261},[22,23,24,25],[],[],{"casks":265,"formulae":266},[],[],{"arch":268,"casks":269,"formulae":270,"requirements":271},[44],[],[],{"macos":272},{},"14","sonoma",{"arch":43,"artifacts":276,"conflictsWith":291,"dependsOn":294,"downloadSha256":53,"downloadUrl":55,"macos":273,"requiresRosetta":34,"tag":300,"version":83},{"apps":277,"binaries":278,"entries":279,"pkgs":290},[7],[],[280,284],{"declaration":281,"phase":14,"sources":283,"target":13,"type":16},{"app":282,"target":13},[7],[7],{"declaration":285,"phase":26,"sources":289,"type":28},{"zap":286},[287],{"trash":288},[22,23,24,25],[],[],{"casks":292,"formulae":293},[],[],{"arch":295,"casks":296,"formulae":297,"requirements":298},[43],[],[],{"macos":299},{},"arm64_sonoma",{"arch":44,"artifacts":302,"conflictsWith":317,"dependsOn":320,"downloadSha256":112,"downloadUrl":113,"macos":326,"requiresRosetta":34,"tag":327,"version":83},{"apps":303,"binaries":304,"entries":305,"pkgs":316},[7],[],[306,310],{"declaration":307,"phase":14,"sources":309,"target":13,"type":16},{"app":308,"target":13},[7],[7],{"declaration":311,"phase":26,"sources":315,"type":28},{"zap":312},[313],{"trash":314},[22,23,24,25],[],[],{"casks":318,"formulae":319},[],[],{"arch":321,"casks":322,"formulae":323,"requirements":324},[44],[],[],{"macos":325},{},"13","ventura",{"arch":43,"artifacts":329,"conflictsWith":344,"dependsOn":347,"downloadSha256":53,"downloadUrl":55,"macos":326,"requiresRosetta":34,"tag":353,"version":83},{"apps":330,"binaries":331,"entries":332,"pkgs":343},[7],[],[333,337],{"declaration":334,"phase":14,"sources":336,"target":13,"type":16},{"app":335,"target":13},[7],[7],{"declaration":338,"phase":26,"sources":342,"type":28},{"zap":339},[340],{"trash":341},[22,23,24,25],[],[],{"casks":345,"formulae":346},[],[],{"arch":348,"casks":349,"formulae":350,"requirements":351},[43],[],[],{"macos":352},{},"arm64_ventura",{"arch":44,"artifacts":355,"conflictsWith":370,"dependsOn":373,"downloadSha256":112,"downloadUrl":113,"macos":379,"requiresRosetta":34,"tag":380,"version":83},{"apps":356,"binaries":357,"entries":358,"pkgs":369},[7],[],[359,363],{"declaration":360,"phase":14,"sources":362,"target":13,"type":16},{"app":361,"target":13},[7],[7],{"declaration":364,"phase":26,"sources":368,"type":28},{"zap":365},[366],{"trash":367},[22,23,24,25],[],[],{"casks":371,"formulae":372},[],[],{"arch":374,"casks":375,"formulae":376,"requirements":377},[44],[],[],{"macos":378},{},"12","monterey",{"arch":43,"artifacts":382,"conflictsWith":397,"dependsOn":400,"downloadSha256":53,"downloadUrl":55,"macos":379,"requiresRosetta":34,"tag":406,"version":83},{"apps":383,"binaries":384,"entries":385,"pkgs":396},[7],[],[386,390],{"declaration":387,"phase":14,"sources":389,"target":13,"type":16},{"app":388,"target":13},[7],[7],{"declaration":391,"phase":26,"sources":395,"type":28},{"zap":392},[393],{"trash":394},[22,23,24,25],[],[],{"casks":398,"formulae":399},[],[],{"arch":401,"casks":402,"formulae":403,"requirements":404},[43],[],[],{"macos":405},{},"arm64_monterey",{"arch":44,"artifacts":408,"conflictsWith":423,"dependsOn":426,"downloadSha256":112,"downloadUrl":113,"macos":432,"requiresRosetta":34,"tag":433,"version":83},{"apps":409,"binaries":410,"entries":411,"pkgs":422},[7],[],[412,416],{"declaration":413,"phase":14,"sources":415,"target":13,"type":16},{"app":414,"target":13},[7],[7],{"declaration":417,"phase":26,"sources":421,"type":28},{"zap":418},[419],{"trash":420},[22,23,24,25],[],[],{"casks":424,"formulae":425},[],[],{"arch":427,"casks":428,"formulae":429,"requirements":430},[44],[],[],{"macos":431},{},"11","big_sur",{"arch":43,"artifacts":435,"conflictsWith":450,"dependsOn":453,"downloadSha256":53,"downloadUrl":55,"macos":432,"requiresRosetta":34,"tag":459,"version":83},{"apps":436,"binaries":437,"entries":438,"pkgs":449},[7],[],[439,443],{"declaration":440,"phase":14,"sources":442,"target":13,"type":16},{"app":441,"target":13},[7],[7],{"declaration":444,"phase":26,"sources":448,"type":28},{"zap":445},[446],{"trash":447},[22,23,24,25],[],[],{"casks":451,"formulae":452},[],[],{"arch":454,"casks":455,"formulae":456,"requirements":457},[43],[],[],{"macos":458},{},"arm64_big_sur",{"icon":33,"machineTranslated":34,"name":35,"slug":36,"sourceLocale":37},485,5,{"brewLag":464,"cadence":468,"count30d":469},{"compared":465,"earlierCount":466,"medianMinutes":467},3,0,50,"biweekly",2,"https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil",[472],{"caption":473,"height":474,"machineTranslated":34,"sourceLocale":78,"theme":475,"thumbUrl":476,"url":477,"width":478},"Official OpenPencil editor screenshot from the project README.",839,"dark","https:\u002F\u002Fcdn.opennavo.com\u002Fscreenshots\u002Fuploads\u002Fscreenshot\u002F7a48a2765b05\u002Fa0747d9176f1-640.png","https:\u002F\u002Fcdn.opennavo.com\u002Fscreenshots\u002Fuploads\u002Fscreenshot\u002F7a48a2765b05\u002Fa0747d9176f1-1280.png",1280,"https:\u002F\u002Fgithub.com\u002Fhomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fo\u002Fopenpencil.rb","An open-source design editor for Figma and Pencil files, with AI-assisted editing, components, real-time collaboration and programmable CLI\u002FMCP workflows.",{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},{"arm64":30,"requiresRosetta":34,"status":483,"x86_64":30},"known",[485,486,487,488,489,490],"Design Editor","Figma","AI Design","MCP","Vector Graphics","Open Source","homebrew\u002Fcask","2026-10-07T09:38:40.131182Z",null,{"current":495,"records":496,"size":544,"stats":545,"total":462},1,[497,502,517,532,539],{"bodyMarkdown":66,"brewCommittedAt":67,"hasNotes":30,"id":68,"isLatest":30,"isPrerelease":34,"machineTranslated":34,"publishedAt":69,"sections":498,"source":77,"sourceLocale":78,"summary":79,"title":80,"translation":501,"version":83},[499],{"area":72,"items":500},[74,75,76],{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},{"bodyMarkdown":503,"brewCommittedAt":504,"hasNotes":30,"id":505,"isLatest":34,"isPrerelease":34,"machineTranslated":34,"publishedAt":506,"sections":507,"source":77,"sourceLocale":78,"summary":513,"title":514,"translation":515,"version":516},"### Breaking changes\n\n- Use MCP SDK v2 server\u002Fclient types for programmatic MCP integrations. Define custom tools with native Valibot `input` schemas and execution metadata instead of `params`, `ParamDef`, or `paramToZod()`.\n- Replace Scene Graph `overrides` records with `instanceOverrides`, using separate `self` and `descendants` maps. Rename `figmaDerivedLayout`, `figmaDerivedTextGlyphs`, and `FigmaDerivedTextGlyph` to `derivedLayout`, `derivedTextGlyphs`, and `DerivedTextGlyph`.\n- 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.\n- Replace Vue SDK `useDialogMessages()`, `dialogMessages`, and their catalog keys with the corresponding product-domain message composables and catalogs.\n- 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.\n\n### Added\n\n- 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.\n- Control custom tool exposure independently through `mcp`, `ai`, and `webmcp` exclusions. Tools are included by default, subject to execution support and user permissions.\n- Bind Design JSX spacing, sizing, corners, and typography directly to numeric document variables.\n- Define component properties and assign instance values in Design JSX using stable property IDs.\n- 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.\n- Add a searchable command palette for editor and application actions.\n- Search current AI provider catalogs from model pickers, with curated recommendations, recent compatible models, and offline fallbacks.\n- Render triangle and line arrow stroke caps on lines and open vector paths, and choose them from the stroke cap picker.\n- Expose component properties and instance-swap targets through the Figma API and automation.\n- 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.\n- 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.\n- 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.\n- 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.\n- Combine components into variant sets through Figma API scripts and automation.\n- Add local AI usage and technical diagnostics, including token telemetry, provider\u002Fmodel summaries, recent failures, configurable retention, export, and clear controls (#588).\n- Import, render, edit, resize, select, and export Figma text-on-path layers while preserving their curved glyph layout.\n- Show temporary Figma-style distance measurements between selected and Option\u002FAlt-hovered layers (#491).\n- Edit Design JSX and HTML\u002FCSS previews in CodeMirror, with theme-aware highlighting, Tailwind viewing, completion, diagnostics, bounded execution, and session-level undo (#130).\n- Set provider-specific reasoning effort on supported AI model profiles (#454).\n- 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).\n- Add reusable remote MCP connections for ACP agents, with Streamable HTTP endpoints and credential-backed bearer tokens.\n- 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).\n- 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).\n- Inspect selected designs with a configured Vision model and attach images to AI chat with bounded analysis and previews (#232, #471).\n- Pin selected layers as explicit AI chat context, show collapsible reasoning, copy individual responses, and grow the composer with multiline prompts (#13).\n\n### Changed\n\n- Refresh the OpenPencil mark across the editor, documentation, browser tabs, installed web apps, and desktop icons, with small-size and dark-background adaptations.\n- Explore editable component, typography, and paint comparisons in the demo, with the original examples preserved on a reference page.\n- Use compact desktop Home search actions with consistent responsive layout and control sizing.\n- Keep pixel-grid rounding invisible while showing alignment guides only for real geometry, objects, and canvas\u002Flayout guides.\n- Embed images when copying selections into Figma, and preserve geometry, text sizing, component links, variables, modes, and shared styles when pasting within OpenPencil.\n- Choose the app theme and whether animations follow the system or stay off under Appearance in General Settings, with live updates and persistent preferences.\n- 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.\n- Open variable pickers below their trigger when space permits, flipping above near the viewport edge.\n- Keep AI chat preferences with the model overview and edit models in a fixed-size Settings pane with explicit Save and Cancel actions.\n- Match page-list density to the layer tree and add subtle, reduced-motion-aware dialog transitions.\n- Fade in streaming Markdown list items and code lines without animating completed responses.\n- Vertically center shaped section titles and allow renaming a section by double-clicking its canvas label.\n- Load supported online fonts before revealing imported pages, preserve substituted text during editing, and shape canvas labels with Inter typography and shared Arabic\u002FCJK font fallback.\n- 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.\n- Separate local MCP server controls, browser WebMCP access, and remote connections in Settings, with inline searchable tool permissions.\n- 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.\n- Pan horizontally with Shift+wheel while preserving native horizontal trackpad movement.\n\n### Fixed\n\n- Render four-point diamond gradients, preserve text layout across fill types, and keep image colors accurate on sRGB displays.\n- Keep newly created and edited objects visible during zoom instead of replaying outdated scene content.\n- Keep property fields and paint previews live during editing, rotated selection labels readable and aligned, and object edges stable when previews settle.\n- Show compact bordered section labels with inset nested titles and clearer hover feedback.\n- Keep Undo and Redo commands available as edit history changes, without requiring another scene edit.\n- Avoid recursive desktop HTTP proxy requests when font downloads intercept Tauri IPC traffic.\n- Keep FIT image fills proportional, centered, and fully visible without stretching or cropped edges.\n- Preserve edited instance text, including cleared labels, when saving and reopening `.fig` files.\n- Honor `.pen` frame layout defaults and sizing and padding shorthands so imported auto-layout frames keep their computed dimensions and child positions (#564).\n- Avoid macOS Keychain prompts during credential status checks and pause repeated credential access after failures until explicitly retried from Settings.\n- Honor explicit Design JSX instance dimensions and preserve authored overrides through component synchronization.\n- Route browser Command\u002FCtrl plus and minus shortcuts to canvas zoom instead of page zoom.\n- Resolve `$name` references in imported `.pen` fills, stroke fills, font families, dimensions, and spacing without requiring a `--` prefix (#563).\n- Resolve bound fields in each layer’s mode, keep variable edits scoped and undoable, and make broken bindings visible and recoverable.\n- Display letter spacing in pixels and support explicit automatic line height.\n- Prevent the stock photo tool from replacing text, lines, structural layers, or containers with content while supporting closed shape geometry.\n- 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.\n- Render imported Figma strokes with odd-length dash patterns correctly.\n- Stop showing a misleading desktop-only warning when web font loading or catalog lookup fails.\n- Resolve fallback fonts reliably for cached characters, mixed-language text, and text-case transformations.\n- Preserve imported Figma divider-line geometry during auto-layout recomputation, preventing half-pixel shifts on save and reload.\n- Resolve package imports under Node and Bun from ordinary tarballs while preserving Bun source-first workspace execution (#663).\n- Use the user's home directory as the default MCP file root on Windows, avoiding the caller's unreliable working directory.\n- Open legacy raw `.fig` files that store the Kiwi document and thumbnail without a ZIP wrapper (#582).\n- 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).\n- Run `openpencil import` on Node so npm-installed CLI users no longer encounter `Bun is not defined` (#575).\n- Generate recent-file previews from the conventional `Cover` page without modifying the source file.\n- Resolve Vue SDK semantic test selectors correctly in non-browser runtimes (#397).\n- Commit vector vertex and Bézier-handle edits when the pointer is released and keep transformed vector-edit overlays aligned (#586).\n- Preserve app-created component properties and instance-swap targets across `.fig` save and reload cycles (#548).\n- Reconnect desktop automation to an already-running MCP server through its discovery file (#546).\n- Keep text-editing carets, hit testing, and selection highlights aligned with vertically centered or bottom-aligned text (#539).\n- 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).\n- Restore visible above, below, and child drop feedback while dragging layers in the Layers panel.\n- Place editor-created instances beside nested source components in world space, including transformed parents.\n- Prevent malformed collaboration updates from corrupting synchronized nodes or derived text rendering.\n- Transfer native `.fig` exports over binary Tauri IPC, preventing large desktop saves from being truncated or exhausting WebView memory (#484).\n- Decode zstd-compressed FIG containers and reject invalid compressed payloads (#397).\n- Compose caller CSS with Tailwind defaults when importing DOM\u002FCSS documents (#397).\n- Preserve desktop HTTP timeout, abort, and empty-response semantics (#397).\n- Report whether missing Figma clipboard images were actually fetched (#397).\n- Report exhausted provider credit, request failures, and output-token limits through localized chat toasts and copied diagnostics (#451, #454).\n- Prevent Windows desktop crashes when loading large system fonts for non-Latin text.\n- Preserve open vector segments when the same vector network also contains filled regions (#450).\n- Match Figma Plugin API behavior for `rescale()`, page `backgrounds`, and nullable visual `absoluteRenderBounds` (#442).\n- Keep imported and pasted Figma instances linked to their remapped source components so later component edits update existing instances (#385).\n- Restore native copy, cut, and paste shortcuts in desktop text inputs while preserving design clipboard handling on the canvas.\n- Preserve committed desktop text input when the WebView supplies text through the input event before updating the hidden text field (#607).\n- 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).\n- Treat MCP tool results with an omitted `isError` field as successful while preserving explicit MCP errors (#583).\n- Preserve effective nested instance text overrides when importing complex Figma component hierarchies (#102).\n- Preserve SVG clip paths, including clip shapes referenced through `\u003Cuse>`, when importing editable vectors.\n- Preserve circles, ellipses, rectangles, lines, polylines, and polygons supplied as JSX children of inline SVG elements (#452).\n- Stop local MCP servers after the app disconnects instead of leaving orphaned background processes (#494).\n- 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.\n\n### Performance\n\n- Reduce pauses after repeated frame creation without leaving hidden property edits or popups active.\n- Reduce repeated text shaping and scene invalidation while moving and resizing objects, and reuse fitting canvas labels during zoom.\n- Reduce unnecessary layout work after automation and Figma API edits by updating only affected layers and containers.\n- Keep rapid trackpad zoom reversals and effect-heavy document navigation responsive by cancelling obsolete reconstruction and reusing safe raster snapshots.\n- Show the FIG page list from a lightweight Kiwi scan before materializing the full document.\n- Avoid redundant collaboration writes when synchronized node fields have not changed.\n- Release completed streaming-response state to reduce retained chat memory (#544).\n- Open large documents faster by reducing repeated position calculations when finding layers under the pointer (#527).\n- Avoid redundant autosaves while a `.fig` export is in progress, while ensuring newer edits are saved afterward (#528).\n- Defer JSX generation and syntax highlighting until the Code panel is active, keeping large canvas selections responsive (#500).\n- Paste large, flat Figma selections faster by avoiding repeated scans of clipboard layers (#500).\n- Reduce peak memory during `.fig` export by sharing immutable binary resources with the isolated export graph.\n\n### Security\n\n- Protect new real-time collaboration sessions with stronger invitation credentials.\n\n\nSource: https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Ftag\u002Fv0.15.0","2026-09-16T20:45:15Z",903,"2026-09-16T19:33:27Z",[508],{"area":72,"items":509},[510,511,512],"Adds WebMCP controls, saved AI chats, guides, snapping and recovery.","Adds component libraries, local diagnostics and a searchable command palette.","Changes MCP, Scene Graph and Vue SDK integration contracts.","Adds WebMCP access controls, saved AI chats, a command palette, canvas guides, snapping, component libraries and local recovery; changes SDK contracts and improves file fidelity and performance.","OpenPencil 0.15.0",{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},"0.15.0",{"bodyMarkdown":518,"brewCommittedAt":519,"hasNotes":30,"id":520,"isLatest":34,"isPrerelease":34,"machineTranslated":34,"publishedAt":521,"sections":522,"source":77,"sourceLocale":78,"summary":528,"title":529,"translation":530,"version":531},"### Breaking changes\r\n\r\n- **Core SDK:** Import scene graph types, geometry, coordinate, matrix, snapping, undo, and path helpers from `@open-pencil\u002Fscene-graph`; import `.pen` parsing from `@open-pencil\u002Fpen`; import synchronous Kiwi decompression from `@open-pencil\u002Fkiwi` instead of the `@open-pencil\u002Fcore` compatibility barrel; use uppercase acronym casing in exported identifiers, including `JSONObject`, `JSONArray`, `JSONValue`, `RPCCommand`, and `executeRPCCommand`; and use the renamed tool exports `importSVG`, `exportSVG`, `exportPDF`, `getJSX`, `diffJSX`, and `setPexelsAPIKey`.\r\n- **Vue SDK:** Replace the removed color-picker model helpers with `useColorModel()`; replace the deprecated `FillPickerRoot` and `useFillPicker()` APIs with `FillRoot`, `FillSwatch`, `useFill()`, and a consumer-owned popover; rename `FontPickerUi` to `FontPickerUI`; and remove the exported `testId` prop helper types in favor of semantic component anatomy.\r\n- **CLI and MCP SDKs:** Use uppercase acronym casing in exported identifiers, including `AppTargetCLIArgs`, `appTargetRPCArgs`, `loadRPCData`, `prepareDocumentForRPC`, `RPCSender`, `createBrowserRPCBridge`, `createMCPSessionManager`, and `createStdioRPCBridge`.\r\n\r\n### Added\r\n\r\n- Export selections, pages, and documents as editable PowerPoint (`.pptx`) files from the File menu, CLI, and SDK. Text, rectangles, ellipses, and lines remain editable; visually complex layers are embedded as images.\r\n- Import HTML, CSS, Tailwind, and JSX as editable documents from the app, CLI, and SDK, and export standalone browser-ready HTML with compiled CSS and optional external assets.\r\n- Drag image files into the desktop app and paste Figma layers with their remote image fills.\r\n- Import dropped SVG files as editable vector layers, preserving compatible multi-color fills and transparent paints. (#386, #392, #394, #446)\r\n- Convert image layers into editable vectors with Recraft or fal.ai from the canvas context menu. (#322)\r\n- Browse document components as thumbnails or a list in the Assets panel, group them by page, and drag instances directly onto the canvas. (#424)\r\n- Create centered frames from Figma-style device and asset presets, or resize selected frames to a preset while preserving their names. (#418)\r\n- Manage pages by renaming, deleting, and dragging to reorder them in the Pages panel.\r\n- Create text by dragging a fixed-size text box or clicking for auto-width text.\r\n- Create and edit layout grids for frames and components, including columns, rows, counts, gutters, margins, visibility, and grid size.\r\n- Inspect and edit constraints, stroke caps and joins, corner smoothing, shared styles, component properties, blend modes, masks, advanced typography, text resizing, and per-node export settings from the Design panel.\r\n- Edit solid fill colors by entering hex values directly in the Design panel.\r\n- Use Figma-style number-key opacity shortcuts: `1`–`9` set 10%–90%, `0` sets 100%, and two-digit sequences set exact values.\r\n- Access more common design actions from the browser and desktop menus, including visibility, locking, masks, flipping, components, z-order, distribution, selection, rulers, multiplayer cursors, and Settings.\r\n- Find overlapping layers and overflowing children from the CLI, AI tools, and MCP.\r\n- Target a specific open document and page from live CLI and MCP automation, including sessions with multiple documents.\r\n- Connect local MCP clients through automatically discovered private Unix sockets on macOS and Linux, with localhost TCP fallback. (#338)\r\n- Test OpenAI-compatible provider connections from AI settings with clearer setup errors.\r\n- Configure separate Design, Review, Fast, and Vision models, providers, endpoints, and credentials from AI settings.\r\n- Manage AI, agent, media, and storage credentials from unified Settings, using the system credential store on desktop and encrypted browser storage by default, with a session-only browser option.\r\n- Connect an S3-compatible storage workspace with local-first saves, background synchronization, embedded `.fig` previews loaded without downloading full documents, and automatic refresh while the workspace is active.\r\n- Add Japanese localization and improve menu translations across the existing supported languages. (#367)\r\n- Author richer Design JSX with components, instances, variables, gradients, structured fills, shadows, blur effects, masks, and inline SVG vectors.\r\n- Build custom property panels and document workspaces with new Vue SDK number fields, bindable values, property sections, responsive grids, segmented controls, property lists, color models, fill controls, gradient primitives, and the headless `useDocumentWorkspace()` composable.\r\n- Use `useColorModel()` in the Vue SDK for extensible color formats and shared RGB, HSL, HSB, and OkHCL channel behavior.\r\n- Add dedicated SceneGraph, Pen, Kiwi, Fig, and DOM\u002FCSS packages with documented public entry points for building on OpenPencil.\r\n\r\n### Changed\r\n\r\n- Simplify AI model setup with clearly separated model, connection, and advanced settings, automatic compatibility and output-limit defaults for recognized models, and an explicit custom-model option.\r\n- Redesign the editor chrome and Design panel with denser, better-aligned controls, clearer selection and section states, improved menus and overlays, consistent light\u002Fdark theming, and better keyboard and screen-reader support.\r\n- Choose Freeform, vertical, horizontal, or grid flow directly from the contextual Layout section, with sizing controls grouped alongside it.\r\n- Choose Auto width, Auto height, or Fixed size directly from the Layout section for text layers.\r\n- Scale the Layers panel to documents with thousands of nodes through virtualized rows, faster incremental updates, stable expansion, range selection, and scroll-to-selection.\r\n- Open and save large `.fig` documents substantially faster while preserving original metadata and user edits, and switch between large pages with fewer Layers panel stalls. (#420)\r\n- Resolve fonts before text appears, with language-aware CJK and Arabic fallbacks, character-specific remote subsets, and more reliable rendering as fonts load.\r\n- Use MiniMax M3 as the default model for MiniMax AI connections. (#431)\r\n- Center empty and setup states consistently across panels, dialogs, and workspaces.\r\n\r\n### Fixed\r\n\r\n- Keep desktop startup clean when optional MCP automation is unavailable, retain startup diagnostics for MCP-dependent features, and load JSX syntax highlighting without browser globals.\r\n\r\n- Preserve Figma’s imported glyph outlines through layout and appearance updates so text keeps its intended weight and shape.\r\n- Keep swapped image avatars and thin stepper dividers at their effective imported size and position.\r\n- Scale proportion-constrained `.fig` instance geometry through fixed wrapper layers so imported logos and icons retain their intended size.\r\n- Match Figma auto-layout spacing, padding, min\u002Fmax constraints, scalar variable bindings, CanvasKit-shaped generated text, imported text bounds, and nested instance geometry more closely.\r\n- Match Figma Plugin API vector path and network editing, including bounds, transforms, winding rules, region fills, validation, and handle mirroring. (#444)\r\n- Let AI and MCP tools create arbitrary vectors from SVG path data, validating input without leaving blank layers behind. (#440)\r\n- Improve AI design accuracy by exposing every supported shape, including visible stroke colors and weights in visual descriptions, and accepting supported inline SVG attributes without false warnings. (#445, #447, #448)\r\n- Restore Anthropic AI connections in the web app instead of failing with a browser endpoint error. (#438)\r\n- Reconnect live CLI and automation sessions automatically after an unexpected bridge disconnection.\r\n- Keep MCP file access inside its configured root when paths contain symlinks, and strengthen local authentication token checks. (#338)\r\n- Start globally installed ACP agents correctly on Windows instead of reporting them as unavailable. (#361)\r\n- Resume pending cloud saves after restarting the app or temporarily losing credentials, without reviving deleted documents or overwriting newer local changes.\r\n- Handle S3 object listings, pagination, and escaped names more reliably, and explain required CORS setup without modifying bucket rules.\r\n- Show HTML, CSS, Tailwind, and JSX import errors instead of failing silently.\r\n- Preserve inline SVG attributes, nested transforms, and explicit icon dimensions when rendering Design JSX artwork.\r\n- Save auto-layout frames that stretch their children to `.fig` without failing. (#427)\r\n- Preserve nested instance text, visibility, paint, geometry, clipping, variable modes, and component swaps in `.fig` files.\r\n- Improve `.fig` import and rendering fidelity for groups, booleans, instances, rotated vectors, complex text fills, auto-sized text, layout grids, page guides, patterns, noise effects, masks, and canvas backgrounds.\r\n- Preserve pages, components, prototype and library metadata, export settings, unsupported effects, and other unrelated Figma data when editing and resaving `.fig` files.\r\n- Prevent duplicate generated IDs from corrupting `.fig` round trips.\r\n- Preserve the whole document when exporting FIG unless a page is explicitly requested, populate unopened pages for file-mode CLI inspection, and expose vector paths and variable modes to Plugin API scripts.\r\n- Report corrupted compressed `.fig` data as an error instead of opening it as valid content.\r\n- Match Figma auto-layout reflow after deleting children, hiding optional instance slots, or syncing component changes.\r\n- Make group and boolean-operation children scale with their parent during resize.\r\n- Edit vectors in opened documents at the correct position, with live fill updates and working undo and redo. (#390)\r\n- Keep duplicated layers independent instead of sharing mutable fills, strokes, bindings, overrides, or vector data, and remove stale bindings when paints are deleted.\r\n- Keep desktop text visible across scene and overlay canvases, refresh it after local fonts load, and preserve rendering when an italic face is unavailable. (#395)\r\n- Vertically center text correctly when an explicit line height adds space above and below its glyphs. (#422)\r\n- Preserve Hangul IME composition while editing text.\r\n- Restore desktop copy, cut, and paste when browser clipboard events are unavailable.\r\n- Finish pasting Figma layers promptly even when remote images are slow or unavailable, and hydrate their image fills when downloads complete.\r\n- Reuse the existing tab when reopening a file through its desktop path or browser file handle, avoiding duplicate watchers and conflicting saves. (#297)\r\n- Share public app links from the desktop collaboration panel and send the current document to newly joined collaborators.\r\n- Show only the most specific tooltip when property controls contain nested actions.\r\n- Match regional browser languages to supported locales without selecting a lower-priority language. (#417)\r\n- Improve Simplified Chinese translations and correct localized menu terminology.\r\n- Resolve published package types correctly for TypeScript consumers and keep file-backed CLI commands working under Node.\r\n\r\n### Security\r\n\r\n- Update the collaboration WebSocket dependency to address a protocol-length advisory.\r\n\n\nSource: https:\u002F\u002Fgithub.com\u002Fopen-pencil\u002Fopen-pencil\u002Freleases\u002Ftag\u002Fv0.14.0","2026-08-11T13:49:37Z",905,"2026-08-11T13:04:11Z",[523],{"area":72,"items":524},[525,526,527],"Adds editable PowerPoint export and HTML\u002FCSS\u002FTailwind\u002FJSX import.","Adds vectorization, asset browsing and expanded layout controls.","Improves Figma round trips and hardens MCP file access.","Adds editable PowerPoint export, HTML\u002FCSS\u002FJSX import, vectorization, richer assets and layout controls; improves Figma fidelity, large-document performance and MCP security, with SDK breaking changes.","OpenPencil 0.14.0",{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},"0.14.0",{"brewCommittedAt":533,"hasNotes":34,"isLatest":34,"isPrerelease":34,"sections":534,"source":535,"translation":536,"version":538},"2026-05-30T19:27:57Z",[],"homebrew",{"status":537},"none","0.13.2",{"brewCommittedAt":540,"hasNotes":34,"isLatest":34,"isPrerelease":34,"sections":541,"source":535,"translation":542,"version":543},"2026-05-30T05:24:14Z",[],{"status":537},"0.13.1",20,{"brewLag":546,"cadence":468,"count30d":469},{"compared":465,"earlierCount":466,"medianMinutes":467},{"current":495,"records":548,"size":495,"stats":554,"total":462},[549],{"bodyMarkdown":66,"brewCommittedAt":67,"hasNotes":30,"id":68,"isLatest":30,"isPrerelease":34,"machineTranslated":34,"publishedAt":69,"sections":550,"source":77,"sourceLocale":78,"summary":79,"title":80,"translation":553,"version":83},[551],{"area":72,"items":552},[74,75,76],{"locale":78,"machineTranslated":34,"sourceLocale":78,"status":82},{"brewLag":555,"cadence":468,"count30d":469},{"compared":465,"earlierCount":466,"medianMinutes":467}]