Skip to content

feat(archify-panel): add Archify side panel plugin - #163

Open
ZouKD wants to merge 2 commits into
zai-org:mainfrom
ZouKD:feat/archify-panel
Open

ZouKD wants to merge 2 commits into
zai-org:mainfrom
ZouKD:feat/archify-panel

Conversation

@ZouKD

@ZouKD ZouKD commented Nov 4, 2026 •

Copy link
Copy Markdown

Plugin type (required) / 插件类型(必填)

  • UI Plugin / 是 UI 插件 — provides MCP Apps interactive pages / 提供 MCP Apps 交互页面

Affected plugin name(s) / 涉及的插件名称:archify-panel(new plugin / 新增插件)

What / 改动内容

EN: Adds archify-panel, a community plugin that adapts the open-source Archify diagram engine (v3.2.0, Apache-2.0) to the ZCode side panel. The agent renders architecture / workflow / sequence / dataflow / lifecycle / ERD / class / tree / timeline / waterfall diagrams; artifacts open in an MCP Apps side panel in full-interaction mode and export PNG / SVG / share cards through the panel's export bridge (save_export writes into the workspace and asks the host for a save dialog).

中文:新增社区插件 archify-panel,把开源图形引擎 Archify(v3.2.0,Apache-2.0)适配到 ZCode 侧栏。Agent 渲染架构图、流程图、时序图、数据流、状态机、ERD、类图、树、时间线、瀑布图;产物在侧栏面板以完整交互模式打开,通过面板常驻的导出桥接导出 PNG、SVG 与分享卡片(save_export 落盘工作区并请求宿主另存为)。

Panel shell (0.2.0): the shell renders no toolbar and keeps no permanent status bar. Before the first diagram it shows an empty-state hint; a transient toast (about 3 s) appears only for errors and export results. The gate summary that used to sit in an always-visible footer is gone.

面板薄壳(0.2.0):面板不渲染工具栏,也不保留常驻状态栏。首个图形生成前显示空状态提示;只有出错或导出结果时浮出约 3 秒的提示条。原先常驻底栏里的关卡(gate)信息已移除。

Layout: source package ui-plugins/archify-panel/ (build + stage); install tree external_plugins/archify-panel/. The bundled Archify runtime (vendor/archify, committed under the source package) is copied into the install directory by scripts.stage via ZCODE_PLUGIN_INSTALL_DIR; dist/ is produced by pnpm build as usual.

Base: rebased onto the latest main (upstream head bccede3 at the time of this push); marketplace.json keeps every upstream entry (image-generation / Seedream, video-generation / Seedance, ...) and appends only archify-panel.

How to test / 测试方式

Verified locally / 本机已执行的验证

Run on the pushed head of this branch:

  • pnpm install --frozen-lockfile — lockfile matches all 18 workspace projects
  • pnpm build, pnpm typecheck, pnpm test — pass
  • pnpm lint — 0 errors; remaining warnings are pre-existing and come from the vendored Archify sources plus an unrelated ui-plugins/craft-runtime/toolchain.mjs
  • pnpm test:artifacts — PASS isolated artifact archify-panel@0.2.0
  • python3 scripts/validate.py — OK: 55 plugin(s) validated
  • python3 scripts/build_dist.py — passes for the whole repository; artifact plugins/archify-panel/0.2.0/plugin.zip (1,802,331 bytes, sha256 e471a5a0bda1…)

End-to-end render check: node ui-plugins/archify-panel/test/smoke.mjs <workspace> — MCP server starts, renders with all four Archify gates passing (validate / deliver / check / browser-check), export round-trip works.

In-app acceptance / 应用内交互验收

  1. Install from the marketplace, then ask the agent: "Draw an architecture diagram of this repository" / 「用架构图画出这个仓库的结构」
  2. The rendered diagram opens in the side panel; confirm full interaction (drag / zoom), then export PNG from the diagram's own export menu and confirm the toast and the host save dialog.
  3. Confirm the panel shows no permanent status bar and that the toast disappears after about 3 s.

Screenshots or a short recording for the UI change (required by CONTRIBUTING.md) are not attached yet / 按 CONTRIBUTING.md 对 UI 改动要求的截图或录屏尚未附上。

Dependencies / network / side effects:

  • Local stdio MCP server (archify); no network access, no telemetry — rendering is fully local
  • Writes rendered artifacts to the workspace .archify-panel/ (exports under exports/)
  • The render pipeline runs a local-browser measurement step (browser-check gate)
  • Build-time deps: esbuild, typescript, MCP SDK (bundled into dist/)

Third-party / 第三方:

  • Bundled runtime: Archify v3.2.0 (Apache-2.0; historical MIT grants preserved). Modifications declared in NOTICE.md per Apache-2.0 §4(b): three brand marks carrying copyleft / NC licenses (Jenkins, Rust, Vue.js) were removed from the bundled brand catalogue
  • Plugin icon is original artwork; no Archify trademark is used. This plugin is not affiliated with or endorsed by the Archify project

Self-check / 自查清单

  • Plugin name is unique kebab-case; new external plugin directory is external_plugins/<name>/ / 插件名唯一且 kebab-case,位于 external_plugins/archify-panel/
  • category: developer-tools
  • Plugin type and affected names are declared above / 已声明插件类型与涉及插件
  • version 0.2.0 set in BOTH plugin.json and marketplace.json (initial publication was 0.1.0; bumped to 0.2.0 for the panel interaction change, both files in sync) / 两处版本号一致(0.1.0 首发后因面板交互调整升至 0.2.0)
  • README.md (EN) and README_CN.md both updated and equivalent / 中英文 README 等效
  • description_i18n has both en and zh-CN
  • No secrets, machine-specific paths, or private dependencies / 不含密钥与机器专属路径
  • Model/API/network dependencies documented / 依赖已写明(无网络访问,纯本地渲染)
  • python3 scripts/validate.py (55 plugins) and python3 scripts/build_dist.py pass locally, artifact plugins/archify-panel/0.2.0/plugin.zip. git diff --check reports trailing whitespace only inside ui-plugins/archify-panel/vendor/archify/**, vendored verbatim from upstream Archify / 本地校验与全量构建均通过;git diff --check 仅在 vendor 目录下的原样引入文件报行尾空格

@panda920

panda920 commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically.

@ZouKD

ZouKD commented Nov 8, 2026

Copy link
Copy Markdown
Author

Update: v0.1.0 → v0.2.0 — panel status bar removed / 移除面板常驻状态栏

Commit 82aae2e / 提交 82aae2e:

EN

  • Removed the permanent bottom status bar (gate summary + artifact path) from the panel shell — both already flow back through the render_diagram tool result and model context, so displaying them again was redundant.
  • Errors and export results now surface as a brief toast at the bottom of the canvas, auto-dismissing after 3 s; the empty state ("no diagram yet") moved to a centered hint. The shell renders no chrome at all now.
  • Browser harness regression extended: asserts the status bar stays absent (statusBar=absent) and polls the toast content on export.
  • Verified locally: tsc --noEmit, oxlint (0 warnings on changed files), scripts/validate.py (53 plugins), scripts/build_dist.py; full export round-trip re-run in headless Chrome.

中文

  • 移除面板底部常驻状态栏(gate 校验摘要 + 产物绝对路径)—— 这两块信息本就通过 render_diagram 工具返回与模型上下文回传,面板内重复展示没有增量价值
  • 出错与导出结果改为画布底部按需浮出的提示条(3 秒自动消失);空状态提示("还没有图形")移到画布中央 —— 面板薄壳现在完全不渲染任何常驻界面元素
  • 浏览器回归测试同步加强:断言底栏不存在(statusBar=absent),并轮询校验导出浮层文案
  • 本地验证:tsc --noEmit、oxlint(改动文件 0 警告)、scripts/validate.py(53 个插件)、scripts/build_dist.py 全部通过;无头 Chrome 重跑完整导出链路

@panda920

Copy link
Copy Markdown
Collaborator

Thanks for the contribution! This PR no longer applies cleanly on top of the latest main (conflicts in: marketplace.json). Please rebase onto main and push again; it will be picked up automatically.

🤖 Copy this prompt into Claude Code / Codex to fix it
You are updating my pull request #163 to github.com/zai-org/zcode-plugins (the ZCode plugin marketplace).
The maintainers' automated intake reported: the PR conflicts with the latest main

Conflicting files: marketplace.json

Fix it in this repository:
- New external plugins belong under external_plugins/<my-plugin>/; keep existing plugins in their current directory;
  never modify .github/, scripts/, tests/, .gitignore, .gitattributes or AGENTS.md.
- Follow CONTRIBUTING.md and AGENTS.md: the manifest lives at <plugin-directory>/.zcode-plugin/plugin.json,
  its name/version must match marketplace.json, names are kebab-case, keep the required i18n fields.
- Fetch the latest main of zai-org/zcode-plugins and rebase onto it; if marketplace.json conflicts,
  keep every existing entry and re-add mine.
- Run `python scripts/validate.py` until it passes, then force-push my PR branch.

@ZouKD
ZouKD force-pushed the feat/archify-panel branch 2 times, most recently from 1ad40e5 to 612de89 Compare November 12, 2026 13:47
@panda920

Copy link
Copy Markdown
Collaborator

✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically.

@ZouKD
ZouKD force-pushed the feat/archify-panel branch from 612de89 to 635531b Compare November 12, 2026 14:58
@panda920

Copy link
Copy Markdown
Collaborator

✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants