mirror of
https://github.com/rookiestar28/ComfyUI-OpenClaw.git
synced 2026-08-14 00:48:07 +00:00
docs(readme): refresh current feature notes
This commit is contained in:
@@ -89,6 +89,18 @@ Deployment profiles and hardening references:
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Slack interactive callbacks, canonical node categories, and hardening governance aligned with the current runtime</strong></summary>
|
||||
|
||||
- Added Slack interactive callback handling for Block Kit actions, modal submissions, and workflow-style payloads, with signed ingress verification, replay/idempotency checks, bounded external errors, and policy-aware routing for run-affecting actions.
|
||||
- Aligned shipped node metadata on the canonical `openclaw` category while keeping legacy `Moltbot*` class aliases available for existing workflows.
|
||||
- Tightened node and frontend maintainability by moving batch-variant randomized seed imports to module scope and keeping tab DOM wiring on shared text-safe helper paths.
|
||||
- Added explicit verification ownership for the `safe_io` and security-boundary hotspot families so future coverage ratchets depend on targeted regressions instead of broad coverage alone.
|
||||
- Hardened exception-boundary governance around selected startup and connector paths so unexpected route/bootstrap or trust-parsing failures are surfaced instead of silently masked.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Packaging boundaries, node portability guidance, config ownership seams, and connector extraction diagnostics aligned with the current runtime</strong></summary>
|
||||
|
||||
- Made the supported packaging model explicit: the ComfyUI custom node pack remains the primary artifact, the embedded operator platform is the first-class runtime identity, and the connector stays an optional attached subsystem rather than a separate published package.
|
||||
@@ -132,18 +144,6 @@ Deployment profiles and hardening references:
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>PNG Info sidebar workflow added with ComfyUI metadata extraction, better large-image handling, and lower-noise operator alerts</strong></summary>
|
||||
|
||||
- Added a new `PNG Info` sidebar tab with drag-and-drop, file picker, scoped paste, preview rendering, prompt copy actions, structured summary cards, and raw metadata inspection for saved generation images.
|
||||
- Added backend metadata parsing for A1111 infotext and ComfyUI `prompt` / `workflow` metadata, including prompt/sampler/model/size extraction from standard ComfyUI graphs and a larger dedicated payload ceiling for original metadata-bearing images.
|
||||
- Improved operator-facing UX by making large-image failures explain the metadata-preservation constraint more clearly, letting the PNG Info input area scroll with the rest of the content, and moving prompt copy surfaces to the top of the information area.
|
||||
- Reduced noise in ComfyUI prompt extraction so generic custom `CLIPTextEncode*` nodes now prefer explicit prompt-bearing keys instead of surfacing parser/config strings as if they were prompt text.
|
||||
- Tightened queue-monitor alert sensitivity so sidebar startup races no longer generate persistent disconnect noise unless the backend stays unavailable long enough to look like a real incident.
|
||||
|
||||
</details>
|
||||
|
||||
See full update history: [docs/release/recent_updates.md](docs/release/recent_updates.md)
|
||||
|
||||
</details>
|
||||
@@ -340,6 +340,8 @@ Nodes are exported as `Moltbot*` class names for compatibility, but appear as `o
|
||||
- `openclaw: Image to Prompt`
|
||||
- `openclaw: Batch Variants`
|
||||
|
||||
The current node category is `openclaw`; serialized workflows that still reference the legacy `Moltbot*` class names continue to load through retained compatibility aliases.
|
||||
|
||||
See `web/docs/` for node usage notes.
|
||||
|
||||
### Node Portability and Workflow Fallback
|
||||
@@ -366,6 +368,8 @@ Current sidebar composition keeps `web/openclaw_ui.js` as the shell root and rou
|
||||
- tab registration/remount behavior: `web/openclaw_tabs.js`
|
||||
- shared error + compatibility helpers: `web/openclaw_utils.js`
|
||||
|
||||
New shell/tab wiring should use the shared text-safe DOM helpers in `web/openclaw_utils.js` instead of duplicating ad hoc element construction in individual tabs.
|
||||
|
||||
Canonical DOM/class ownership is now centered on `openclaw-*`; legacy `moltbot-*` class compatibility is still supported through shared runtime aliasing instead of duplicated markup in each tab template.
|
||||
|
||||
The sidebar now also resolves and stamps its active host surface (`standalone_frontend` vs desktop-embedded host) at mount time so frontend-host drift is explicit and testable instead of inferred from runtime accidents.
|
||||
@@ -666,7 +670,7 @@ The connector currently remains an **optional attached subsystem inside this rep
|
||||
- **Secure**: Outbound-only for Telegram/Discord. LINE/WhatsApp/WeChat/KakaoTalk/Slack require inbound HTTPS (webhook), while Slack can also use Socket Mode and Feishu can run in either webhook or long-connection mode with a dedicated callback ingress path.
|
||||
- **WeChat encrypted mode**: Official Account encrypted webhook mode is supported when AES settings are configured.
|
||||
- **KakaoTalk response safety**: QuickReply limits and safe fallback handling are enforced for reliable payload behavior.
|
||||
- **Slack multi-workspace mode**: Workspace installs can be handled through connector-managed OAuth install/callback routes with per-workspace token binding and fail-closed health diagnostics.
|
||||
- **Slack multi-workspace and interactive mode**: Workspace installs can be handled through connector-managed OAuth install/callback routes with per-workspace token binding, fail-closed health diagnostics, and signed interactive callback handling for action payloads.
|
||||
- **Feishu/Lark multi-account mode**: Connector-managed account/workspace bindings support tenant-aware installation resolution, interactive approval cards, and signed callback handling without exposing raw app secrets or widening command trust implicitly.
|
||||
- **Bounded connector numeric envs**: Delivery/media/time-budget settings, bind ports, rate limits, and command-length knobs now clamp or fall back to documented defaults with warnings instead of crashing connector startup on malformed values.
|
||||
- **Packaging diagnostics**: Admin operators/maintainers can inspect `/openclaw/connector/extraction-contract` for the current in-repo recommendation plus the minimum seam families required before any future split.
|
||||
|
||||
+2
-1
@@ -159,7 +159,7 @@ If this acknowledgement is missing in public profile, deployment profile checks
|
||||
|
||||
Connector ingress posture is fail-closed in strict profiles:
|
||||
|
||||
- if connector platform ingress is active (Telegram/Discord/LINE/WhatsApp/WeChat/Kakao/Slack)
|
||||
- if connector platform ingress is active (Telegram/Discord/LINE/WhatsApp/WeChat/Kakao/Slack/Feishu)
|
||||
- and matching allowlist variables are missing
|
||||
- startup/deployment checks fail closed (`DP-PUBLIC-009` for public profile)
|
||||
|
||||
@@ -236,6 +236,7 @@ OpenClaw validates custom LLM `base_url` settings to prevent Server-Side Request
|
||||
|
||||
* **Default**: known providers and localhost-safe paths are allowed.
|
||||
* **Pinned connect contract**: on supported CPython versions (current baseline: 3.10+), the consolidated `safe_io` outbound executor dials resolved IPs directly for HTTP/HTTPS and keeps TLS `server_hostname` on the original host; the no-skip `tests.test_s70_ssrf_pinning_regression` lane is intended to fail loudly if stdlib connect behavior drifts.
|
||||
* **Redirect handling**: redirect targets are revalidated against host allowlists, private/reserved-IP blocking, and pinned-connect rules before any follow-up connection is opened.
|
||||
* **Custom base URL**:
|
||||
- requires explicit opt-in:
|
||||
|
||||
|
||||
+10
-3
@@ -54,6 +54,7 @@ Slack multi-workspace notes:
|
||||
- `GET /openclaw/connector/installations` diagnostics may include per-install health metadata plus aggregate `health_counts`.
|
||||
- Slack lifecycle events such as `tokens_revoked`, `app_uninstalled`, and rate-limit degradation update installation health so outbound replies fail closed or degrade predictably for the affected workspace.
|
||||
- In multi-workspace mode, outbound replies and delayed result deliveries resolve the bot token by workspace binding and keep Slack thread context when replying back to the originating conversation.
|
||||
- Slack interactive callbacks use the configured interactions path, signature verification, replay/idempotency checks, and connector policy mapping before accepting action payloads.
|
||||
|
||||
Feishu / Lark notes:
|
||||
|
||||
@@ -447,7 +448,7 @@ Slack uses the Events API webhook mode in OpenClaw. You must expose the endpoint
|
||||
- `channels:history` (public channel messages)
|
||||
- `groups:history` (private channel messages)
|
||||
- For legacy single-workspace mode, click **Install to Workspace** and copy the **Bot User OAuth Token** (`xoxb-...`).
|
||||
- For F58 multi-workspace mode, configure a redirect URL and let OpenClaw handle installs through its OAuth routes.
|
||||
- For multi-workspace mode, configure a redirect URL and let OpenClaw handle installs through its OAuth routes.
|
||||
|
||||
3. **Configure connector environment variables**
|
||||
|
||||
@@ -458,6 +459,7 @@ Slack uses the Events API webhook mode in OpenClaw. You must expose the endpoint
|
||||
OPENCLAW_CONNECTOR_PUBLIC_BASE_URL=https://your-public-host
|
||||
OPENCLAW_CONNECTOR_SLACK_OAUTH_INSTALL_PATH=/slack/install
|
||||
OPENCLAW_CONNECTOR_SLACK_OAUTH_CALLBACK_PATH=/slack/oauth/callback
|
||||
OPENCLAW_CONNECTOR_SLACK_INTERACTIONS_PATH=/slack/interactions
|
||||
OPENCLAW_CONNECTOR_SLACK_ALLOWED_USERS=U12345,U67890
|
||||
OPENCLAW_CONNECTOR_SLACK_ALLOWED_CHANNELS=C12345
|
||||
OPENCLAW_CONNECTOR_SLACK_BIND=127.0.0.1
|
||||
@@ -469,9 +471,10 @@ Slack uses the Events API webhook mode in OpenClaw. You must expose the endpoint
|
||||
```
|
||||
|
||||
Notes:
|
||||
- Legacy single-workspace fallback can still set `OPENCLAW_CONNECTOR_SLACK_BOT_TOKEN=xoxb-...`; F58 multi-workspace mode no longer requires that token at startup if OAuth install flow is configured.
|
||||
- Legacy single-workspace fallback can still set `OPENCLAW_CONNECTOR_SLACK_BOT_TOKEN=xoxb-...`; multi-workspace mode no longer requires that token at startup if OAuth install flow is configured.
|
||||
- `OPENCLAW_CONNECTOR_ADMIN_TOKEN` must match server `OPENCLAW_ADMIN_TOKEN` if server-side admin token is enabled.
|
||||
- Slack ingress is fail-closed: invalid/missing signature, stale timestamp, and replayed events are rejected.
|
||||
- Slack interactive callbacks use the same signing-secret verification and route actions through the connector policy layer before executing run-affecting behavior.
|
||||
- OAuth callbacks also fail closed on invalid or replayed `state` values.
|
||||
- External OAuth/install failures intentionally use bounded generic text; inspect connector logs and installation diagnostics for redacted detail instead of expecting raw exception text in the callback response.
|
||||
|
||||
@@ -480,10 +483,11 @@ Slack uses the Events API webhook mode in OpenClaw. You must expose the endpoint
|
||||
- Expose local endpoint to public HTTPS (Cloudflare Tunnel/ngrok/reverse proxy):
|
||||
- local upstream: `http://127.0.0.1:8095`
|
||||
- public URL: `https://<public-host>/slack/events`
|
||||
- interactions URL: `https://<public-host>/slack/interactions`
|
||||
- install URL: `https://<public-host>/slack/install`
|
||||
- callback URL: `https://<public-host>/slack/oauth/callback`
|
||||
|
||||
5. **Enable Event Subscriptions**
|
||||
5. **Enable Event Subscriptions and Interactivity**
|
||||
- Go to **Event Subscriptions** and enable events.
|
||||
- Set **Request URL** to `https://<public-host>/slack/events`.
|
||||
- Slack sends `url_verification`; connector responds automatically.
|
||||
@@ -492,12 +496,15 @@ Slack uses the Events API webhook mode in OpenClaw. You must expose the endpoint
|
||||
- `message.channels`
|
||||
- `message.groups`
|
||||
- `message.im`
|
||||
- Go to **Interactivity & Shortcuts** and enable interactivity.
|
||||
- Set **Request URL** to `https://<public-host>/slack/interactions`.
|
||||
|
||||
6. **Invite and validate**
|
||||
- Open `https://<public-host>/slack/install` and complete the workspace install.
|
||||
- Invite the app to target channels: `/invite @YourBot`.
|
||||
- In channel: `@YourBot /status` (when `OPENCLAW_CONNECTOR_SLACK_REQUIRE_MENTION=true`).
|
||||
- In DM: `/help`.
|
||||
- For approval or action-capable replies, press a rendered Slack button and confirm the connector logs show a signed interaction accepted or a bounded policy rejection.
|
||||
- Verify connector logs show signed ingress accepted and replies delivered.
|
||||
- Verify `GET /openclaw/connector/installations` shows the Slack workspace binding and health state `ok`.
|
||||
- If you test uninstall/token-revoke scenarios, verify the installation health flips to `revoked` or `invalid_token` and that subsequent replies for that workspace fail closed until reinstalled.
|
||||
|
||||
@@ -32,7 +32,9 @@ Removal requires all of these conditions:
|
||||
| `header-x-moltbot-aliases` | Header | `X-Moltbot-*` request headers | `X-OpenClaw-*` request headers | `deprecated-observed` | `legacy_api_hits` and warning logs |
|
||||
| `environment-moltbot-prefix` | Environment | `MOLTBOT_*` environment variables | `OPENCLAW_*` environment variables | `retained-compatibility` | configuration diagnostics and warning logs |
|
||||
| `ui-class-moltbot-prefix` | UI class | `moltbot-*` CSS classes and local UI keys | `openclaw-*` CSS classes and local UI keys | `retained-compatibility` | frontend compatibility helper tests and operator reports |
|
||||
| `workflow-node-moltbot-classes` | Workflow node | `Moltbot*` node class aliases and `moltbot` node category | `OpenClaw*` node classes and `openclaw` node category | `retained-compatibility` | workflow portability diagnostics and node-registration regression tests |
|
||||
| `workflow-node-moltbot-classes` | Workflow node | `Moltbot*` node class aliases | `OpenClaw*` node classes and `openclaw` node category | `retained-compatibility` | workflow portability diagnostics and node-registration regression tests |
|
||||
|
||||
The historical `moltbot` node category is no longer the current display category. Current shipped nodes use `openclaw`; legacy workflow compatibility is preserved through the `Moltbot*` class aliases rather than through legacy category metadata.
|
||||
|
||||
## Operator Visibility
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ Scored 1-5 (higher is better), weighted by current risk profile:
|
||||
1. OpenClaw frontend is host-coupled to ComfyUI extension lifecycle and remount behavior; framework migration introduces significant integration and lifecycle risk with limited near-term operator value.
|
||||
2. Current architecture already has critical stability controls (`ErrorBoundary`, tab remount safety, capability-gated registration, compatibility aliases, Vitest + Playwright lanes).
|
||||
Recent decomposition work further reduced shell/admin/runtime hotspot size without introducing a framework dependency.
|
||||
3. Most remaining roadmap priorities are functionality/security features (`F53/F54/F58/F59`), not frontend rendering abstraction gaps; migration now would consume high-risk bandwidth with weak ROI.
|
||||
3. Most remaining product priorities are functionality and security features, not frontend rendering abstraction gaps; migration now would consume high-risk bandwidth with weak ROI.
|
||||
|
||||
## Decision
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
| Rate limiting | Enabled | 10 req/min/user, 30 req/min/channel |
|
||||
| Debug mode | Disabled | No sensitive logging |
|
||||
| Replay protection | Enabled | LINE webhooks reject replays >5min old |
|
||||
| Feishu interactive callbacks | Signed + deduped | Callback actions reject stale/replayed envelopes and degrade untrusted run actions to approval flow |
|
||||
| Slack / Feishu interactive callbacks | Signed + deduped | Callback actions reject stale/replayed envelopes and degrade untrusted run actions to approval flow |
|
||||
|
||||
## 📞 Support
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ What to check:
|
||||
Notes:
|
||||
|
||||
- Compatibility class names such as `Moltbot*` still exist for older workflows, but the canonical portability contract is anchored on `openclaw:*` node identities.
|
||||
- Current shipped nodes use the `openclaw` category in ComfyUI; seeing older `moltbot` category text usually means the installed pack is stale or ComfyUI has not been restarted after update.
|
||||
- Current diagnostics may include deterministic replacement hints when an unavailable OpenClaw node can degrade to a more portable workflow pattern.
|
||||
- If no portability guidance is present and the pack itself is loaded correctly, treat that as a real contract gap rather than assuming the workflow can be repaired by arbitrary JSON edits.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user