From 75c7fd8bae96162dc581744d6896ee0598d4a36a Mon Sep 17 00:00:00 2001 From: loong10k <20489781+loong10k@users.noreply.github.com> Date: Sat, 31 Oct 2026 22:33:08 +0800 Subject: [PATCH] Correct EffectCraft identity and locked platform scope --- README.md | 6 +++--- README.zh-CN.md | 6 +++--- scripts/validate_docs.py | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 80b19c3..4ae74af 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ This plugin belongs to **AIGC content creation**. > Build editable `.ecproj` compositions — comps, text and shape layers, keyframes, expressions, cameras, masks, puppet pins and effects — then render previews or finished shots with alpha where you ask for it. -[![Version](https://img.shields.io/badge/release-0.1.0--dev.20261018.4-1A73E8)](.codex-plugin/plugin.json) -[![Skills](https://img.shields.io/badge/skills-16-00A67E)](#skills) +[![Version](https://img.shields.io/badge/release-0.1.0--dev.20261018.3-1A73E8)](.codex-plugin/plugin.json) +[![Skills](https://img.shields.io/badge/skills-26-00A67E)](#skills) [![MCP server](https://img.shields.io/badge/MCP%20server-1-00A67E)](#mcp-tools) [![License](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE) @@ -37,7 +37,7 @@ The native `.ecproj` project is the source of truth. There is no second document ### Prerequisites -- macOS arm64. Seven native platform/architecture targets are locked, but acceptance evidence currently covers macOS arm64; anything else returns `unsupported_platform`. +- Seven native CLI platform/architecture targets are locked; use the matching pinned artifact. Current acceptance evidence covers macOS arm64 only. Targets outside the lock return `unsupported_platform`; the other locked targets are available for installation but have no equivalent runtime acceptance claim. The owned desktop path supports only the two locked macOS architectures. - No preinstalled Python is required for the managed entry: `launch.sh` / `launch.ps1` provisions the pinned isolated Python 3.13.16 and the EffectCraft CLI in the user data directory. - Node.js 24 or newer for the embedded editor MCP server. A Git checkout has no `ui/dist/`; build it per `ui/README.md` first, or install a release bundle that ships it. - First use needs network or pinned archives. `--runtime-home` or `CRAFT_RUNTIME_HOME` relocates the runtime root (`~/.local/share/craft-runtimes` by default). No `sudo`, no `PATH` edits. diff --git a/README.zh-CN.md b/README.zh-CN.md index efb3831..82187da 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -13,8 +13,8 @@ > 制作可编辑的 `.ecproj` 合成:合成、文字与形状图层、关键帧、表达式、摄像机、蒙版、木偶针脚与效果,并按你的要求输出预览、成片或带透明的片段。 -[![版本](https://img.shields.io/badge/release-0.1.0--dev.20261018.4-1A73E8)](.codex-plugin/plugin.json) -[![技能数](https://img.shields.io/badge/skills-16-00A67E)](#技能) +[![版本](https://img.shields.io/badge/release-0.1.0--dev.20261018.3-1A73E8)](.codex-plugin/plugin.json) +[![技能数](https://img.shields.io/badge/skills-26-00A67E)](#技能) [![MCP server](https://img.shields.io/badge/MCP%20server-1-00A67E)](#mcp-工具) [![许可证](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE) @@ -37,7 +37,7 @@ EffectCraft Use 让编码智能体驱动原生 EffectCraft CLI:从素材规划 ### 前置条件 -- macOS arm64。已锁定七种原生平台/架构目标,但当前验收证据只覆盖 macOS arm64;其余平台返回 `unsupported_platform`。 +- 原生 CLI 已锁定七种平台/架构目标,须使用对应固定制品;当前验收证据仅覆盖 macOS arm64。锁外平台返回 `unsupported_platform`;其余锁内平台可安装,但不据此宣称同等运行验收。受控桌面路径仅支持锁定的两种 macOS 架构。 - 受管理入口不需要预装 Python:`launch.sh` / `launch.ps1` 会在用户数据目录准备固定的隔离 Python 3.13.16 与 EffectCraft CLI。 - 内嵌编辑器 MCP 服务需要 Node.js 24 或更新版本。Git 检出没有 `ui/dist/`,需先按 `ui/README.md` 构建,或安装自带该目录的发布包。 - 首次使用需要网络或固定归档。`--runtime-home` 或 `CRAFT_RUNTIME_HOME` 可迁移运行时根目录(默认 `~/.local/share/craft-runtimes`)。不需要 `sudo`,不修改 `PATH`。 diff --git a/scripts/validate_docs.py b/scripts/validate_docs.py index 1604a74..96a61d5 100644 --- a/scripts/validate_docs.py +++ b/scripts/validate_docs.py @@ -56,6 +56,20 @@ manifest = json.loads((ROOT / 'plugin.json').read_text()) status = json.loads((ROOT / 'project-status.json').read_text()) lock = json.loads((ROOT / 'skills.lock.json').read_text()) +local = json.loads((ROOT / 'plugin-local-skills.json').read_text()) +locked_names = set(lock['sources'][0]['skills']) if len(lock['sources']) == 1 else set() +local_names = set(local['skills']) +installed_names = {path.name for path in (ROOT / 'skills').iterdir() if path.is_dir()} +if locked_names & local_names or installed_names != locked_names | local_names: + errors.append('installed skills differ from locked and plugin-local inventory') +for filename in ('README.md', 'README.zh-CN.md'): + readme = (ROOT / filename).read_text() + if 'badge/release-' + manifest['version'].replace('-', '--') + '-1A73E8' not in readme: + errors.append(filename + ': stale version badge') + if 'badge/skills-' + str(len(installed_names)) + '-00A67E' not in readme: + errors.append(filename + ': stale skill count badge') + if ('outside the lock' if filename == 'README.md' else '锁外平台') not in readme: + errors.append(filename + ': platform support scope missing') source_plan = json.loads((ROOT / 'docs/skills-source-plan.json').read_text()) if len(lock['sources']) != 1 or any(source_plan.get(field) != lock['sources'][0].get(key) for field,key in [('package','package'),('sourceRef','ref'),('sourceSha','sha')]): errors.append('source plan identity differs from immutable skill lock')