Repository navigation
Conversation
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
|
Thanks for the implementation and the detailed notes. I’d like to clarify one boundary: the plugin launches ZCode with |
|
Thanks for the clear boundary framing — agreed on all points. The branch is now updated to v6.3.0 (commit 60c0552) implementing exactly this: Explicit opt-in / experimental gate (off by default, since 0.6.0):
Recovery guidance (README "Experimental opt-in (CDP injection)" section, EN + CN):
One additional change to flag: since 6.2.0 the plugin is no longer standard-only — it ships Bubble Studio, an MCP Apps interactive page ( Happy to discuss a safer integration approach as well — if the desktop client grows a supported extension point for background/theming, the injection layer would be retired in its favor; until then it stays behind this gate. Verification on this tree: |
|
Thanks for the contribution! This PR no longer applies cleanly on top of the latest 🤖 Copy this prompt into Claude Code / Codex to fix it |
Rebased on upstream/main (6e3951d); resolves the marketplace.json conflict by keeping every existing entry and re-adding mine at the end of the plugins array. Per the intake guidance this moves the plugin to external_plugins/zcode-beautify/ (community publisherType), source ./external_plugins/zcode-beautify in the root marketplace.json. The icon stays under assets/zcode-beautify/icon.png per the assets convention. Layout note: the plugin ships its own prebuilt esbuild bundles (built and released from its upstream repo, linked as homepage). The marketplace packaging contract refuses a dist/ directory for plugins without an in-repo build source, so the bundles are shipped as bundle/cli.js and bundle/mcp/server.js instead, and every reference was updated to match: both manifests (/bundle/mcp/ server.js), the CLI/service paths in both READMEs, the beautify skill, the /beautify and /bubble commands, and the two user-visible offline hints inside bundle/cli.js ('node dist/cli.js serve --detach' -> 'node bundle/cli.js serve --detach'; the only content difference from the upstream release bundles). Both READMEs also note the dist-vs- bundle difference between the source repo and the marketplace package. CHANGES.md ships with the package (the panel's changelog window reads it via /api/changelog). CDP injection remains an explicit opt-in experimental capability (disabled by default) with recovery guidance for disable, uninstall, and upgrades, per the earlier review feedback. python scripts/validate.py -> OK: 55 plugin(s) validated. The plugin's artifact builds through scripts/build_dist.py's build_zip (deterministic zip, sha256 1b18612912e2fea0...).
60c0552 to
c28478a
Compare
|
✅ Internal validation passed. A ZCode maintainer will review the change next; after acceptance, release checks run separately and this PR is closed automatically. |
Plugin type (required) / 插件类型(必填)
Select exactly one before requesting review. / 发起评审前必须且只能勾选一项。
Affected plugin name(s) / 涉及的插件名称:
zcode-beautifyWhat / 改动内容
New plugin zcode-beautify (v6.3.0): wallpaper + Material Design 3 (Monet) theming for the ZCode desktop client.
/beautifyand/bubblecommands, thebeautifyskill, and a stdio MCP server with 12 tools:set_background,import_scene_wallpaper,apply_options,refresh_theme,reset_appearance,beautify_status,bubble_studio_state,save_bubble_recipe,delete_bubble_recipe,enable_experimental,disable_experimental,repair_launchers.ui://zcode-beautify/bubble-studio.html,text/html;profile=mcp-app), an interactive in-chat gallery for editing chat bubble styles (presets + saved recipes, per-card scoped preview, sliders for tint / radius / width), applied to the real conversation viaapply_options(which returns_meta.ui.resourceUri). Declared in the manifest underui.surfaces(idbubble-studio, availabilitysession).enable_experimental, orzcode-beautify enable), the plugin starts no background service, writes nothing to any launch entry, and the agent-side tools answer with guidance instead of acting. Opting in records consent (timestamp + plugin version), adds--remote-debugging-port=9222to the launch entries, and starts the local service. The opt-in section documents the exposure plainly: the CDP port binds to127.0.0.1(loopback only) but is unauthenticated Chromium behavior — any process running as your user can attach while it is open — so it should not be enabled on machines with untrusted local users or software.disable_experimental/zcode-beautify disableis a full rollback — stops the service, clears the injected theme including the renderer's cached copy, and strips the flag from the launch entries again;zcode-beautify repair-launchers --removestrips just the flag; uninstalling = runnode <plugin>/bundle/cli.js disablefirst, then remove the plugin; upgrades — while disabled nothing is ever re-added, while enabled the self-heal re-adds the flag after ZCode's updater rebuilds shortcuts.marketplace.json(categoryutilities, icon added atassets/zcode-beautify/icon.png);name/version/description_i18n(en + zh-CN) match between the marketplace entry and.zcode-plugin/plugin.json.What user problem it solves: ZCode's UI appearance is fixed; this plugin personalizes the desktop client end-to-end (background + full theme + chat layout) without modifying ZCode's installation files, and lets the agent manage it through MCP tools and an interactive page.
Visible behavior and how it was tested
Tested on Windows with the ZCode desktop client; this code line has been in daily use on the maintainer's machine — image wallpaper + Monet apply; live panel tuning (sliders preview instantly and persist); Wallpaper Engine scene import (render → record → seamless loop → cache; re-imports instant); batch import; rotation playlists (sequence / random / daily schedule); Bubble Studio apply-to-conversation; sidebar list paging; custom FAB;
resetrestoring the stock look. The opt-in gate was exercised end-to-end: tools refuse with guidance before opt-in;enable→ service starts + launch entries carry the flag;disable→ full rollback verified against every launch-entry type (shortcuts,zcode://handler, context-menu verbs).npm testpasses (jsdom lifecycle tests per feature + normalize / payload-gating / wiring assertions);python3 scripts/validate.py(OK: 34 plugin(s) validated) andpython3 scripts/build_dist.py(deterministicplugins/zcode-beautify/6.3.0/plugin.zip) pass on this tree.Dependencies, network, permissions, side effects
nodefrom PATH (like the other Node-based plugins). prebuilt esbuild bundles ship in the package (bundle/), so installation needs no build step:@modelcontextprotocol/sdk(MIT),@material/material-color-utilities(Apache-2.0),jimp(MIT).serve) — HTTP on127.0.0.1:9223with a random per-start token — and adds--remote-debugging-port=9222to ZCode's launch entries (fully reversible, see above). Scene/video import (Windows-only) additionally launches Wallpaper Engine and ffmpeg; the panel file picker uses a PowerShell dialog on Windows.ZCODE_BEAUTIFY_DATA_DIR); never writes into its install directory; never modifies ZCode's installation files.Self-check / 自查清单
external_plugins/<name>/(community publisherType)versionbumped in BOTHplugin.jsonandmarketplace.json(artifacts are immutable) — 0.4.0 → 6.3.0README.md(EN) andREADME_CN.md(中文) both updated and equivalentdescription_i18nhas bothenandzh-CN, identical in the manifest and the marketplace entrypython3 scripts/validate.pyandpython3 scripts/build_dist.pypass locally