Release v0.15.1

This commit is contained in:
Danila Poyarkov 2026-09-18 16:19:49 +03:00
parent 0092feff7d
commit 6cf1748e31
16 changed files with 35 additions and 37 deletions

View file

@ -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.

View file

@ -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",

2
desktop/Cargo.lock generated
View file

@ -3292,7 +3292,7 @@ dependencies = [
[[package]]
name = "open_pencil"
version = "0.15.0"
version = "0.15.1"
dependencies = [
"fix-path-env",
"font-kit",

View file

@ -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"

View file

@ -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",

View file

@ -1,6 +1,6 @@
{
"name": "open-pencil-app",
"version": "0.15.0",
"version": "0.15.1",
"private": true,
"license": "MIT",
"workspaces": [

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/cli",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"imports": {

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/core",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"repository": {
"type": "git",

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/dom-css",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"imports": {

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/fig",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"exports": {

View file

@ -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",

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/kiwi",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"repository": {
"type": "git",

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/mcp",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"imports": {

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/pen",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"exports": {

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/scene-graph",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"repository": {
"type": "git",

View file

@ -1,6 +1,6 @@
{
"name": "@open-pencil/vue",
"version": "0.15.0",
"version": "0.15.1",
"license": "MIT",
"type": "module",
"exports": {