From 6cf1748e31a0e43d3794d43abbd003ce9caa3c6f Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Fri, 18 Sep 2026 16:19:49 +0300 Subject: [PATCH] Release v0.15.1 --- CHANGELOG.md | 24 +++++++++++------------- bun.lock | 20 ++++++++++---------- desktop/Cargo.lock | 2 +- desktop/Cargo.toml | 2 +- desktop/tauri.conf.json | 2 +- package.json | 2 +- packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/dom-css/package.json | 2 +- packages/fig/package.json | 2 +- packages/harness/package.json | 2 +- packages/kiwi/package.json | 2 +- packages/mcp/package.json | 2 +- packages/pen/package.json | 2 +- packages/scene-graph/package.json | 2 +- packages/vue/package.json | 2 +- 16 files changed, 35 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47e07d4fd..9d40fd849 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,35 +2,35 @@ ## Unreleased +## 0.15.1 — 2026-09-18 + ### Added - 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). -- Set the built-in AI's maximum steps per message in Chat settings, with consistent stopping and remaining-step warnings (#573). -- Choose a custom number for diagnostics retention or the AI step limit instead of only the offered presets. +- 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). +- Open documents and jump to a named layer from `openpencil://open?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. +- 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. ### Changed - Create new documents with the sRGB colour profile, so Display P3 is reserved for documents that declare it. -- Export diagnostics from Settings only. AI requests and tool activity now carry conversation and request identifiers, while chat no longer offers a separate diagnostic log or includes transcript content. -- 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. +- 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. +- 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. ### Fixed -- Store colours edited in the colour picker in the document's colour profile, so the values a Display-P3 document keeps and exports match the profile it declares. +- 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. +- 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. - 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. +- 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`. +- Explain why the local MCP server did not start — a missing `@open-pencil/mcp` 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. - Animate the AI chat tool-call disclosure, which expanded and collapsed without motion because its animation classes were misspelled. -- Explain why the local MCP server did not start — a missing `@open-pencil/mcp` install, a denied command, an early exit, a rejected local connection, or an unreachable address — with translated guidance and collapsible technical details instead of one generic health failure. -- Find a globally installed `@open-pencil/mcp` when the desktop app is launched from the system shell, by searching the common global binary directories that a graphical launch omits from `PATH`. - Mark unsaved documents and ask whether to save before closing a tab, the desktop window, or the application, rather than relying on recovery alone. - 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. - Save and recover documents whose text uses disabled numeric, fraction, or small-caps OpenType features, which previously failed to write a `.fig` file. - Update instance text properties on the canvas while typing, with grouped undo for rapid edits. -- 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 colors, with a dismissible notice when wide gamut is unavailable. -- Convert colours between a document's colour profile and the display's, so a Display-P3 document no longer looks different on an sRGB display than on a wide-gamut one. - Point Homebrew installation instructions to the official `openpencil` cask and document separate CLI installation. -- 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`. - Reach the custom model option in the model picker for providers with large model catalogs instead of requiring a search for it. -- Show the standard canvas loading overlay and tab indicator while the demo document is generated, instead of an empty canvas. ### Performance @@ -49,8 +49,6 @@ ### Added -- Open documents and jump to a named layer from `openpencil://open?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. -- 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. - 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. diff --git a/bun.lock b/bun.lock index 3a3e5071d..cb40799e1 100644 --- a/bun.lock +++ b/bun.lock @@ -159,7 +159,7 @@ }, "packages/cli": { "name": "@open-pencil/cli", - "version": "0.15.0", + "version": "0.15.1", "bin": { "openpencil": "./bin/openpencil.js", }, @@ -178,7 +178,7 @@ }, "packages/core": { "name": "@open-pencil/core", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "@chenglou/pretext": "^0.0.7", "@iconify/utils": "^3.1.4", @@ -242,7 +242,7 @@ }, "packages/dom-css": { "name": "@open-pencil/dom-css", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "@acemir/cssom": "^0.9.31", "parse5": "^8.0.1", @@ -262,7 +262,7 @@ }, "packages/fig": { "name": "@open-pencil/fig", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "es-toolkit": "^1.51.0", "fflate": "^0.8.3", @@ -280,7 +280,7 @@ }, "packages/harness": { "name": "@open-pencil/harness", - "version": "0.15.0", + "version": "0.15.1", "bin": { "openpencil-harness": "./dist/stdio.mjs", }, @@ -296,7 +296,7 @@ }, "packages/kiwi": { "name": "@open-pencil/kiwi", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "fflate": "^0.8.3", "fzstd": "^0.1.1", @@ -309,7 +309,7 @@ }, "packages/mcp": { "name": "@open-pencil/mcp", - "version": "0.15.0", + "version": "0.15.1", "bin": { "openpencil-mcp": "./dist/stdio.mjs", "openpencil-mcp-http": "./dist/index.mjs", @@ -331,7 +331,7 @@ }, "packages/pen": { "name": "@open-pencil/pen", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "culori": "^4.0.2", }, @@ -347,7 +347,7 @@ }, "packages/scene-graph": { "name": "@open-pencil/scene-graph", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "es-toolkit": "^1.51.0", "nanoevents": "^9.1.0", @@ -361,7 +361,7 @@ }, "packages/vue": { "name": "@open-pencil/vue", - "version": "0.15.0", + "version": "0.15.1", "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.8.1", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.2.0", diff --git a/desktop/Cargo.lock b/desktop/Cargo.lock index 6ef9f2be1..35543e3e3 100644 --- a/desktop/Cargo.lock +++ b/desktop/Cargo.lock @@ -3292,7 +3292,7 @@ dependencies = [ [[package]] name = "open_pencil" -version = "0.15.0" +version = "0.15.1" dependencies = [ "fix-path-env", "font-kit", diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index 6402d5393..1b31ae825 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "open_pencil" -version = "0.15.0" +version = "0.15.1" description = "OpenPencil desktop app" authors = ["Danila Poyarkov"] edition = "2021" diff --git a/desktop/tauri.conf.json b/desktop/tauri.conf.json index b3119f60d..7cb199240 100644 --- a/desktop/tauri.conf.json +++ b/desktop/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "OpenPencil", - "version": "0.15.0", + "version": "0.15.1", "identifier": "net.dannote.open-pencil", "build": { "beforeDevCommand": "bun run generate:icons --target desktop && bun run generate:tauri-menu && bun run dev", diff --git a/package.json b/package.json index a962a121f..64e10ea49 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-pencil-app", - "version": "0.15.0", + "version": "0.15.1", "private": true, "license": "MIT", "workspaces": [ diff --git a/packages/cli/package.json b/packages/cli/package.json index 26bcd8049..528b552ce 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/cli", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "imports": { diff --git a/packages/core/package.json b/packages/core/package.json index 889823405..096b4ecc8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/core", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "repository": { "type": "git", diff --git a/packages/dom-css/package.json b/packages/dom-css/package.json index 4762a049a..1fb867818 100644 --- a/packages/dom-css/package.json +++ b/packages/dom-css/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/dom-css", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "imports": { diff --git a/packages/fig/package.json b/packages/fig/package.json index 851c759f3..dd329bb0d 100644 --- a/packages/fig/package.json +++ b/packages/fig/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/fig", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "exports": { diff --git a/packages/harness/package.json b/packages/harness/package.json index 5d071ebd7..0649abf8a 100644 --- a/packages/harness/package.json +++ b/packages/harness/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/harness", - "version": "0.15.0", + "version": "0.15.1", "private": false, "license": "MIT", "description": "Optional OpenPencil companion CLI for coding-agent Harness sessions", diff --git a/packages/kiwi/package.json b/packages/kiwi/package.json index 3ca98d3dc..eb9c6eeb5 100644 --- a/packages/kiwi/package.json +++ b/packages/kiwi/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/kiwi", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "repository": { "type": "git", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index cf918fb37..23ff20327 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/mcp", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "imports": { diff --git a/packages/pen/package.json b/packages/pen/package.json index afdc72232..655eee580 100644 --- a/packages/pen/package.json +++ b/packages/pen/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/pen", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "exports": { diff --git a/packages/scene-graph/package.json b/packages/scene-graph/package.json index 96c005097..9e4acfd7c 100644 --- a/packages/scene-graph/package.json +++ b/packages/scene-graph/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/scene-graph", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "repository": { "type": "git", diff --git a/packages/vue/package.json b/packages/vue/package.json index 21a7e0905..6bf42c62d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/vue", - "version": "0.15.0", + "version": "0.15.1", "license": "MIT", "type": "module", "exports": {