Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
4 changes: 2 additions & 2 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
24 changes: 21 additions & 3 deletions .github/workflows/implementation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Comment on lines +64 to +66

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Retain the release gate against the current candidate

In the implementation workflow, running the archived copy of release_gate.py makes its ROOT point to the historical package, so this step no longer gates the current candidate uploaded immediately afterward. Replaying that archive passes, while running the gate against the reviewed tree reports publishable.development: false with five failed layers due to release_evidence_changed. Historical verification can be an additional check, but replacing the current-tree check allows candidates without matching release evidence through the existing gate. This also violates the repository's explicit prohibition on bypassing release gates.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

- uses: actions/upload-artifact@v4
with:
name: vectorcraft-agent-plugin-candidate-${{ github.sha }}
Expand Down
4 changes: 2 additions & 2 deletions .zcode-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 |


Expand Down
8 changes: 4 additions & 4 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 |


Expand Down
2 changes: 1 addition & 1 deletion docs/current-identity.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion docs/evidence-index.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
4 changes: 2 additions & 2 deletions docs/verification/release-candidate.json
Original file line number Diff line number Diff line change
@@ -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.",
Expand Down
2 changes: 1 addition & 1 deletion dsh/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
4 changes: 2 additions & 2 deletions kimi.plugin.json
Original file line number Diff line number Diff line change
@@ -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"
},
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
8 changes: 4 additions & 4 deletions plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion ui/bootstrap.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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}});}
Expand Down
2 changes: 1 addition & 1 deletion ui/runtime.lock.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
43 changes: 43 additions & 0 deletions ui/tests/zcode-bootstrap-resources.test.mjs
Original file line number Diff line number Diff line change
@@ -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));
}
});
Loading