Commit graph

47 commits

Author SHA1 Message Date
Kayshen-X 70e202d802 feat(editor): improve document workflows and rendering 2026-07-23 21:15:04 +08:00
Kayshen-X 3352bb371e feat(cli): import:html url routing with --out and import:snapshot subcommand 2026-07-19 20:45:03 +08:00
Kayshen-X 1fdccd1c3b feat(cli): import:html subcommand mapping to the import_html mcp tool 2026-07-18 14:16:43 +08:00
Kayshen-X 612a453942 feat(figma): route host image transform through fig import for downscaled embeds 2026-07-18 13:11:52 +08:00
Kayshen-X 6a38b445de fix(cli): land opencode skill install in the scanned skills dir
The opencode target wrote a plugin entry the loader can never use (no
JS entrypoint, and plugin packages' skills/ are never scanned), so
'op install --target opencode' delivered nothing. Mirror the codex
layout instead: bundle under ~/.config/opencode/openpencil-skill with
a skills/ symlink opencode's {skill,skills}/**/SKILL.md scan picks up.
The installer-owned entry is recreated on every install so stale
squatters can't shadow it; remove_path only treats NotFound as absent
and handles dangling Windows directory symlinks.
2026-07-17 20:18:26 +08:00
Kayshen-X c355719fd5 fix(ci): clear Rust workflow blockers 2026-07-15 22:47:39 +08:00
Kayshen-X 7c8e2abfa7 test(cli): enforce complete bundle templating 2026-07-15 21:17:21 +08:00
Kayshen-X 83063bc279 refactor(cli): render bundled skill version from Cargo 2026-07-15 21:17:21 +08:00
Kayshen-X e0a2bd4e69 refactor: derive Rust product versions from Cargo 2026-07-15 21:17:20 +08:00
Kayshen-X 20bf8f123b refactor(cli): split app control tests 2026-07-13 21:41:23 +08:00
Danny Ahn f8cfcab7fd fix(cli): validate document before starting headless MCP server
Preflight headless document loading so malformed or binary archives fail with a clear, actionable error before the MCP server starts.

Keep the CLI parser dependency lightweight by disabling op-pen-loader default features and include the updated lockfile plus regression coverage.
2026-07-13 14:29:48 +08:00
Kayshen-X 7ec373c9a7 feat(cli): export pages nodes and live selection 2026-07-12 17:52:36 +08:00
Kayshen-X 686536a15e feat(openpencil): add code-to-design conversion flow 2026-07-04 13:23:28 +08:00
Kayshen-X f4e8e62ec0 style: rustfmt drift in op-cli design routing and native widget host 2026-07-03 22:32:13 +08:00
Kayshen-X b218a1e15d feat(cli): route op design --script / @file.js payloads to batch_design script mode
op design gains explicit script routing (--script flag, implied for
@file.js/.mjs payloads) and the vendored openpencil-skill bundle
(0.8.0) teaches script mode with the same contract the internal
SCRIPT_FORMAT prompt uses.
2026-07-03 22:08:24 +08:00
Kayshen-X 47ff290cf6 fix(desktop): windows console, spawn, and url-opening hygiene
Four Windows runtime defects from the platform audit:

- The binary stayed in the console subsystem, parking a console window
  behind the GUI when launched from Explorer. Release builds now set
  windows_subsystem = "windows"; debug keeps stderr tracing visible.
- Background CLI probes (model discovery, provider version checks) and
  the vendored Claude SDK's per-turn spawns lacked CREATE_NO_WINDOW,
  flashing console windows once the GUI detaches from the console.
- MCP stdio servers naming .cmd/.bat shims (npx and most npm-installed
  servers) could not spawn: CreateProcess cannot execute shims and Rust
  1.77+ refuses them as program names. vendor/agent now resolves the
  command PATHEXT-style against the PATH the server will actually see
  (per-server env override wins) and routes only genuine shims through
  cmd /c — real executables keep direct spawn semantics.
- cmd /C start truncated URLs at `&` (every OAuth authorize URL). The
  URL now travels double-quoted via raw_arg so cmd keeps it literal.
2026-07-03 00:08:21 +08:00
Kayshen-X 941d51f805 feat(process): extract shared process io primitives 2026-06-14 10:54:26 +08:00
Kayshen-X 4d9b2d783d feat(rpc): extract shared JSON-RPC transport 2026-06-14 10:33:21 +08:00
Kayshen-X 811b02d155 feat(config): add shared OpenPencil config store 2026-06-14 10:17:22 +08:00
Kayshen-X 55982477fd feat(cli): codegen commands wired to real tools, status pid, web start json 2026-06-12 23:28:06 +08:00
Kayshen-X aa0a29b439 fix(ci): handle windows cli paths 2026-06-06 14:26:55 +08:00
Kayshen-X 6655b029fb fix(ci): restore rust cli bundle checks 2026-06-06 13:02:37 +08:00
Kayshen-X 54fb746881 feat(mcp): expand rust editor mcp surface 2026-06-05 22:19:08 +08:00
Kayshen-X 9edc9f71c3 feat(cli): expand CLI command and flag surface
Add CLI path-args, file-flag, selection and design command coverage matching the expanded MCP tool surface, with tests and usage text.
2026-06-02 09:42:06 +08:00
Kayshen-X a26e1b0f48 fix(mcp): support ts move copy targets 2026-06-02 09:42:01 +08:00
Kayshen-X dd34ca8526 fix(mcp): accept ts delete page targets 2026-06-02 09:42:00 +08:00
Kayshen-X 4f251c138c fix(mcp): accept ts update payloads 2026-06-02 09:41:59 +08:00
Kayshen-X 79a2d0830c fix(mcp): support insert parent and page targets 2026-06-02 09:41:57 +08:00
Kayshen-X bbb26b86e8 fix(mcp): support svg import page targets 2026-06-02 09:41:56 +08:00
Kayshen-X aefdf1800f fix(mcp): support svg import parent 2026-06-02 09:41:55 +08:00
Kayshen-X 61f50999e2 fix(mcp): accept batch design operations in rust 2026-06-02 09:41:52 +08:00
Kayshen-X 0362ba3993 fix(cli): add skill install command parity 2026-06-02 09:41:50 +08:00
Kayshen-X 40d3371448 fix(cli): add rust mcp start stop commands 2026-06-02 09:41:49 +08:00
Kayshen-X 7ea28b32c4 fix(cli): add save command parity 2026-06-02 09:41:48 +08:00
Kayshen-X 68394826fe fix(cli): add figma import parity 2026-06-02 09:41:47 +08:00
Kayshen-X 09277fa77c fix(cli): report mcp status without server 2026-06-02 09:41:46 +08:00
Kayshen-X 9d5edd5812 fix(cli): add codegen command parity 2026-06-02 09:41:45 +08:00
Kayshen-X ce813bcb3e fix(mcp): add open document parity 2026-06-02 09:41:40 +08:00
Kayshen-X cb1cf55ae9 fix(mcp): add batch get parity 2026-06-02 09:41:39 +08:00
Kayshen-X 1055c8c1b3 fix(mcp): add theme preset parity 2026-06-02 09:41:34 +08:00
Kayshen-X b393daeafa fix(mcp): add read-nodes parity 2026-06-02 09:41:33 +08:00
Kayshen-X 67ea8c3e25 fix(mcp): add bulk variable parity 2026-06-02 09:41:32 +08:00
Kayshen-X 649ce98ce0 fix(mcp): add find-space parity 2026-06-02 09:35:37 +08:00
Kayshen-X e5f22c0397 fix(mcp): accept page id operations 2026-05-31 22:04:18 +08:00
Kayshen-X 20a6327546 fix(git): blink the create-branch input caret
The inline 新建分支 name input painted a static '|' and the host never woke
the loop for branch_create_focused, so the caret sat frozen. Blink it on the
shared commit-caret cadence (paint_menu_input), wake next_animation_deadline
for branch_create_focused, and seed/reset commit_caret_anchor_ms on focus +
keypress so it starts solid then blinks.
2026-05-31 22:03:59 +08:00
Kayshen-X e3ae058b29 fix(cli): align rust op with live mcp 2026-05-31 22:00:41 +08:00
Kayshen-X c18ad5a776 feat: close six TS-parity gaps in the Rust shell
Closes six verified gaps from the 2026-05-17 TS-vs-Rust gap analysis,
each build- and test-green:

- editor: SetNodeFlip + SetEllipseArc commands (+ set_node_flip /
  set_ellipse_arc MCP tools) — schema already had the fields, only
  the command path was missing.
- export: export_node_raster crops a raster to one node's bbox;
  File -> Export is now selection-aware (single selection -> layer).
- editor: SVG import — hand-rolled parser (shapes + path M/L/H/V/
  C/S/Q/T/Z) in svg_import.rs; cubic curves flatten to dense straight
  anchors at import time so the renderer/pen-tool stay on their 1:1
  straight-segment model. + EditorCommand::ImportSvg + import_svg tool.
- mcp: HTTP transport — mcp_serve::run_http serves MCP over a
  TcpListener (--mcp-http <port> <path>); process_message is shared
  with the stdio path.
- cli: new op-cli crate (binary `op`) — a dependency-free HTTP MCP
  client driving every tool via `op <tool> key=value...`.
- ai: ChatRequest gains thinking/effort fields (ThinkingMode /
  EffortLevel, defaults Adaptive/Low to match the TS runtime config).

MCP tool catalog 77 -> 80. Oversized files split to honour the
800-line cap (svg_import, export, mcp_serve, adapter).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-17 13:03:11 +08:00