diff --git a/src/facade/Makefile b/src/facade/Makefile index c7ab849..47e197e 100644 --- a/src/facade/Makefile +++ b/src/facade/Makefile @@ -6,7 +6,7 @@ # Run `make sync` after every Wippy Web Host version bump to pull fresh copies. # Web Host CDN base — update version when Wippy Web Host releases -WEB_HOST_CDN = https://web-host.wippy.ai/webcomponents-1.0.49 +WEB_HOST_CDN = https://web-host.wippy.ai/webcomponents-1.0.52 # Files to sync from CDN into public/@wippy-fe/ CDN_FILES = loading.js diff --git a/src/facade/README.md b/src/facade/README.md index 0c4d591..00e19fb 100644 --- a/src/facade/README.md +++ b/src/facade/README.md @@ -30,6 +30,18 @@ Both entries expose the same `window.initWippyApp(config, rootContainer?)` signa Leave `fe_mode` at `compat` unless you have a specific reason to opt in — the managed shell omits every piece of default Wippy chrome (no sidebar, no chat wrapper, no right panel) and expects the declaration to provide equivalents. +If you do opt in, use Web Host **1.0.50 or newer** and declare the shipped coordinator: + +```yaml +coordinators: + compat: + kind: builtin + id: '@HOST/compat-coordinator' + props: { artifactPanel: right, modalId: artifact-modal, routeSync: true } +``` + +Below 1.0.50, a child app's `host.openArtifact()` / `startChat()` / `openSession()` / `navigate()` calls fail **silently** in managed mode, and the host URL is not bound to any panel — so deep links, the browser Back button and nav-sidebar clicks change the address bar and render nothing. From 1.0.50 those calls publish intents the coordinator acts on, and the host prints a boot-time table naming anything the declaration has not wired up. See [`managed-layout.md`](https://github.com/wippyai/gen-2-chat/blob/webcomponents/managed-layout.md). + ## Vendored CDN files `public/@wippy-fe/` contains files copied from the Wippy Web Host CDN. These are loaded before the CDN URL is known (pre-config-fetch), so they must be vendored locally. @@ -66,7 +78,7 @@ These fields are NOT configurable via requirements — they are computed at runt | Requirement | Default | Description | |---|---|---| -| `fe_facade_url` | `https://web-host.wippy.ai/webcomponents-1.0.49` | CDN base URL for the Web Host frontend bundle | +| `fe_facade_url` | `https://web-host.wippy.ai/webcomponents-1.0.52` | CDN base URL for the Web Host frontend bundle | | `fe_entry_path` | `/iframe.html` | Iframe HTML entry point path (appended to `fe_facade_url`) | | `fe_mode` | `compat` | `compat` (default — loads `module.js`) or `managed` (loads `managed-layout.js` for declarative multi-panel apps). See [Modes](#modes) above | | `render_engine` | `iframe` | Global page render engine for packaged `view.page` micro-frontends: `iframe` (default — legacy srcdoc iframe) or `fragment` (Web Fragment / reframed realm reflected into a shadow root). `fragment` **requires** the `wippy/views` fragment gateway and a fragment-capable host bundle serving `/@wippy-fe/proxy-fragment.js`. Flows to the host as `hostConfig.renderEngine`; the child app is engine-agnostic (same package renders under either engine). | @@ -378,9 +390,9 @@ Returns an empty body (200 OK) when no variables are configured. Response has `C ```json { - "facade_url": "https://web-host.wippy.ai/webcomponents-1.0.49", + "facade_url": "https://web-host.wippy.ai/webcomponents-1.0.52", "iframe_origin": "https://web-host.wippy.ai", - "iframe_url": "https://web-host.wippy.ai/webcomponents-1.0.49/iframe.html?waitForCustomConfig", + "iframe_url": "https://web-host.wippy.ai/webcomponents-1.0.52/iframe.html?waitForCustomConfig", "login_path": "/login.html", "login_redirect_param": null, "env": { diff --git a/src/facade/_index.yaml b/src/facade/_index.yaml index ad4dd58..45f6ee3 100644 --- a/src/facade/_index.yaml +++ b/src/facade/_index.yaml @@ -39,7 +39,7 @@ entries: targets: - entry: wippy.facade:fe_facade_url path: .default - default: https://web-host.wippy.ai/webcomponents-1.0.49 + default: https://web-host.wippy.ai/webcomponents-1.0.52 - name: fe_entry_path kind: ns.requirement diff --git a/src/facade/config_handler_test.lua b/src/facade/config_handler_test.lua index 887dd4a..ed345d9 100644 --- a/src/facade/config_handler_test.lua +++ b/src/facade/config_handler_test.lua @@ -188,7 +188,7 @@ local function define_tests() end) test.it("extracts iframe origin from facade URL", function() - local facade_url = "https://web-host.wippy.ai/webcomponents-1.0.49" + local facade_url = "https://web-host.wippy.ai/webcomponents-1.0.52" local origin = facade_url:match("^(https?://[^/]+)") test.eq(origin, "https://web-host.wippy.ai") @@ -266,7 +266,7 @@ local function define_tests() test.it("returns all default requirement values", function() local entry = registry.get(NS .. "fe_facade_url") - test.eq(entry.data.default, "https://front.wippy.ai") + test.eq(entry.data.default, "https://web-host.wippy.ai/webcomponents-1.0.52") entry = registry.get(NS .. "fe_entry_path") test.eq(entry.data.default, "/iframe.html") diff --git a/src/facade/test/config_dependency_test.lua b/src/facade/test/config_dependency_test.lua index 2d0e05c..2b33cc2 100644 --- a/src/facade/test/config_dependency_test.lua +++ b/src/facade/test/config_dependency_test.lua @@ -9,7 +9,7 @@ local function run() local entry = registry.get(NS .. "fe_facade_url") test.not_nil(entry) test.not_nil(entry.data) - test.eq(entry.data.default, "https://web-host.wippy.ai/webcomponents-1.0.49") + test.eq(entry.data.default, "https://web-host.wippy.ai/webcomponents-1.0.52") entry = registry.get(NS .. "app_title") test.not_nil(entry)