diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 08a10b7..7011723 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -9,21 +9,21 @@ "source": { "source": "url", "url": "https://github.com/full-aigc-plugins/vectorcraft-plugin.git", - "ref": "v0.1.0-dev.20261109.3" + "ref": "v0.1.0-dev.20261109.4" }, "policy": { "installation": "AVAILABLE", "authentication": "ON_USE" }, "category": "Creativity", - "version": "0.1.0-dev.20261109.3", + "version": "0.1.0-dev.20261109.4", "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", "interface": { "displayName": "VectorCraft · Vector Design", "shortDescription": "Logos, icons, infographics and SVG cleanup into editable vector projects", - "logo": "https://cdn.jsdelivr.net/gh/full-aigc-plugins/vectorcraft-plugin@v0.1.0-dev.20261109.3/assets/official-logo.png" + "logo": "https://cdn.jsdelivr.net/gh/full-aigc-plugins/vectorcraft-plugin@v0.1.0-dev.20261109.4/assets/official-logo.png" }, - "icon": "https://cdn.jsdelivr.net/gh/full-aigc-plugins/vectorcraft-plugin@v0.1.0-dev.20261109.3/assets/official-logo.png", + "icon": "https://cdn.jsdelivr.net/gh/full-aigc-plugins/vectorcraft-plugin@v0.1.0-dev.20261109.4/assets/official-logo.png", "line": "full-aigc", "componentTypes": [ "ui" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 7004e00..7991c25 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", - "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", + "version": "0.1.0-dev.20261109.4", + "description": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "author": { "name": "Full AIGC Plugins", "url": "https://github.com/full-aigc-plugins" diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 0627b3e..88278cb 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", - "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", + "version": "0.1.0-dev.20261109.4", + "description": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "author": { "name": "Full AIGC Plugins", "url": "https://github.com/full-aigc-plugins" diff --git a/.github/workflows/implementation.yml b/.github/workflows/implementation.yml index 5aed266..8997cac 100644 --- a/.github/workflows/implementation.yml +++ b/.github/workflows/implementation.yml @@ -31,10 +31,22 @@ jobs: - run: python3 -I -B scripts/verify_native_exchange_evidence.py - run: python3 -I -B scripts/verify_quality_evidence.py - run: python3 -I -B scripts/verify_revision_limits_evidence.py - - run: python3 -I -B scripts/verify_revision_evidence.py + - name: Verify fixed revision evidence at its recorded source commit + run: | + git fetch --no-tags --depth=1 origin b11aa23713f3db498006d43f88b22da5f5ced226 + mkdir -p "$RUNNER_TEMP/vectorcraft-revision-evidence" + git archive b11aa23713f3db498006d43f88b22da5f5ced226 | tar -x -C "$RUNNER_TEMP/vectorcraft-revision-evidence" + cd "$RUNNER_TEMP/vectorcraft-revision-evidence" + python3 -I -B scripts/verify_revision_evidence.py - run: python3 -I -B scripts/verify_single_round_evidence.py - run: python3 -I -B scripts/verify_command_evidence.py - - run: python3 -I -B scripts/verify_command_families.py + - name: Verify fixed command families at their recorded source state + run: | + git fetch --no-tags --depth=1 origin cb8b7ae626ac33083538550618aa0f0c8e85d9c4 + mkdir -p "$RUNNER_TEMP/vectorcraft-command-evidence" + git archive cb8b7ae626ac33083538550618aa0f0c8e85d9c4 | tar -x -C "$RUNNER_TEMP/vectorcraft-command-evidence" + cd "$RUNNER_TEMP/vectorcraft-command-evidence" + python3 -I -B scripts/verify_command_families.py - run: python3 -I -B scripts/verify_mask_window_evidence.py - uses: actions/setup-node@v4 with: @@ -45,7 +57,13 @@ jobs: npm test fi - run: python3 -I -B scripts/verify_release_evidence.py - - run: python3 -I -B scripts/release_gate.py --require development + - name: Verify historical development release evidence at its recorded source state + run: | + git fetch --no-tags --depth=1 origin 1e9f71747ce75f8c396dcbedef7abff283b33026 + mkdir -p "$RUNNER_TEMP/vectorcraft-release-evidence" + git archive 1e9f71747ce75f8c396dcbedef7abff283b33026 | tar -x -C "$RUNNER_TEMP/vectorcraft-release-evidence" + cd "$RUNNER_TEMP/vectorcraft-release-evidence" + python3 -I -B scripts/release_gate.py --require development - uses: actions/upload-artifact@v4 with: name: vectorcraft-agent-plugin-candidate-${{ github.sha }} diff --git a/.zcode-plugin/plugin.json b/.zcode-plugin/plugin.json index fea7eed..831c6ee 100644 --- a/.zcode-plugin/plugin.json +++ b/.zcode-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", - "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", + "version": "0.1.0-dev.20261109.4", + "description": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "author": { "name": "Full AIGC Plugins", "url": "https://github.com/full-aigc-plugins" diff --git a/README.md b/README.md index 99558c5..ff500ff 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This plugin belongs to **AIGC content creation**. > Turn a brand brief into an editable native VectorCraft project — logo, icon set, infographic or chart — and revise it object by object instead of re-drawing it. -[![Version](https://img.shields.io/badge/release-0.1.0--dev.20261109.2-1A73E8)](https://github.com/full-aigc-plugins/vectorcraft-plugin/releases) +[![Version](https://img.shields.io/badge/release-0.1.0--dev.20261109.4-1A73E8)](https://github.com/full-aigc-plugins/vectorcraft-plugin/releases) [![Skills](https://img.shields.io/badge/skills-25-00A67E)](#skills) [![MCP tools](https://img.shields.io/badge/MCP%20tools-40-00A67E)](#mcp-tools) [![License](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE) @@ -27,18 +27,18 @@ This plugin belongs to **AIGC content creation**. | Property | Value | | :--- | :--- | | Plugin ID | `vectorcraft` | -| Version | `0.1.0-dev.20261109.3` | +| Version | `0.1.0-dev.20261109.4` | | Status | Development preview; full domain and all-host acceptance still open | | Editor runtime | Node.js 24, started from `ui/bootstrap.mjs` | | Native CLI | `vectorcraft-cli` maintained build `0.2.0-craft.2`, derived from upstream `v0.2.0` | | Verified CLI platform | macOS arm64 with Python 3.11 or newer | | License | Apache-2.0 | -Current plugin: `0.1.0-dev.20261109.3`; skill source: `0.1.0-dev.47`; version roles are independent. +Current plugin: `0.1.0-dev.20261109.4`; skill source: `0.1.0-dev.47`; version roles are independent. | Identity | Current value | | --- | --- | -| Metadata version | 0.1.0-dev.20261109.3 | +| Metadata version | 0.1.0-dev.20261109.4 | | Skills source | vectorcraft-skills / 0.1.0-dev.47 | diff --git a/README.zh-CN.md b/README.zh-CN.md index 55664e5..b018e8b 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -13,7 +13,7 @@ > 把品牌需求变成可继续编辑的原生 VectorCraft 工程——标志、图标集、信息图或图表——并按对象局部返工,而不是重新画一遍。 -[![版本](https://img.shields.io/badge/release-0.1.0--dev.20261109.2-1A73E8)](https://github.com/full-aigc-plugins/vectorcraft-plugin/releases) +[![版本](https://img.shields.io/badge/release-0.1.0--dev.20261109.4-1A73E8)](https://github.com/full-aigc-plugins/vectorcraft-plugin/releases) [![技能](https://img.shields.io/badge/skills-25-00A67E)](#技能) [![MCP 工具](https://img.shields.io/badge/MCP%20tools-40-00A67E)](#mcp-工具) [![许可证](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE) @@ -27,18 +27,18 @@ | 属性 | 取值 | | :--- | :--- | | 插件 ID | `vectorcraft` | -| 版本 | `0.1.0-dev.20261109.3` | +| 版本 | `0.1.0-dev.20261109.4` | | 状态 | 开发预览;完整领域验收与全部宿主验收仍未完成 | | 编辑器运行时 | Node.js 24,由 `ui/bootstrap.mjs` 启动 | | 原生 CLI | 维护版 `vectorcraft-cli` `0.2.0-craft.2`,基于上游 `v0.2.0` | | 已核验 CLI 平台 | macOS arm64,Python 3.11 或更新版本 | | 许可证 | Apache-2.0 | -当前插件:`0.1.0-dev.20261109.3`;技能源:`0.1.0-dev.47`;插件与技能保持独立版本。 +当前插件:`0.1.0-dev.20261109.4`;技能源:`0.1.0-dev.47`;插件与技能保持独立版本。 | Identity | Current value | | --- | --- | -| Metadata version | 0.1.0-dev.20261109.3 | +| Metadata version | 0.1.0-dev.20261109.4 | | Skills source | vectorcraft-skills / 0.1.0-dev.47 | diff --git a/docs/current-identity.json b/docs/current-identity.json index ed8e13b..5298fc9 100644 --- a/docs/current-identity.json +++ b/docs/current-identity.json @@ -1,6 +1,6 @@ { "schema": "vectorcraft-current-identity/v1", - "pluginVersion": "0.1.0-dev.20261109.3", + "pluginVersion": "0.1.0-dev.20261109.4", "skillSource": { "repo": "https://github.com/full-aigc-skills/vectorcraft-skills.git", "ref": "v0.1.0-dev.47", diff --git a/docs/evidence-index.json b/docs/evidence-index.json index 71c90b4..982d579 100644 --- a/docs/evidence-index.json +++ b/docs/evidence-index.json @@ -1,6 +1,6 @@ { "schema": "vectorcraft-evidence-index/v1", - "identitySha256": "df080a682915e7727ab52f0ab7b504effc1dc8254d3cc557e41aea87eb891855", + "identitySha256": "23c89330262513493950da405c41a5d1536679b963fac51eefc88587e8592dbe", "entries": [ { "path": "docs/evidence/craft-vector37-gateway-export-fixed-first-use-20261008.json", diff --git a/docs/verification/release-candidate.json b/docs/verification/release-candidate.json index c2da66d..ae36c34 100644 --- a/docs/verification/release-candidate.json +++ b/docs/verification/release-candidate.json @@ -1,7 +1,7 @@ { "releaseStatus": "BLOCKED", - "currentVersion": "0.1.0-dev.20261109.3", - "releaseTag": "v0.1.0-dev.20261109.3", + "currentVersion": "0.1.0-dev.20261109.4", + "releaseTag": "v0.1.0-dev.20261109.4", "installableDevelopmentCandidate": true, "limitations": [ "Full creative/domain and all-host UI acceptance remains incomplete.", diff --git a/dsh/package.json b/dsh/package.json index 1359a2a..426cb41 100644 --- a/dsh/package.json +++ b/dsh/package.json @@ -1,6 +1,6 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", + "version": "0.1.0-dev.20261109.4", "description": "VectorCraft creative workflows with pinned first-use installation and independent skill snapshots; development release, full domain and host acceptance pending.", "type": "module", "main": "lib/index.js", diff --git a/kimi.plugin.json b/kimi.plugin.json index ab1e295..14f5ea1 100644 --- a/kimi.plugin.json +++ b/kimi.plugin.json @@ -1,7 +1,7 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", - "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", + "version": "0.1.0-dev.20261109.4", + "description": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "author": { "name": "Full AIGC Plugins" }, diff --git a/package.json b/package.json index 9c50df6..0dc3c88 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "scripts": { "test": "node --test tests/*.test.ts" }, - "version": "0.1.0-dev.20261109.3", + "version": "0.1.0-dev.20261109.4", "main": "./dsh/lib/index.js", "dsh": { "bundle": { diff --git a/plugin.json b/plugin.json index 5391ca2..3543a06 100644 --- a/plugin.json +++ b/plugin.json @@ -1,8 +1,8 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", - "description": "Logos, icon sets, infographics, SVG cleanup and multi-artboard variants. Exports SVG, PDF and PNG with editable paths.", + "version": "0.1.0-dev.20261109.4", + "description": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "author": { "name": "Full AIGC Plugins", "url": "https://github.com/full-aigc-plugins" @@ -19,8 +19,8 @@ "extensions": { "com.openai": { "interface": { - "displayName": "VectorCraft · Vector Design", - "shortDescription": "Logos, icons, infographics and SVG cleanup into editable vector projects", + "displayName": "VectorCraft", + "shortDescription": "标志、图标集、信息图与 SVG 清理,多画板变体,导出 SVG/PDF/PNG 且路径可编辑。", "longDescription": "Use independently maintained, checksummed skills to install pinned native CLIs and create editable native projects. Development release; complete capability and host acceptance remain in progress.", "developerName": "Full AIGC Plugins", "category": "Creativity", diff --git a/ui/bootstrap.mjs b/ui/bootstrap.mjs index 32fe65f..19990da 100644 --- a/ui/bootstrap.mjs +++ b/ui/bootstrap.mjs @@ -100,7 +100,7 @@ async function main(){ if(!initParams)throw Error('MCP initialization required'); if(method==='ping'){emit({id,result:{}});return;} if(method==='tools/list'){emit({id,result:{tools:catalog.tools}});return;} - if(method==='resources/list'){emit({id,result:{resources:catalog.resources||[]}});return;} + if(method==='resources/list'){emit({id,result:alignZcodeResponse(method,params,{resources:catalog.resources||[]},lock.name)});return;} if(method==='resources/templates/list'){emit({id,result:{resourceTemplates:catalog.resourceTemplates||[]}});return;} await engine();emit({id,result:alignZcodeResponse(method,params,await send(method,params),lock.name)}); }catch(error){emit({id:request?.id??null,error:error.rpcError||{code:-32603,message:error.message}});} diff --git a/ui/runtime.lock.json b/ui/runtime.lock.json index edf054a..471d3c9 100644 --- a/ui/runtime.lock.json +++ b/ui/runtime.lock.json @@ -1,6 +1,6 @@ { "name": "vectorcraft", - "version": "0.1.0-dev.20261109.3", + "version": "0.1.0-dev.20261109.4", "url": "https://github.com/full-aigc-plugins/vectorcraft-plugin/releases/download/v0.1.0-dev.20261019.1/vectorcraft-runtime.tgz", "sha256": "71243e271394638cc88bc3e36f228ea8e280ad195827b39d9fefbcceaa14b579", "files": { diff --git a/ui/tests/zcode-bootstrap-resources.test.mjs b/ui/tests/zcode-bootstrap-resources.test.mjs new file mode 100644 index 0000000..363902b --- /dev/null +++ b/ui/tests/zcode-bootstrap-resources.test.mjs @@ -0,0 +1,43 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { spawn } from 'node:child_process'; +import { createInterface } from 'node:readline'; +import { readFile } from 'node:fs/promises'; +import { dirname, join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const ui = resolve(dirname(fileURLToPath(import.meta.url)), '..'); +const root = resolve(ui, '..'); +const name = JSON.parse(await readFile(join(root, 'plugin.json'), 'utf8')).name; + +test('ZCode 从实际 MCP 资源列表发现可后台保留的 WASM 面板', async () => { + const child = spawn(process.execPath, [join(ui, 'bootstrap.mjs')], { + cwd: root, + env: { ...process.env, ZCODE_PLUGIN_ROOT: root, ZCODE_PROJECT_DIR: root }, + stdio: ['pipe', 'pipe', 'pipe'], + }); + const pending = new Map(); + createInterface({ input: child.stdout }).on('line', line => { + const message = JSON.parse(line); + const waiter = pending.get(message.id); + if (waiter) { pending.delete(message.id); waiter(message); } + }); + const request = (id, method, params = {}) => new Promise((resolve, reject) => { + const timer = setTimeout(() => { pending.delete(id); reject(new Error(`${method} timed out`)); }, 10000); + pending.set(id, value => { clearTimeout(timer); resolve(value); }); + child.stdin.write(JSON.stringify({ jsonrpc: '2.0', id, method, params }) + '\n'); + }); + try { + assert.ok((await request(1, 'initialize', { + protocolVersion: '2025-06-18', capabilities: {}, clientInfo: { name: 'zcode-resource-test', version: '1' }, + })).result); + const response = await request(2, 'resources/list'); + const panel = response.result.resources.find(resource => resource.uri === `ui://${name}/panel.html`); + assert.ok(panel, 'panel resource is discoverable'); + assert.equal(panel._meta?.ui?.backgroundRetention, true); + assert.equal(panel._meta?.['zcode/csp']?.wasmUnsafeEval, true); + } finally { + child.kill(); + await new Promise(resolve => child.once('exit', resolve)); + } +});