Danila Poyarkov
3638fc11ba
feat(cli): import DOM/CSS documents
2026-06-30 10:48:13 +03:00
Danila Poyarkov
e5a479a81a
docs: soften README status note
2026-06-30 09:53:44 +03:00
Joseph Cumines
f862beb08d
Add heuristic overlap detection tool and CLI
...
Implement the analyze overlaps CLI command, RPC endpoint, and ToolDef
to enable heuristic detection of visual overlaps, parent overflows, and
overlay patterns. Geometry computation now uses world-matrix visual
bounds to handle nested ancestor rotations and clipping frames correctly.
Update file-backed CLI commands to use Node fs/promises instead of Bun
runtime file APIs. This is required for the published CLI to function
when installed and executed in a standard Node environment. Add the
package.json subpath export to the core package for metadata consumers.
2026-06-19 09:54:27 +10:00
Sakutaro
b5c306515d
Update Homebrew installation command
2026-05-30 12:27:17 +03:00
Danila Poyarkov
883782846f
docs(cli): use released openpencil command
2026-05-29 15:56:52 +03:00
Danila Poyarkov
bf232bac8b
docs: centralize roadmap
2026-05-22 20:02:05 +03:00
Danila Poyarkov
77307e17da
docs: drop README roadmap
2026-05-22 19:54:46 +03:00
Danila Poyarkov
b750d1f3dc
docs: generate llms files
...
- Generate llms.txt and llms-full.txt from VitePress content loader
- Advertise the agent-readable docs through alternate links
2026-05-22 16:03:04 +03:00
Danila Poyarkov
3850be9512
build: publish node-compatible packages
2026-05-21 17:03:19 +03:00
Danila Poyarkov
e3d6056bf5
docs: update MCP setup and landing screenshot
2026-05-19 17:58:08 +03:00
Danila Poyarkov
99484bcee5
docs: update roadmap
2026-05-18 18:28:45 +03:00
Danila Poyarkov
1ceabf7938
feat(components): add local assets panel
...
- Add a left-sidebar Assets tab for local components and component sets
- Insert component set assets as instances of the default variant
- Showcase local component set insertion in the demo
- Cover search, empty state, standalone insert, and variant switching with Playwright
2026-05-12 17:30:35 +03:00
Danila Poyarkov
ddf415ec30
feat(tauri): support desktop file associations
...
- Register .fig and .pen files with desktop bundles
- Open associated files on startup and via single-instance handoff
- Reuse the existing Tauri file open flow without broad filesystem scopes
2026-05-12 16:12:16 +03:00
Danila Poyarkov
51213d014e
docs: update README and AGENTS.md for new features
...
- Update tool count from 90 to 100+
- Document OPENPENCIL_MCP_ROOT env var for file path scoping
- Document MCP-only tools, export path param, and prompt markdown files
in AGENTS.md
2026-04-22 18:12:15 +03:00
Danila Poyarkov
1c99e6a9c2
fix(acp): show install errors for missing agent CLIs ( #176 )
...
* fix(acp): show install errors for missing agent CLIs (#172 )
* Use npm for install commands, toasts for errors, tighten error matching
- Replace bun add -g with npm i -g (universal baseline)
- Replace initError inline banner with toast.show() (consistent with rest of app)
- Remove overly broad 'not found' / 'no such file' from isMissingCommandError
* Refactor toast API to toast.info/warning/error
2026-04-06 14:19:38 +03:00
Danila Poyarkov
dd1b3b7b1a
Update README roadmap
2026-03-31 18:34:01 +03:00
Danila Poyarkov
c57e636dcb
Port design linter from figma-use
2026-03-28 16:33:40 +03:00
Danila Poyarkov
b072c69a2f
Tweak README note formatting
2026-03-28 15:46:49 +03:00
Danila Poyarkov
9281c408e1
Update README project structure
2026-03-28 15:45:11 +03:00
Danila Poyarkov
890fb4f6d5
Update README and docs for new formats and SDK
2026-03-28 15:42:21 +03:00
Danila Poyarkov
d52d38cb3b
Remove WebGPU backend
2026-03-27 22:03:19 +03:00
Danila Poyarkov
99e646aaa4
Refine docs structure for SDK and automation
2026-03-24 23:24:08 +03:00
Anton A S
63f3ef3755
Show agent name in model selector for ACP, fix model dropdown, update docs
2026-03-15 18:13:29 +03:00
Anton A S
583b03eb3b
Harden ACP transport, MCP server, and add permission dialog
...
- Extract mapUpdate to testable module, dynamic import for @tauri-apps/plugin-shell
- Add warnings for unhandled ACP content types and empty tool titles
- MCP server: session limit (max 10), fix null WS comparison, guard JSX preprocessing
- MCP server: read version from package.json instead of hardcoded 0.0.0
- MCP tests: use port 0 (OS-assigned) to prevent collision
- Connection error handling with user-friendly messages, stale session recovery
- Agent crash detection via close handler, destroying flag, buildCrashChunks
- Port collision: detect EADDRINUSE in vite-plugin stderr and log clear error
- Production Tauri: spawn openpencil-mcp via shell plugin, orphan reuse via health check
- Permission confirmation dialog (reka-ui AlertDialog) with queue, 60s auto-reject timeout
- Health check in ProviderSelect hides ACP agents when MCP server unavailable
- Move DESIGN_CONTEXT to app constants, add ACP_PERMISSION_TIMEOUT_MS
- 36 tests across 3 files (acp-transport, acp-permission, mcp-server)
- Update CHANGELOG, README, CONTRIBUTING, AGENTS.md
2026-03-15 16:49:43 +03:00
Danila Poyarkov
fe755fbb85
Release v0.9.0
2026-03-09 17:43:11 +03:00
Danila Poyarkov
f2ef9c976d
XPath query for node selection ( #82 )
...
* Add XPath query for node selection
- packages/core/src/xpath.ts: XPath engine using fontoxpath with custom
DOM facade over SceneGraph nodes
- RPC command: 'query' with selector, page, limit params
- CLI command: 'open-pencil query <file> <xpath>' with --json, --page, --limit
- AI/MCP tool: 'query_nodes' with XPath examples in description
- Queryable attributes: name, width, height, x, y, visible, opacity,
cornerRadius, fontSize, fontFamily, fontWeight, layoutMode, itemSpacing,
padding*, strokeWeight, rotation, locked, blendMode, text, lineHeight,
letterSpacing
* Add tests and docs for XPath query
- 9 unit tests for queryByXPath/matchByXPath core functions
- 6 tool tests for query_nodes AI/MCP tool
- README: query examples in CLI section
- VitePress docs: patterns, queryable attributes, example output
- CHANGELOG: feature entry
* Lazy-load fontoxpath to avoid bundling in desktop app
- Dynamic import() instead of static import for fontoxpath
- queryByXPath/matchByXPath now async (they were sync before)
- RpcCommand.execute allows R | Promise<R> for async commands
- Fix 2 lint errors (unnecessary optional chain, always-truthy)
- Update all tests and CLI to await results
2026-03-09 15:32:27 +03:00
Danila Poyarkov
c98ac0f230
Update README and docs for CSS Grid support
...
- Add 'Auto layout & CSS Grid' to README features
- Update architecture, tech-stack, features, figma-comparison, comparison
- Mark grid as ✅ in all 7 locales
- Replace 'blocked on upstream' with Yoga fork links
2026-03-08 18:29:44 +03:00
Danila Poyarkov
b485778dfa
Move Installation above features
2026-03-08 10:47:42 +03:00
Danila Poyarkov
c6c681c25a
Restructure README: lead with screenshot and features, show CLI/AI output, move contributor docs down
2026-03-08 10:46:38 +03:00
Danila Poyarkov
af2f65b390
Update CLI section: separate file operations from app control
2026-03-08 10:43:14 +03:00
Danila Poyarkov
0109d33846
Add AI agent skill to README and docs
...
- README: new 'AI Agent Skill' section with install command
- MCP tools reference: skill section, fix tool count 78→90,
add 10 missing tools (export_image, export_svg, flatten_nodes,
list_fonts, page_bounds, set_layout_child, set_text_properties,
viewport_get, viewport_set, viewport_zoom_to_fit)
- Features page: mention skill with install command
- All 6 locales updated
2026-03-08 01:08:28 +03:00
Danila Poyarkov
c2710d11fb
Fix roadmap: individual strokes already shipped, restore skewing/OkHCL
2026-03-08 00:07:39 +03:00
Danila Poyarkov
d84f165a27
Update README roadmap, features, tool counts, and project structure
2026-03-08 00:04:22 +03:00
Danila Poyarkov
6ec8fc518b
Move demo to /demo route, add @unhead/vue for title management
...
- / shows empty canvas
- /demo loads demo content (for app.openpencil.dev landing link)
- Title template: '{page} — OpenPencil' via useHead
- 'Try it online' links in README and docs point to /demo
2026-03-06 20:54:48 +03:00
Danila Poyarkov
df8e303498
Add Homebrew tap with auto-update workflow ( #61 )
2026-03-06 18:08:47 +03:00
Danila Poyarkov
698ffe389a
Remove Gatekeeper workaround — app is now code-signed
2026-03-04 01:45:29 +03:00
Danila Poyarkov
3f4169e32d
Add macOS Gatekeeper workaround to README and docs
2026-03-03 21:19:07 +03:00
Danila Poyarkov
0c3cfcd1cc
Update roadmap: .fig compatibility, shaders, component libraries
2026-03-03 18:08:03 +03:00
Peter
31d614a272
fix(mcp): harden HTTP transport defaults ( #26 )
2026-03-03 17:19:08 +03:00
Danila Poyarkov
6f4439855e
Update README roadmap and tool counts
2026-03-02 23:43:39 +03:00
Danila Poyarkov
75cc653efc
Fix Kiwi format description — same binary format as .fig files, not a clipboard format
2026-03-02 15:28:24 +03:00
Danila Poyarkov
9103d1b554
Highlight copy & paste with Figma in README and docs
2026-03-02 15:26:06 +03:00
Danila Poyarkov
d93bcab0b6
Add install instructions for @open-pencil/mcp
2026-03-02 14:28:56 +03:00
Danila Poyarkov
4ad90d4819
Add MCP server package with stdio and HTTP transports
...
29 tools: open_file, save_file, new_document + all 26 from @open-pencil/core.
Stdio for MCP clients (Claude Code, Cursor), HTTP (Hono + Streamable HTTP
with sessions) for scripts, browser extensions, CI.
Runs on both Bun and Node.js (via tsx).
2026-03-02 14:20:49 +03:00
Danila Poyarkov
c3c5253642
Acknowledge Anton Soldatov for docs
2026-03-02 12:27:05 +03:00
Danila Poyarkov
c2e77ff63d
Fix Figma MCP timeline, update tool counts to 26, add AI providers to roadmap
2026-03-02 08:19:08 +03:00
Danila Poyarkov
d24e0ee767
Style roadmap as blockquote
2026-03-02 08:00:58 +03:00
Danila Poyarkov
ca5f0929d1
Add roadmap to README, update plan.md to current state
2026-03-02 07:56:52 +03:00
Danila Poyarkov
a9c096a69d
Fix npm publish: pnpm for workspace resolution, update README, read CLI version from package.json
2026-03-01 22:44:56 +03:00
Danila Poyarkov
f90e1400b7
P2P collaboration: cursors, follow mode, cleanup
...
- Broadcast cursor position from canvas mouse move via awareness
- Broadcast selection changes via reactive watcher on selectedIds
- Follow mode: click peer avatar to track their viewport (pan + zoom)
- Zoom broadcast via watcher on store.state.zoom, not just mouse move
- Figma-style cursor arrows: colored fill, white border, name pill
- Stale cursor cleanup: removeAwarenessStates on peer leave
- MQTT signaling (replace Nostr), STUN + TURN ICE servers
- Collab constants extracted to src/constants.ts
- crypto.getRandomValues() replaces Math.random() everywhere
- Provide/inject for collab composable (COLLAB_KEY)
- Update README (collab section, tech stack), CHANGELOG, AGENTS.md
- AGENTS.md: release process, CI workflows, documentation guidelines
2026-03-01 18:11:07 +03:00