From 8b03aaf9bad2513e0d86b98a65d98b48b5c7ec63 Mon Sep 17 00:00:00 2001
From: jpalmae <39507014+jpalmae@users.noreply.github.com>
Date: Wed, 5 Aug 2026 10:01:33 -0400
Subject: [PATCH] feat(desktop): add zcode-acp preset to the harness catalog
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Following up on #3131 (closed as superseded by the harness catalog shipped
in v0.5.0 / #2773), this adds `zcode-acp` as a tier-2 preset so ZCode is
one-click discoverable in the Desktop runtime gallery.
`zcode-acp` is a standalone ACP adapter (mirroring amp-acp / hermes-acp)
that drives the ZCode CLI through its stdio app-server. It speaks ACP v1
directly, so no other Buzz-side change is needed:
https://github.com/jpalmae/zcode-acp
- New PresetHarness entry: command=zcode-acp, args=[], underlying_cli=zcode
(so Buzz reports AdapterMissing when the ZCode CLI is present but the
adapter is not — same shape as the amp preset).
- Mapped logo in PRESET_LOGOS and an original CC0 placeholder SVG so the
presetLogos coverage guard passes. Happy to swap in an official Z.ai
mark under redistribution terms if/when available.
- CREDITS.md row recording the placeholder provenance.
Signed-off-by: jpalmae <39507014+jpalmae@users.noreply.github.com>
---
desktop/public/harness-logos/CREDITS.md | 1 +
desktop/public/harness-logos/zcode-acp.svg | 9 +++++++++
.../src/managed_agents/discovery/presets.rs | 13 +++++++++++++
desktop/src/features/onboarding/ui/RuntimeIcon.tsx | 1 +
4 files changed, 24 insertions(+)
create mode 100644 desktop/public/harness-logos/zcode-acp.svg
diff --git a/desktop/public/harness-logos/CREDITS.md b/desktop/public/harness-logos/CREDITS.md
index 716c43e1ae..34f2175497 100644
--- a/desktop/public/harness-logos/CREDITS.md
+++ b/desktop/public/harness-logos/CREDITS.md
@@ -15,6 +15,7 @@ license permits redistribution.
| `omp.svg` | [can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) | `667111575ebba136dadfd6989379e7f67e0d40d9` | MIT © 2025 Mario Zechner; © 2025–2026 Can Bölük | `assets/icon.svg` | None |
| `kimi.png` | [MoonshotAI/kimi-cli](https://github.com/MoonshotAI/kimi-cli) | `4a550effdfcb29a25a5d325bf935296cc50cd417` | Apache-2.0; NOTICE: Kimi Code CLI © 2025 Moonshot AI | `web/public/logo.png` | None |
| `grok.svg` | [SpaceXAI brand guidelines](https://x.ai/legal/brand-guidelines) | Retrieved 2026-07-25 | xAI Brand Guidelines: marks may be used to accurately refer to xAI or its services; logos must be used exactly as provided | `SpaceXAI_Grok_Assets.zip` → `Grok_Logomark_Dark.svg` | None |
+| `zcode-acp.svg` | Original placeholder (not derived from a third-party mark) | n/a | CC0-1.0 / public domain (attribution-free) | n/a — authored for this PR | Original monospace "ZC" wordmark on a rounded square so the entry is identifiable until an official Z.ai mark can be bundled under redistribution terms |
## Inline SVG marks (`RUNTIME_MARKS`)
diff --git a/desktop/public/harness-logos/zcode-acp.svg b/desktop/public/harness-logos/zcode-acp.svg
new file mode 100644
index 0000000000..ca85372595
--- /dev/null
+++ b/desktop/public/harness-logos/zcode-acp.svg
@@ -0,0 +1,9 @@
+
diff --git a/desktop/src-tauri/src/managed_agents/discovery/presets.rs b/desktop/src-tauri/src/managed_agents/discovery/presets.rs
index b2d8a14ef0..a01191dbde 100644
--- a/desktop/src-tauri/src/managed_agents/discovery/presets.rs
+++ b/desktop/src-tauri/src/managed_agents/discovery/presets.rs
@@ -174,6 +174,19 @@ pub(super) const PRESET_HARNESSES: &[PresetHarness] = &[
Gateway's own environment separately.",
underlying_cli: None,
},
+ PresetHarness {
+ id: "zcode-acp",
+ label: "ZCode",
+ command: "zcode-acp",
+ args: &[],
+ install_instructions_url: "https://github.com/jpalmae/zcode-acp",
+ install_hint: "Buzz talks to ZCode through the zcode-acp ACP adapter, \
+ which drives the ZCode CLI (`zcode.cjs`) over its stdio app-server. \
+ Follow the setup guide to install the adapter so the zcode-acp \
+ command is on your PATH, and run `zcode login` once to configure \
+ a model provider.",
+ underlying_cli: Some("zcode"),
+ },
];
/// Return preset definitions for the spawn/readiness registry.
diff --git a/desktop/src/features/onboarding/ui/RuntimeIcon.tsx b/desktop/src/features/onboarding/ui/RuntimeIcon.tsx
index 5b247c31f7..6f25ad401a 100644
--- a/desktop/src/features/onboarding/ui/RuntimeIcon.tsx
+++ b/desktop/src/features/onboarding/ui/RuntimeIcon.tsx
@@ -25,6 +25,7 @@ export const PRESET_LOGOS: Record = {
amp: "/harness-logos/amp.png",
hermes: "/harness-logos/hermes.png",
openclaw: "/harness-logos/openclaw.svg",
+ "zcode-acp": "/harness-logos/zcode-acp.svg",
};
function isBuzzRuntime(runtime: AcpRuntimeCatalogEntry): boolean {