From 02b0c4d2d6d7ff5639083bc8a21236279cacce45 Mon Sep 17 00:00:00 2001 From: rookiestar28 Date: Fri, 10 Jul 2026 23:57:10 +0800 Subject: [PATCH] chore(compat): refresh host reference anchors --- README.md | 4 ++-- docs/asset_api_adoption_decision.md | 8 +++++--- docs/frontend_ux_walkthrough.md | 2 +- docs/release/compatibility_matrix.md | 19 ++++++++++--------- docs/release/recent_updates.md | 10 ++++++++++ tests/e2e/specs/desktop_host_parity.spec.js | 6 +++--- ...est_r90_compatibility_matrix_governance.py | 4 ++-- web/openclaw_host_surface.js | 4 ++-- web/tests/unit/openclaw_host_surface.test.js | 2 +- 9 files changed, 36 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index aaeb0c5..f168b78 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ Deployment profiles and hardening references: ComfyUI host compatibility, media outputs, model folders, and prompt attribution refreshed -- Refreshed the published compatibility baseline for ComfyUI `51bf508a` (`v0.27.0-25-g51bf508a`, pyproject `0.27.0`), standalone frontend `1.47.6`, and Desktop `0.9.4` with core `0.22.3` plus embedded frontend `1.43.18`. +- Refreshed the published compatibility baseline for ComfyUI `1377a2f7` (`v0.27.0-47-g1377a2f7`, pyproject `0.27.0`), standalone frontend `1.48.1` (`ceb5ae1eba`, `v1.48.1-1-gceb5ae1eba`), and Desktop `0.9.4` with core `0.22.3` plus embedded frontend `1.43.18`. - Reconciled active prompt state after backend or SSE reconnects so completed prompts are not left in the active queue lane after a host recovery. - Updated sidebar registration to prefer the current ComfyUI sidebar store API and keep the deprecated frontend facade as a compatibility fallback for older hosts. - Aligned Model Manager and preflight diagnostics with current ComfyUI model folder names, including newer managed keys such as `gligen`, `latent_upscale_models`, `hypernetworks`, `photomaker`, `model_patches`, `geometry_estimation`, and `detection`, while retaining legacy aliases such as `clip` and `unet`. @@ -420,7 +420,7 @@ New shell/tab wiring should use the shared text-safe DOM helpers in `web/opencla 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) and reference metadata at mount time, so Desktop `0.9.4` embedded-frontend lag against standalone frontend `1.47.6` is explicit and testable instead of inferred from runtime accidents. +The sidebar now also resolves and stamps its active host surface (`standalone_frontend` vs desktop-embedded host) and reference metadata at mount time, so Desktop `0.9.4` embedded-frontend lag against standalone frontend `1.48.1` is explicit and testable instead of inferred from runtime accidents. Sidebar registration prefers ComfyUI's current sidebar store API and falls back to the deprecated frontend facade when running on older host bundles. Hosts without either sidebar API use the legacy menu fallback instead of failing extension setup. diff --git a/docs/asset_api_adoption_decision.md b/docs/asset_api_adoption_decision.md index 71344e4..1ea4164 100644 --- a/docs/asset_api_adoption_decision.md +++ b/docs/asset_api_adoption_decision.md @@ -1,10 +1,11 @@ # ComfyUI Asset API Adoption Decision (2026-04-16) -## 2026-07-08 reference anchor update +## 2026-07-10 reference anchor update -- Current reference anchor is ComfyUI `51bf508a` (`v0.27.0-25-g51bf508a`, pyproject `0.27.0`). +- Current reference anchor is ComfyUI `1377a2f7` (`v0.27.0-47-g1377a2f7`, pyproject `0.27.0`). - SaveImage output sockets, 3D preview refs, typed asset dimensions, grouped asset downloads, and optional `hash` / `asset_hash` aliases do not change the no-go decision. - ComfyUI asset hashing is host-side opt-in through `--enable-asset-hashing`, so normal filename-backed output refs must not require hash metadata. +- Current host asset metadata may expose `loader_path`; model uploads require `model_type:` tags, and `/features.supports_model_type_tags` advertises that contract. OpenClaw does not upload through or directly consume `/api/assets`, so these facts do not change the no-go decision. - OpenClaw continues to use `/history` + `/view`; asset-service-only refs stay explicit `asset_api_required` states. ## 2026-06-12 reconfirmation @@ -32,12 +33,13 @@ - optional asset-hash-backed refs that still resolve through `/view?filename=blake3:...` when host metadata is present - media-aware output groups (`images`, `video`, `audio`, `3d`, and bounded `text`) - HDR `.exr` / `.hdr` image refs as explicit `/view` source-preview fallback links, not normal thumbnails -- Current ComfyUI `51bf508a` / `v0.27.0-25-g51bf508a` / pyproject `0.27.0` reference facts: +- Current ComfyUI `1377a2f7` / `v0.27.0-47-g1377a2f7` / pyproject `0.27.0` reference facts: - `/api/assets*` routes exist, but operational use is feature-gated behind `--enable-assets` - content hashing is opt-in through `--enable-asset-hashing`, so normal filename-backed refs may omit `asset_hash` / `hash` - `/features` exposes the `assets` capability flag so hosts can report whether the asset system is enabled - frontend preview still resolves `blake3:...` asset hashes through `/view`, so hash-backed outputs do not require a direct `/api/assets` fetch - asset responses may expose optional `hash` alongside `asset_hash`; OpenClaw treats both as hash-backed preview aliases when present + - asset metadata may expose `loader_path`; model uploads require `model_type:` tags, advertised by `/features.supports_model_type_tags` - Current operator/runtime surfaces in scope: - sidebar `Jobs` - callback delivery payloads diff --git a/docs/frontend_ux_walkthrough.md b/docs/frontend_ux_walkthrough.md index f49a37a..6256f91 100644 --- a/docs/frontend_ux_walkthrough.md +++ b/docs/frontend_ux_walkthrough.md @@ -47,7 +47,7 @@ If `assist_streaming` is unavailable or the stream transport degrades, Planner/R - OpenClaw treats standalone `ComfyUI_frontend` and `desktop` as distinct frontend host surfaces. - The sidebar stamps its resolved host surface and refreshed host-reference metadata at mount time so desktop bundle drift is explicit in diagnostics and regression tests. -- The standalone Remote Admin Console now stamps the same host-surface metadata on its document root, including desktop `0.9.4`, bundled core `0.22.3`, embedded frontend `1.43.18`, and lagging parity relative to standalone frontend `1.47.6`. +- The standalone Remote Admin Console now stamps the same host-surface metadata on its document root, including desktop `0.9.4`, bundled core `0.22.3`, embedded frontend `1.43.18`, and lagging parity relative to standalone frontend `1.48.1`. - Graph/widget compatibility code should route through shared host helpers to keep nested-subgraph and promoted-widget behavior aligned with current upstream host semantics, including preserving source metadata and string-shaped node IDs. ## Standalone Remote Admin Console diff --git a/docs/release/compatibility_matrix.md b/docs/release/compatibility_matrix.md index 5593b2e..27ccd1d 100644 --- a/docs/release/compatibility_matrix.md +++ b/docs/release/compatibility_matrix.md @@ -3,17 +3,17 @@ ```openclaw-compat-matrix-meta { "anchors": { - "comfyui": "51bf508a (v0.27.0-25-g51bf508a / pyproject 0.27.0)", - "comfyui_frontend": "1.47.6 (747f76db76 / v1.47.6-53-g747f76db76)", + "comfyui": "1377a2f7 (v0.27.0-47-g1377a2f7 / pyproject 0.27.0)", + "comfyui_frontend": "1.48.1 (ceb5ae1eba / v1.48.1-1-gceb5ae1eba)", "desktop": "0.9.4 (core 0.22.3 / frontend 1.43.18)" }, "evidence": { - "evidence_id": "compat-matrix-refresh-20260708", - "updated_at": "2026-07-07T16:00:00+00:00", + "evidence_id": "compat-matrix-refresh-20260710", + "updated_at": "2026-07-10T15:50:42+00:00", "updated_by": "host-reference-refresh" }, - "last_validated_date": "2026-07-07", - "matrix_version": "v0.2.7", + "last_validated_date": "2026-07-10", + "matrix_version": "v0.2.8", "policy": { "max_age_days": 45, "warn_age_days": 30 @@ -28,8 +28,8 @@ This document tracks the current reference anchors and validated environments fo | Component | Validated Range | Best Effort / Experimental | Notes | | :--- | :--- | :--- | :--- | -| **ComfyUI** | `51bf508a` reference anchor (`v0.27.0-25-g51bf508a`; `pyproject.toml` version `0.27.0`) | Older tagged snapshots | Current local upstream reference repo snapshot used for compatibility review | -| **ComfyUI Frontend** | `1.47.6` reference anchor (`747f76db76`; `v1.47.6-53-g747f76db76`) | Minor drift around the anchor | Sidebar extension contract remains compatible; prefer the current sidebar store API with deprecated facade fallback | +| **ComfyUI** | `1377a2f7` reference anchor (`v0.27.0-47-g1377a2f7`; `pyproject.toml` version `0.27.0`) | Older tagged snapshots | Current local upstream reference repo snapshot used for compatibility review | +| **ComfyUI Frontend** | `1.48.1` reference anchor (`ceb5ae1eba`; `v1.48.1-1-gceb5ae1eba`) | Minor drift around the anchor | Sidebar extension contract remains compatible; prefer the current sidebar store API with deprecated facade fallback | | **ComfyUI Desktop** | `0.9.4 (core 0.22.3 / frontend 1.43.18)` reference anchor | Desktop bundle may lag standalone frontend | Treat desktop parity as a distinct host surface, not an alias of standalone frontend HEAD | | **Python** | 3.10, 3.11, 3.12 | 3.9 | 3.13 not yet validated | | **Torch** | 2.1.2+ | 1.13+ | CUDA 11.8/12.1 verified | @@ -38,7 +38,7 @@ This document tracks the current reference anchors and validated environments fo - **ComfyUI host runtime**: current bootstrap assumptions remain aligned with upstream `PromptServer` startup and route registration flow, including `/api`-prefixed canonical API routing. - **Frontend host surface**: current sidebar integration contract remains compatible with the standalone frontend reference anchor, while inactive subgraph diagnostics and promoted-widget behavior remain regression-sensitive seams. -- **Desktop host surface**: desktop currently embeds frontend `1.43.18`, which still lags the standalone frontend `1.47.6` reference. Validate desktop-specific behavior against the desktop anchor instead of assuming standalone-frontend parity. +- **Desktop host surface**: desktop currently embeds frontend `1.43.18`, which still lags the standalone frontend `1.48.1` reference. Validate desktop-specific behavior against the desktop anchor instead of assuming standalone-frontend parity. ## Residual Host-Contract Decisions @@ -47,6 +47,7 @@ This document tracks the current reference anchors and validated environments fo - **HDR image output refs**: `.exr` and `.hdr` image refs stay on the bounded `/view` source-preview contract but render as explicit fallback/link surfaces unless a client implements a safe HDR-specific viewer. - **Promoted widget source scope and structured widgets**: OpenClaw graph helpers preserve host-shaped promoted-widget source metadata and keep non-numeric node IDs stable. Backend preflight remains a conservative model-key whitelist; structured `COLORS` / `BOUNDING_BOXES` inputs and frontend source metadata are not treated as model references, and OpenClaw does not claim full host frontend active-scope parity without a richer graph-instance contract. - **Asset dimensions and grouped assets**: typed width/height metadata and grouped multi-download behavior are host-frontend display/download concerns. They do not change OpenClaw fetch routing, and asset-service-only identifiers remain explicit `asset_api_required` states rather than implicit `/api/assets` fetches. +- **Asset loader paths and model tags**: current host asset metadata may expose `loader_path`; model uploads require `model_type:` tags, advertised by `/features.supports_model_type_tags`. OpenClaw does not upload through or directly consume `/api/assets`, so these schema facts do not change the existing `/history` + `/view` contract. - **Sidebar registration**: prefer the current `sidebarTab.registerSidebarTab` host API and retain the deprecated `extensionManager.registerSidebarTab` fallback for older or desktop-embedded frontend hosts. - **Node runtime policy**: the standalone ComfyUI frontend development workspace currently declares `node >=25 <26` and `pnpm >=11.3`, but OpenClaw keeps its package engine at `>=18.0.0` because this custom-node package runs its own Playwright/Vitest harness and does not build the host frontend workspace. OpenClaw acceptance remains governed by `tests/TEST_SOP.md` and `tests/E2E_TESTING_SOP.md`, which require Node.js 18+ and CI-parity validation on the project test harness. diff --git a/docs/release/recent_updates.md b/docs/release/recent_updates.md index 44100f9..df454e3 100644 --- a/docs/release/recent_updates.md +++ b/docs/release/recent_updates.md @@ -7,6 +7,16 @@ Newest entries appear first.
+Host compatibility reference anchors refreshed + +- Refreshed the active compatibility baseline to ComfyUI `1377a2f7` (`v0.27.0-47-g1377a2f7`, pyproject `0.27.0`) and standalone frontend `1.48.1` (`ceb5ae1eba`, `v1.48.1-1-gceb5ae1eba`). +- Kept Desktop pinned separately at `0.9.4` with core `0.22.3` and embedded frontend `1.43.18`, explicitly lagging the standalone frontend reference. +- Documented current host asset `loader_path` and namespaced model-tag schema without adopting direct `/api/assets` runtime access or changing OpenClaw's Node.js 18+ test policy. + +
+ +
+ Host compatibility, output previews, media safety, and graph guards refreshed - Published host compatibility notes now pin the current ComfyUI, standalone frontend, and Desktop reference anchors while keeping Desktop embedded-frontend lag explicit. diff --git a/tests/e2e/specs/desktop_host_parity.spec.js b/tests/e2e/specs/desktop_host_parity.spec.js index 383a9c6..b6dbbd0 100644 --- a/tests/e2e/specs/desktop_host_parity.spec.js +++ b/tests/e2e/specs/desktop_host_parity.spec.js @@ -26,7 +26,7 @@ test.describe('Desktop host parity lane', () => { const host = page.locator('#sidebar-tab-comfyui-openclaw'); await expect(host).toHaveAttribute('data-openclaw-host-surface', 'standalone_frontend'); await expect(host).toHaveAttribute('data-openclaw-desktop-host', 'false'); - await expect(host).toHaveAttribute('data-openclaw-reference-frontend', '1.47.6'); + await expect(host).toHaveAttribute('data-openclaw-reference-frontend', '1.48.1'); }); test('boots the sidebar under desktop host signals and keeps approvals interactive', async ({ page }) => { @@ -38,7 +38,7 @@ test.describe('Desktop host parity lane', () => { const host = page.locator('#sidebar-tab-comfyui-openclaw'); await expect(host).toHaveAttribute('data-openclaw-host-surface', 'desktop'); await expect(host).toHaveAttribute('data-openclaw-desktop-host', 'true'); - await expect(host).toHaveAttribute('data-openclaw-reference-frontend', '1.47.6'); + await expect(host).toHaveAttribute('data-openclaw-reference-frontend', '1.48.1'); await expect(host).toHaveAttribute('data-openclaw-desktop-version', '0.9.4'); await expect(host).toHaveAttribute('data-openclaw-desktop-core-version', '0.22.3'); await expect(host).toHaveAttribute('data-openclaw-desktop-embedded-frontend', '1.43.18'); @@ -58,7 +58,7 @@ test.describe('Desktop host parity lane', () => { await expect(page.locator('body')).toHaveAttribute('data-openclaw-host-surface', 'desktop'); await expect(page.locator('body')).toHaveAttribute('data-openclaw-desktop-host', 'true'); - await expect(page.locator('body')).toHaveAttribute('data-openclaw-reference-frontend', '1.47.6'); + await expect(page.locator('body')).toHaveAttribute('data-openclaw-reference-frontend', '1.48.1'); await expect(page.locator('body')).toHaveAttribute('data-openclaw-desktop-version', '0.9.4'); await expect(page.locator('body')).toHaveAttribute('data-openclaw-desktop-core-version', '0.22.3'); await expect(page.locator('body')).toHaveAttribute('data-openclaw-desktop-embedded-frontend', '1.43.18'); diff --git a/tests/test_r90_compatibility_matrix_governance.py b/tests/test_r90_compatibility_matrix_governance.py index 82689a5..6f27123 100644 --- a/tests/test_r90_compatibility_matrix_governance.py +++ b/tests/test_r90_compatibility_matrix_governance.py @@ -22,8 +22,8 @@ from services.operator_doctor import DoctorReport, check_compatibility_matrix_go REPO_ROOT = Path(__file__).resolve().parents[1] EXPECTED_CURRENT_ANCHORS = { - "comfyui": "51bf508a (v0.27.0-25-g51bf508a / pyproject 0.27.0)", - "comfyui_frontend": "1.47.6 (747f76db76 / v1.47.6-53-g747f76db76)", + "comfyui": "1377a2f7 (v0.27.0-47-g1377a2f7 / pyproject 0.27.0)", + "comfyui_frontend": "1.48.1 (ceb5ae1eba / v1.48.1-1-gceb5ae1eba)", "desktop": "0.9.4 (core 0.22.3 / frontend 1.43.18)", } diff --git a/web/openclaw_host_surface.js b/web/openclaw_host_surface.js index 2935718..225a2e4 100644 --- a/web/openclaw_host_surface.js +++ b/web/openclaw_host_surface.js @@ -11,13 +11,13 @@ export const HOST_SURFACES = Object.freeze({ export const HOST_SURFACE_REFERENCES = Object.freeze({ [HOST_SURFACES.standaloneFrontend]: Object.freeze({ - frontendVersion: "1.47.6", + frontendVersion: "1.48.1", }), [HOST_SURFACES.desktop]: Object.freeze({ desktopVersion: "0.9.4", coreVersion: "0.22.3", embeddedFrontendVersion: "1.43.18", - standaloneFrontendVersion: "1.47.6", + standaloneFrontendVersion: "1.48.1", frontendParity: "lagging", }), }); diff --git a/web/tests/unit/openclaw_host_surface.test.js b/web/tests/unit/openclaw_host_surface.test.js index 32dd157..d7a5605 100644 --- a/web/tests/unit/openclaw_host_surface.test.js +++ b/web/tests/unit/openclaw_host_surface.test.js @@ -37,7 +37,7 @@ describe("openclaw_host_surface", () => { }); expect(container.dataset.openclawHostSurface).toBe("desktop"); expect(container.dataset.openclawDesktopHost).toBe("true"); - expect(container.dataset.openclawReferenceFrontend).toBe("1.47.6"); + expect(container.dataset.openclawReferenceFrontend).toBe("1.48.1"); expect(container.dataset.openclawDesktopVersion).toBe("0.9.4"); expect(container.dataset.openclawDesktopCoreVersion).toBe("0.22.3"); expect(container.dataset.openclawDesktopEmbeddedFrontend).toBe("1.43.18");