* fix(docker): support multi-platform builds and fix monorepo paths
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* perf(renderer): cache pre-rasterized paragraph images to avoid per-frame glyph rasterization (#76)
* fix(canvas): stabilize frame label size during zoom
Draw frame labels in screen-space after the viewport transform
restore, converting scene coords manually. Previously fontSize=12/zoom
fed into Math.ceil caused integer-boundary jumps that made labels
flicker during zoom. Also skip shadow rendering while actively
zooming for smoother performance.
* perf(renderer): cache pre-rasterized paragraph images to avoid per-frame glyph rasterization
- Add paraImageCache (SkImage, 128 MB LRU limit) keyed on the same key as paraCache
- Use drawImageRect instead of drawParagraph on cache hit, skipping per-frame glyph shaping and rasterization
- Fall back to direct drawParagraph only when off-screen surface creation (MakeSurface) fails
- Extract _dpr getter to deduplicate device-pixel-ratio resolution logic across draw paths
- Evict oldest entries when cache exceeds byte limit; delete SkImage on eviction and dispose()
* feat(cli): introduce OpenPencil CLI for terminal control of the design tool
- Added a new CLI application under `apps/cli` to manage OpenPencil from the terminal.
- Implemented commands for app control (`start`, `stop`, `status`), document operations (`open`, `save`, `get`, `selection`), and design manipulation (`design`, `import`).
- Enhanced documentation with usage instructions and platform support details.
- Updated build scripts to include CLI compilation and publishing processes.
- Introduced a new GitHub Actions workflow for publishing the CLI to npm.
- Updated existing workflows to integrate CLI build steps and ensure proper versioning across packages.
* docs: update README files to include CLI tool details and multi-platform code export
- Added CLI section to README files in multiple languages, detailing commands for terminal control of the design tool.
- Included instructions for global installation and usage examples for the CLI.
- Expanded documentation on multi-platform code export capabilities from a single `.op` file to various frameworks.
- Updated CLAUDE.md to reference the new CLI documentation and its integration with the design tool.
* chore(bun.lock): update package dependencies to specific versions
- Removed workspace references for several packages in the bun.lock file.
- Updated dependencies for `@zseven-w/pen-core`, `@zseven-w/pen-types`, `@zseven-w/pen-codegen`, `@zseven-w/pen-figma`, and `@zseven-w/pen-renderer` to version `0.5.1-beta.1`.
- Ensured consistency in dependency management across the project.
* fix(docker): add missing CLI package.json to build context
The Dockerfile was missing COPY for apps/cli/package.json, causing
bun install --frozen-lockfile to fail because the CLI workspace
dependency could not be resolved.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add unpublish script and enhance CLI publish workflow
- Introduced a new `unpublish` script to manage unpublishing of all @zseven-w packages from npm, with options for specific versions, all versions, or deprecation.
- Updated the GitHub Actions workflow to check if a version is already published before proceeding with the publish step, ensuring better error handling and preventing conflicts.
- Removed the fallback for npm publish commands to fail fast on errors, improving the reliability of the publishing process.
* chore(bun.lock): update package versions and configuration
- Bumped the configVersion from 0 to 1 in bun.lock.
- Updated several package dependencies to their latest versions, including:
- @anthropic-ai/claude-agent-sdk to 0.2.81
- @babel/helpers to 7.29.2
- @babel/parser to 7.29.2
- @babel/runtime to 7.29.2
- @csstools/color-helpers to 6.0.2
- @csstools/css-color-parser to 4.0.2
- Ensured consistency in dependency management across the project.
* docs: restore Feishu group QR code in Chinese README
* chore: update dependencies and add workspace references
- Added "h3" package with version "^2.0.1-rc.18" to bun.lock, package.json, and apps/web/package.json.
- Updated dependencies in multiple packages to use "workspace:*" for better management and consistency across the project.
- Ensured all relevant packages are aligned with the latest workspace structure.
* chore: update package versions in bun.lock and package.json
- Updated several @tanstack packages to their latest versions, including:
- @tanstack/react-devtools to 0.10.0
- @tanstack/react-router to 1.168.1
- @tanstack/react-router-devtools to 1.166.11
- @tanstack/react-router-ssr-query to 1.166.10
- @tanstack/react-start to 1.167.2
- @tanstack/router-plugin to 1.167.1
- Bumped @tanstack/devtools-vite to 0.6.0 in devDependencies.
- Mocked 'paper' module in security tests to prevent crashes in jsdom environment.
* chore: update CLI and MCP compile scripts to include package aliases
- Enhanced the `mcp:compile` and `cli:compile` scripts in `package.json` and `apps/cli/package.json` to include additional package aliases for better module resolution.
- This change improves the build process by ensuring that the correct paths are used for various dependencies.
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: leinaldo <60176594+leinaldo@users.noreply.github.com>
Co-authored-by: Fini <fini.yang@gmail.com>