Skip to content

feat(pvm): mediate UI platform output - #202

Merged
replghost merged 1 commit into
feat/pvm-wasmfrom
feat/pvm-ui-output
Sep 4, 2026
Merged

feat(pvm): mediate UI platform output#202
replghost merged 1 commit into
feat/pvm-wasmfrom
feat/pvm-ui-output

Conversation

@replghost

Copy link
Copy Markdown
Collaborator

Summary

DotLi's PolkaVM sandbox consumes PVM Host Runtime v0.1.10 UI output v1.

  • validate structured cursor, mutable-text, IME geometry, clipboard-text, and URL output at the sandbox boundary
  • apply cursor and IME-agent state inside the app frame
  • focus and position the hidden text agent from guest IME geometry
  • preserve the full 4× surface-density range
  • send one sensitive command to the owning Host per output
  • arm that channel only from trusted keyboard or pointer input
  • validate app origin, iframe source, activation identity/expiry, command shape, byte bounds, and HTTP(S) scheme again in the Host
  • consume the activation before executing one clipboard or navigation request
  • keep clipboard permission off the cross-origin app iframe
  • pin the source-built runtime and browser assets through host-rust-core#599 / PVM Host Runtime v0.1.10

This pull request is stacked on #185, which introduces the PolkaVM browser path.

Verification

  • sandbox PVM tests: 27 passed
  • host bridge tests: 28 passed, including origin/source/activation/one-command policy
  • sandbox and UI typechecks pass
  • sandbox and UI ESLint pass
  • source-built runtime assets match the immutable bridge pin
  • production host/sandbox build passes
  • a real App Kit egui-starter CAR ran on the compiler backend with valid Tri2D output
  • browser interaction produced cursor=text, focused/positioned the IME textarea, and emitted a Host message containing only CopyText("Hello from PolkaVM")
  • Chromium confirmed transient user activation remains active in the Host for both the activation and command messages

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

⚡ Performance Report

⚠️ No baseline found on main. This PR's results are recorded but cannot be compared.
Merge to main to establish a baseline.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Report

Chunks over 500 KB:

File Raw Brotli Gzip
host/assets/paseo.smol-DboPaEh1.json 1.84 MB 941.7 KB 1019.4 KB
host/assets/paseo-people-next.smol.json 3.36 MB 1.68 MB 1.82 MB
host/assets/smoldot.js 3.05 MB 2.27 MB (-17 B) 2.28 MB
host/assets/smoldot_worker.js 3.02 MB 2.26 MB 2.27 MB
host/assets/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/wasm/web/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
sandbox/pvm-runtime/pvm-browser-runtime.wasm 1006.6 KB 167.6 KB 226.5 KB
Total 28.02 MB (+1.21 MB) 18.29 MB (+238.2 KB) (-35%) 19.19 MB (+303.8 KB)
All files
File Raw Brotli Gzip
host/.well-known/apple-app-site-association 505 B 505 B 505 B
host/.well-known/assetlinks.json 2.1 KB 343 B 427 B
host/assets/bridge.js 74.0 KB (+3.5 KB) 20.3 KB (+1000 B) 23.3 KB (+1.1 KB)
host/assets/browser.js 22.9 KB 7.6 KB (+13 B) 8.6 KB (-1 B)
host/assets/client.js 100.1 KB 29.4 KB (+20 B) 32.4 KB (+3 B)
host/assets/dist.js 39.0 KB (+6 B) 12.8 KB (-37 B) 14.5 KB (+40 B)
host/assets/dotli-debug-bus.js 710 B 710 B 710 B
host/assets/get-sync-provider.js 2.8 KB 1.1 KB (-2 B) 1.2 KB (-3 B)
host/assets/hex.js 154 B 154 B 154 B
host/assets/index.js 234.6 KB (+6.2 KB) 58.8 KB (+1.6 KB) 70.3 KB (+2.0 KB)
host/assets/index.css 55.1 KB 8.6 KB 9.8 KB
host/assets/manifest.js 19.6 KB (-3.0 KB) 6.5 KB (-740 B) 7.2 KB (-818 B)
host/assets/panel.js 76.4 KB (+128 B) 20.6 KB (+41 B) 23.2 KB (+2 B)
host/assets/paseo.smol-DboPaEh1.json 1.84 MB 941.7 KB 1019.4 KB
host/assets/paseo-people-next.smol.json 3.36 MB 1.68 MB 1.82 MB
host/assets/paseo.smol.json 25.2 KB 5.6 KB 6.7 KB
host/assets/previewnet.smol.json 63.7 KB 7.6 KB 13.1 KB
host/assets/resolve.js 156 B 156 B 156 B
host/assets/rpc-resolve.js 2.5 KB 1.0 KB (-4 B) 1.2 KB
host/assets/smoldot.js 3.05 MB 2.27 MB (-17 B) 2.28 MB
host/assets/smoldot_worker.js 3.02 MB 2.26 MB 2.27 MB
host/assets/spans.js 2.6 KB 1.1 KB 1.3 KB
host/assets/src.js 1.8 KB 848 B (+4 B) 946 B (+1 B)
host/assets/styles.css 15.3 KB 3.3 KB 3.8 KB
host/assets/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/wasm/web/README.md 13.4 KB 13.4 KB 13.4 KB
host/assets/wasm/web/package.json 371 B 371 B 371 B
host/assets/wasm/web/truapi_server.d.ts 12.6 KB 12.6 KB 12.6 KB
host/assets/wasm/web/truapi_server.js 49.7 KB 7.9 KB 9.2 KB
host/assets/wasm/web/truapi_server_bg.wasm 7.20 MB 5.29 MB 5.56 MB
host/assets/wasm/web/truapi_server_bg.wasm.d.ts 4.0 KB 4.0 KB 4.0 KB
host/assets/web.js 18.2 KB (+6 B) 4.6 KB (-7 B) 5.1 KB (-4 B)
host/assets/worker-runtime.js 28.9 KB (+28.8 KB) 6.8 KB (+6.7 KB) 7.7 KB (+7.6 KB)
host/assets/worker-runtime.js 106 B 106 B 106 B
host/assets/ws.js 23.1 KB 7.5 KB (+5 B) 8.2 KB (-3 B)
host/dotli.png 11.5 KB 11.5 KB 11.5 KB
host/favicon.svg 1.8 KB 1.8 KB 1.8 KB
host/host-sw.js 2.7 KB 1.1 KB (-3 B) 1.3 KB (-5 B)
host/icon-192.png 12.5 KB 12.5 KB 12.5 KB
host/icon-512.png 42.8 KB 42.8 KB 42.8 KB
host/index.html 29.1 KB 5.4 KB (+3 B) 6.7 KB
host/manifest.webmanifest 441 B 441 B 441 B
host/workbox.js 14.8 KB 4.6 KB 5.1 KB
sandbox/app-sw.js 9.7 KB (+52 B) 3.2 KB (+22 B) 3.6 KB (+18 B)
sandbox/assets/bitswap-bridge.js 840 B 840 B 840 B
sandbox/assets/fetch.js 3.4 KB 1.2 KB (+1 B) 1.4 KB (+3 B)
sandbox/assets/index.js 162.7 KB (+42.3 KB) 46.3 KB (+12.0 KB) 54.2 KB (+13.8 KB)
sandbox/assets/index.css 55.1 KB 8.6 KB 9.8 KB
sandbox/favicon.svg 1.8 KB 1.8 KB 1.8 KB
sandbox/index.html 1.7 KB 582 B (+2 B) 784 B (-2 B)
sandbox/pvm-runtime/LICENSE-MPL-2.0 16.3 KB 16.3 KB 16.3 KB
sandbox/pvm-runtime/PolkaVM-LICENSE-APACHE 10.6 KB 10.6 KB 10.6 KB
sandbox/pvm-runtime/PolkaVM-LICENSE-MIT 1023 B 1023 B 1023 B
sandbox/pvm-runtime/SOURCE 389 B 389 B 389 B
sandbox/pvm-runtime/pvm-browser-runtime.wasm 1006.6 KB 167.6 KB 226.5 KB
sandbox/pvm-runtime/pvm-gpu-worker.js 55.6 KB 9.8 KB 11.2 KB
sandbox/pvm-runtime/pvm-wasm-worker.js 73.8 KB 11.9 KB 14.0 KB
Total 28.02 MB (+1.21 MB) 18.29 MB (+238.2 KB) (-35%) 19.19 MB (+303.8 KB)

Commit: 7ce1f83

@replghost
replghost merged commit 95d1313 into feat/pvm-wasm Sep 4, 2026
15 checks passed
@replghost
replghost deleted the feat/pvm-ui-output branch September 4, 2026 01:10
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

⚠️ E2E Product suite skipped — Nova signing bot is unavailable.

This is a Nova-side outage and not a dot.li test failure. Re-run
from the Actions tab once the bot recovers.

Logs: https://github.com/paritytech/dotli-community/actions/runs/33824435869

replghost added a commit that referenced this pull request Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant