Workspaces: add full-bleed apps and guarded gallery installs#101908
Workspaces: add full-bleed apps and guarded gallery installs#101908100yenadmin wants to merge 6 commits into
Conversation
|
On |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Dependency graph guard clearedThis PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh
|
|
Codex review: needs real behavior proof before merge. Reviewed July 13, 2026, 9:02 AM ET / 13:02 UTC. Summary PR surface: Source +702, Tests +837, Docs +47, Generated 0, Other -1. Total +1585 across 29 files. Reproducibility: not applicable. as a bug reproduction: this PR adds new Workspaces behavior. Focused tests exercise the designed paths, but the complete real user flow has not been demonstrated on the current head. Review metrics: 2 noteworthy metrics.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review findings
Review detailsBest possible solution: Either split and land the bounded full-bleed layout separately, or sponsor the complete gallery only after adding a safe in-product or doctor-owned recovery path, approving the configuration and public SDK contracts, and attaching redacted current-head live proof. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction: this PR adds new Workspaces behavior. Focused tests exercise the designed paths, but the complete real user flow has not been demonstrated on the current head. Is this the best way to solve the issue? No, not yet. Moving gallery fetches behind the shared SSRF guard is safer than browser fetching, but retained-install recovery and the need for a permanent public SDK callback must be resolved or explicitly accepted first. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 370b5150c259. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +702, Tests +837, Docs +47, Generated 0, Other -1. Total +1585 across 29 files. View PR surface stats
Security concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (4 earlier review cycles)
|
86c73d7 to
117c00a
Compare
117c00a to
a6749eb
Compare
|
AI-assisted (approved by Peter) The full-bleed single-widget tab portion landed separately in #109627, with contributor credit to @100yenadmin preserved. The gallery remains under review as a separate product decision; this PR stays open for that review. |
|
AI-assisted (approved by Peter) Thanks Andy — closing the remaining (gallery) half of this PR, and want to be precise about why, because it's a "not now" rather than a "no":
What would change this: custom widgets becoming visibly popular (people actually sharing them by hand) — that's the signal that a first-class distribution path earns its complexity. Your implementation here will be a great reference when that day comes. Thanks again for the substantial work across this whole stack. |
What Problem This Solves
Workspaces can render custom widgets, but users still lacked an app-like full-tab layout and a safe way to discover and stage third-party widget bundles. The old implementation fetched gallery content in the browser, which made the trust boundary unclear and did not provide a server-owned network policy suitable for a shared gateway.
Why This Change Was Made
This rebuild keeps full-bleed tabs and moves gallery retrieval into the Workspaces plugin under an explicit operator-controlled policy:
gallery.allowedOriginscontains exact normalized HTTPS origins;operator.approvals;pendingregistry entry;Fetching, listing, and installing never mount or execute widget code.
User Impact
Users can turn a tab into a focused full-bleed app surface and browse an operator-approved widget gallery. A malicious registry cannot redirect the gateway to an unapproved origin, send credentials, escape the widget directory, exceed the bounded payload contract, or activate code merely by being fetched or installed. Operators retain an explicit second approval before any installed widget can render.
Enabling a gallery intentionally makes the OpenClaw gateway contact the configured origin, which can observe the gateway IP address and requested paths. These requests carry no ambient credentials, OpenClaw authentication, or telemetry.
Evidence
a03df5fd5898e24facd38c07d9d9e60a047f0111, frozen for the final batch; all six functional commits are patch-equivalent to the validated stack, and the history-only cleanup leaves the exact final tree unchanged while removing a fully reverted dependency-patch detour.uipackage working directory, including builtin and custom full-bleed layout behavior.git diff --checkare clean.a6749eb96293e8cd82b92a28edcac04e1130e289confirms 0 added, 0 removed, and 0 changed resolved packages and 0 dependency-file changes.Closes #101148 and #101149.