From 09acb5521c68c9d7daa0818e1640dda1c0ddbe0b Mon Sep 17 00:00:00 2001 From: hzhang Date: Sat, 16 May 2026 16:15:13 +0100 Subject: [PATCH] =?UTF-8?q?chore:=20slash-command=20full=20chain=20?= =?UTF-8?q?=E2=80=94=20bump=20Frontend/Plugin/Guild;=20TEST=5FPOINTS=20?= =?UTF-8?q?=C2=A710?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backend.Guild registry + Plugin catalog sync + Frontend / autocomplete. Verified: registry PUT/GET (401 unauth), 41 specs built+synced (incl. dynamic choices), GET round-trip, frontend bundle+fetch wired. Caveat: in-browser / panel interaction not automated; in-gateway auto sync needs plugin reinstall + gateway restart. Co-Authored-By: Claude Opus 4.7 (1M context) --- Fabric.Backend.Guild | 2 +- Fabric.Frontend | 2 +- Fabric.OpenclawPlugin | 2 +- docs/TEST_POINTS.md | 11 +++++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Fabric.Backend.Guild b/Fabric.Backend.Guild index f54ed6a..3e96de7 160000 --- a/Fabric.Backend.Guild +++ b/Fabric.Backend.Guild @@ -1 +1 @@ -Subproject commit f54ed6abb5e220352ade5797d8213561e2887db1 +Subproject commit 3e96de730add595292b3ab17f3e4ed5517624b3b diff --git a/Fabric.Frontend b/Fabric.Frontend index 8be68d4..46cad0e 160000 --- a/Fabric.Frontend +++ b/Fabric.Frontend @@ -1 +1 @@ -Subproject commit 8be68d4c875aa951caec05788f68cc9bd56c79a8 +Subproject commit 46cad0ec7cb60aa1d44d497f53f246ea39519d84 diff --git a/Fabric.OpenclawPlugin b/Fabric.OpenclawPlugin index c035620..fc6edaa 160000 --- a/Fabric.OpenclawPlugin +++ b/Fabric.OpenclawPlugin @@ -1 +1 @@ -Subproject commit c03562046d422d3732edb6c66450bf097b4282d4 +Subproject commit fc6edaabfdaf296e79645786f1c360c04b9978c4 diff --git a/docs/TEST_POINTS.md b/docs/TEST_POINTS.md index b3cf9c7..1ff28bb 100644 --- a/docs/TEST_POINTS.md +++ b/docs/TEST_POINTS.md @@ -179,6 +179,17 @@ Guild1 :7002 = `test-guild1`, Guild2 :7003 = `test-guild2`, Frontend :8088). | X5 | metadata/message separation | one message-id; metadata only at push; frontend/desktop metadata-agnostic; `author=guild` hidden unless debug | | X6 | submodule pointers | parent `Fabric` repo bumped after each submodule change; pushed to `origin/main` | +## 10. Slash commands (registry / sync / autocomplete) + +| # | Test point | Expected | +|---|---|---| +| SC1 | Guild registry API | `PUT /api/commands {commands}` idempotent full replace; `GET /api/commands` → `{commands,updatedAt}`; both authed (no token → 401). Verified | +| SC2 | plugin builds catalog | `buildFabricCommandSpecs(cfg)` via `openclaw/plugin-sdk/native-command-registry` (`listNativeCommandSpecsForConfig`+`findCommandByNativeName`); dynamic arg `choices` resolved to a static snapshot (`resolveCommandArgChoices`). Verified (41 specs, choices incl. dynamic) | +| SC3 | plugin syncs on start | `syncFabricCommands` runs after inbound on `gateway_start`; PUTs catalog to each connected guild (one per guild, idempotent). Verified via direct call (`synced 41 -> test-guild1`); in-gateway run needs plugin reinstall + gateway restart | +| SC4 | no `nativeCommands` capability | Fabric stays a TEXT-command surface; a `/` message is delivered normally → plugin → OpenClaw command system. Only `/no-reply`,`/force-proceed` stay server-intercepted | +| SC5 | frontend autocomplete | `/` opens a command panel (filter, ↑↓/Enter/Esc); pick inserts `/ `; arg stage shows args + clickable `choices`. Built & deployed; **browser interaction not automated** — catalog fetch + bundle wiring verified | +| SC6 | command execution | a registered `/` reuses the existing message→plugin→OpenClaw path (text-command + command session + auth); not re-verified end-to-end here (same path as P13/P14) | + --- ## Known coverage gaps / notes