diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fabcb19d2..dcaba1195 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,6 +149,7 @@ jobs: - name: Publish packages to npm env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NPM_CONFIG_PROVENANCE: true run: | publish_if_new() { local dir=$1 @@ -157,7 +158,7 @@ jobs: if npm view "${name}@${version}" version 2>/dev/null; then echo "${name}@${version} already published, skipping" else - npm publish "./$dir" --access public + cd "$dir" && pnpm publish --no-git-checks --access public && cd - fi } publish_if_new packages/core diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a5fed4be..5eb474d43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 0.8.0 — 2026-03-07 ### Features @@ -17,6 +17,8 @@ - Refactor mobile drawer tabs, layout sizing dropdowns, and inline rename to use Reka UI primitives - Add shared UI style helpers with tailwind-variants for menus, selects, buttons, and surfaces +- Unified tool definitions — define once in `packages/core/src/tools/`, automatically available in AI chat, CLI, and MCP +- Harden FigmaAPI — hide internals via Symbols, freeze arrays, fix `layoutSizing`, 30+ new properties and methods - Split tools into domain files (read, create, modify, structure, variables, vector, analyze) — easier to navigate and extend - Replace inline type definitions with named types (`Color`, `Vector`, `SceneNode`) across the codebase - Split 3200-line `renderer.ts` into `packages/core/src/renderer/` with 10 focused files (scene, overlays, fills, strokes, shapes, effects, rulers, labels) @@ -32,6 +34,11 @@ - Fix all oxlint warnings and tsgo errors — replace `!` non-null assertions in `use-collab.ts` with local const captures - Fix broken test imports — stale `../../src/engine/` paths updated to `@open-pencil/core` - Fix flaky E2E tests: layers panel navigates to `/demo`, zoom-to-fit test zooms in first, snapshot rendering stabilized with `workers: 1` and `colorScheme: dark` +- Fix bogus .fig import mappings for `expanded` and `strokeMiterLimit` fields +- Fix PWA manifest error in dev mode, handle invalid font data gracefully +- Fix eval response unwrapping and `export_jsx` page selection in RPC bridge +- Fix automation commands not recomputing layouts after mutations +- Fix workspace dependency not resolved when installing from npm (switch CI to pnpm publish) ### Internal diff --git a/desktop/tauri.conf.json b/desktop/tauri.conf.json index 057609d65..ead4c5c95 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.7.0", + "version": "0.8.0", "identifier": "net.dannote.open-pencil", "build": { "beforeDevCommand": "bun run dev", diff --git a/package.json b/package.json index 7d1181140..2a1667175 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "open-pencil-app", "private": true, - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "type": "module", "workspaces": [ diff --git a/packages/acp/package.json b/packages/acp/package.json index bc6e93818..6be28d668 100644 --- a/packages/acp/package.json +++ b/packages/acp/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/acp", - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "type": "module", "main": "./src/agent.ts", diff --git a/packages/cli/package.json b/packages/cli/package.json index 30f1cbc13..a38e1d008 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/cli", - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "type": "module", "bin": { diff --git a/packages/core/package.json b/packages/core/package.json index ab7628612..ae1982248 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/core", - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "type": "module", "exports": { diff --git a/packages/docs/.vitepress/theme/SchemaOrg.vue b/packages/docs/.vitepress/theme/SchemaOrg.vue index bdb56d919..72666428d 100644 --- a/packages/docs/.vitepress/theme/SchemaOrg.vue +++ b/packages/docs/.vitepress/theme/SchemaOrg.vue @@ -19,7 +19,7 @@ const schema = JSON.stringify({ url: 'https://app.openpencil.dev', description: 'Open-source, AI-native design editor. Figma-compatible with full .fig file support.', - softwareVersion: '0.7.0', + softwareVersion: '0.8.0', license: 'https://opensource.org/licenses/MIT', screenshot: 'https://openpencil.dev/screenshot.png', downloadUrl: 'https://github.com/open-pencil/open-pencil/releases/latest', diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 84f2ac2b5..698811a93 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@open-pencil/mcp", - "version": "0.7.0", + "version": "0.8.0", "license": "MIT", "type": "module", "main": "./src/server.ts", diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..dee51e928 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "packages/*"