openclaw/src
Peter Steinberger 3ccf2a0739
feat: render inline web chat widgets via capability-gated show_widget tool (#101840)
Adds client-capability-gated tool availability: gateway clients declare
capabilities at connect (new inline-widgets cap), chat.send stamps them into
the run context, and every tool assembly path (embedded runner, queued
followups, Codex app-server harness, plugin-only construction plans) drops
tools whose requiredClientCaps the originating client did not declare. The
Canvas plugin ships the first such tool, show_widget: agents pass SVG or an
HTML fragment plus a title; the plugin hosts it as a bounded, retention-scoped
Canvas document and returns the existing canvas preview handle, which web chat
renders as a sandboxed iframe fitted to the widget's reported content height.
Widget frames never get allow-same-origin (per-preview sandbox ceiling,
including the sidebar path) and the Canvas host serves widget documents with a
CSP sandbox header so direct navigation runs in an opaque origin. Verified
live end-to-end on a Testbox with gpt-5.5 (screenshots on the PR). CLI-backed
model backends do not carry client caps yet and stay fail-closed (#102577).

Closes #101790
2026-07-09 12:29:50 +01:00
..
acp fix(acp): keep background-task summaries UTF-16 safe at truncation boundaries (#101976) 2026-07-09 05:02:21 +01:00
agents feat: render inline web chat widgets via capability-gated show_widget tool (#101840) 2026-07-09 12:29:50 +01:00
audit feat: correlate native search outcomes in audit history (#98704) 2026-07-06 12:30:12 +01:00
auto-reply feat: render inline web chat widgets via capability-gated show_widget tool (#101840) 2026-07-09 12:29:50 +01:00
bindings
bootstrap
channels feat(slack): support Enterprise Grid org installs (#102372) 2026-07-08 23:53:19 -07:00
chat feat: render inline web chat widgets via capability-gated show_widget tool (#101840) 2026-07-09 12:29:50 +01:00
cli fix(text): keep diagnostic truncation UTF-16 safe 2026-07-09 04:02:39 -07:00
commands feat: add follow-up task suggestions (#102422) 2026-07-09 06:30:01 +01:00
commitments test(commitments): await retry persistence 2026-07-06 03:33:43 -07:00
compat
config fix(context): show transcript conversation in /context map 2026-07-09 16:56:13 +05:30
context-engine refactor: localize internal implementation constants (#101758) 2026-07-07 08:34:13 -07:00
crestodian feat(crestodian): guide providerless model setup (#101887) 2026-07-07 19:24:54 -06:00
cron fix(agents): classify code mode aborts separately from timeouts (#102494) 2026-07-09 12:29:04 +01:00
daemon refactor: localize file-private exports (#101701) 2026-07-07 06:57:19 -07:00
docs test(docs): align rewrite guards with current wording (#100183) 2026-07-04 22:23:10 -07:00
flows fix(doctor): keep scrubbed error truncation UTF-16 safe (#102066) 2026-07-09 04:39:15 +01:00
gateway feat: render inline web chat widgets via capability-gated show_widget tool (#101840) 2026-07-09 12:29:50 +01:00
hooks fix(text): keep diagnostic truncation UTF-16 safe 2026-07-09 04:02:39 -07:00
i18n
image-generation improve: keep isolated tests under one second (#100019) 2026-07-05 10:57:19 -07:00
infra fix(plugin-sdk): update ssrf-runtime import path in cdp-proxy-bypass (#96994) 2026-07-09 12:20:18 +01:00
interactive
link-understanding fix(link-understanding): honor global or largest model timeout for link fetches (#100660) (#100731) 2026-07-06 09:26:39 +01:00
llm feat(secrets): egress-time credential injection with process-local sentinels (#102009) 2026-07-08 12:56:41 +01:00
logging fix(logging): use truncateUtf16Safe in diagnostic stability and session context (#102570) 2026-07-09 10:45:28 +01:00
mcp refactor: localize internal implementation constants (#101758) 2026-07-07 08:34:13 -07:00
media refactor(deadcode): localize core helpers (#101869) 2026-07-07 13:16:57 -07:00
media-generation
media-understanding fix(secrets): prevent capture and sentinel credential retention (#102420) 2026-07-09 05:50:28 +01:00
memory
memory-host-sdk
model-catalog
music-generation refactor(infra): consolidate bounded HTTP body reads (#99744) 2026-07-04 12:15:57 -07:00
node-host fix(node-host): clarify unusable node exec cwd failures (#97105) 2026-07-09 11:34:25 +01:00
pairing feat: add channel pairing request hook (#97733) 2026-07-05 19:11:58 -07:00
plugin-sdk fix(mattermost): add timeout to REST client requests (#102027) 2026-07-09 12:12:30 +01:00
plugin-state refactor(codex): store app-server thread bindings in SQLite plugin state (#101210) 2026-07-07 03:03:44 +01:00
plugins feat: render inline web chat widgets via capability-gated show_widget tool (#101840) 2026-07-09 12:29:50 +01:00
process refactor: localize internal implementation types (#101731) 2026-07-07 07:41:04 -07:00
provider-runtime refactor: localize internal implementation constants (#101758) 2026-07-07 08:34:13 -07:00
proxy-capture fix(secrets): prevent capture and sentinel credential retention (#102420) 2026-07-09 05:50:28 +01:00
realtime-transcription fix(realtime): preserve reconnect budget across flaps (#102348) 2026-07-09 12:08:50 +01:00
routing fix(agent): preserve explicit recipient sessions (#101507) 2026-07-07 10:07:13 +01:00
scripts fix(ci): stabilize Windows startup fallback tests (#101223) 2026-07-07 00:37:50 +01:00
secrets Add Vault SecretRef plugin (#89255) 2026-07-09 05:30:12 -05:00
security fix(security): keep channel-metadata and install-policy truncation surrogate-safe (#102266) 2026-07-09 06:31:06 +01:00
sessions fix(agents): keep prompt history append-only mid-session (#99495) (#102610) 2026-07-09 10:28:10 +01:00
shared fix(schema): resolve large local refs in schema arrays (#102195) 2026-07-09 09:51:30 +01:00
skills fix(plugins): terminate git clone args so git: specs cannot inject options (#102398) 2026-07-09 12:08:39 +01:00
state Fix container image upgrade migrations before gateway readiness (#101881) 2026-07-08 14:19:05 -04:00
status fix(status): surface auto-fallback model in status and session_status (#96126) (#101337) 2026-07-07 09:17:58 +01:00
talk fix(talk): use truncateUtf16Safe for LLM-prompt-facing text truncation (#102477) 2026-07-09 08:39:38 +01:00
tasks fix: keep task title truncation UTF-16 safe in restart/diagnostic output (#101934) 2026-07-09 07:10:25 +01:00
test-helpers test: make the local pnpm test gate green on macOS hosts (#100069) 2026-07-04 17:17:42 -04:00
test-utils refactor(plugins): require initialized registry collections (#100990) 2026-07-06 10:25:22 -07:00
tools
trajectory refactor(deadcode): localize core helpers (#101869) 2026-07-07 13:16:57 -07:00
transcripts fix(transcripts): handle read stream errors gracefully in TranscriptsStore (#100524) 2026-07-06 01:07:32 -07:00
tts fix(text): keep bounded outputs UTF-16 safe (#101355) 2026-07-06 21:33:24 -07:00
tui perf(test): restore cleanup-safe TUI PTY concurrency 2026-07-09 03:05:07 -04:00
types
utils fix(agents): avoid false unscheduled note after shell cron add (#101807) 2026-07-07 14:45:10 -07:00
video-generation refactor(infra): consolidate bounded HTTP body reads (#99744) 2026-07-04 12:15:57 -07:00
web-fetch improve(web-fetch): speed up provider fallback loading (#98559) 2026-07-04 12:47:10 -07:00
web-search
wizard feat(crestodian): guide providerless model setup (#101887) 2026-07-07 19:24:54 -06:00
browser-lifecycle-cleanup.test.ts
browser-lifecycle-cleanup.ts
docker-build-cache.test.ts
docker-image-digests.test.ts
docker-setup.e2e.test.ts
dockerfile.test.ts test(docker): allow patch-free runtime workspace 2026-07-06 02:52:24 -07:00
entry.compile-cache.test.ts
entry.compile-cache.ts
entry.respawn.test.ts
entry.respawn.ts
entry.root-help-fast-path.test.ts
entry.test.ts
entry.ts
entry.version-fast-path.test.ts
entry.version-fast-path.ts
extensionAPI.ts
global-state.ts
globals.test.ts
globals.ts
index.test.ts
index.ts
install-sh-version.test.ts
library.test.ts
library.ts
logger.test.ts
logger.ts
logging.ts
param-key.ts
plugin-activation-boundary.test.ts
poll-params.test.ts
poll-params.ts
polls.test.ts
polls.ts
runtime.test.ts fix(runtime): throw typed ExitError instead of generic Error for simulated exit (#97796) (#97803) 2026-07-06 16:07:32 +00:00
runtime.ts fix(runtime): throw typed ExitError instead of generic Error for simulated exit (#97796) (#97803) 2026-07-06 16:07:32 +00:00
utils.test.ts fix(channels): normalize phone identities with stray plus signs (#100467) 2026-07-06 02:19:11 +01:00
utils.ts fix(channels): normalize phone identities with stray plus signs (#100467) 2026-07-06 02:19:11 +01:00
version.test.ts
version.ts