Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
a9c8ba8
feat(polkavm): grant PeerTransport to apps that declare a JAM network
replghost Sep 26, 2026
72dc1a4
chore(vendor): rebuild the host from #1010 at 81021f43
replghost Sep 26, 2026
8feff98
chore(truapi): commit the peer-transport vendor modules the dist igno…
replghost Sep 26, 2026
67015c5
feat(polkavm): grant JAM peer access as a runtime permission
replghost Sep 27, 2026
889d53b
chore(vendor): rebuild the host from #1010 at 8e4521b1
replghost Sep 27, 2026
8980057
refactor(polkavm): rename PeerTransport to JamPeerTransport
replghost Sep 27, 2026
4490d10
Merge feat/pvm-wasm (#185, TrUAPI 0.21) and move JamPeerTransport to …
replghost Sep 28, 2026
67ae699
Merge feat/pvm-wasm (#185): take the wallet back on a click into a fo…
replghost Sep 28, 2026
745bc80
Merge updated PolkaVM base
replghost Sep 28, 2026
35576ad
Merge feat/pvm-wasm (Safari per-app test wallet notice) into feat/pvm…
replghost Sep 28, 2026
ce7f512
Merge feat/pvm-wasm (#185) into feat/pvm-peer-transport
replghost Sep 29, 2026
fd61f2c
chore(vendor): rebuild the host from host-rust-core#1010 at 372d6962
replghost Sep 29, 2026
62940c5
Merge refreshed PolkaVM base into peer transport
replghost Sep 29, 2026
d14169a
Merge commit '8858795d' into HEAD
replghost Sep 29, 2026
8279e41
Merge commit '2b25898a' into HEAD
replghost Sep 29, 2026
2613cf1
Refresh peer transport wallet artifacts from the 0.23 runtime
replghost Sep 29, 2026
755f4e6
ci: recognize the public resolver mapping-slot vector
replghost Sep 29, 2026
62b386f
ci: retain deployed product smoke diagnostics
replghost Sep 29, 2026
ad5ec01
fix(host): settle protocol startup and exercise demand-driven Chat
replghost Sep 29, 2026
87e2f78
Merge commit 'dd110e71' into HEAD
replghost Sep 30, 2026
c1f7066
Merge commit '98376ca4049fb0cc96974d8564060272bf030af8' into HEAD
replghost Sep 30, 2026
4b29b82
Merge commit '7f99ce47678dde7d1d0e466e092db97229adb949' into HEAD
replghost Sep 30, 2026
afa4aa9
docs: format default-policy smoke guidance
replghost Sep 30, 2026
e5c8a1a
Merge common provider refresh into PVM peer transport
replghost Sep 30, 2026
3a07d89
Merge SDK provenance guidance while retaining JAM artifacts
replghost Sep 30, 2026
6291521
Merge source-pinned E2E toolchain setup from PVM
replghost Sep 30, 2026
b3fa339
Merge provider-compatible Previewnet trust roots from PVM
replghost Sep 30, 2026
505d7e5
Merge current main and PVM into Peer transport
replghost Oct 1, 2026
d658101
Merge execution-scoped consent and the canonical Peer SDK backport
replghost Oct 1, 2026
624b0ab
fix(rpc): preserve idle subscriptions and propagate transport loss
replghost Oct 1, 2026
662e94a
Vendor the qualified main-based Peer execution callback runtime
replghost Oct 1, 2026
b68b513
Merge commit '624b0abf' into HEAD
replghost Oct 1, 2026
5334c28
Merge commit '8db88b04fee2b1b33fea09647d44745bd09de941' into HEAD
replghost Oct 1, 2026
7278a04
Merge commit '952e3b41bf7b1f3bd630bd243042cf57d362b740' into HEAD
replghost Oct 1, 2026
b9c90e6
Merge commit '825a391348a9d3489fadc52ebb1f16bee5973c37' into HEAD
replghost Oct 1, 2026
b73c3ec
Merge commit 'ce4ebdf04f80eff5d427ddca4d17e58e9ff8c296' into HEAD
replghost Oct 1, 2026
bac980c
Merge commit '026cbedeffe2a2f6a98c40c9b6dcb0c3b6b711c0' into HEAD
replghost Oct 1, 2026
a5e8b5f
Merge commit 'fef26cd136c8e6c142ef644cc7640dd83d0fa58d' into HEAD
replghost Oct 1, 2026
96455b5
Merge commit '76314cd7ab368c2035e9d48b02b87dccedb0a229' into HEAD
replghost Oct 1, 2026
be0b5af
Merge commit '3898d80afba6fcf01c28c0b61d8bca6f217e5a41' into HEAD
replghost Oct 1, 2026
5e94e8d
Merge commit 'e592e99313a10edbcb9f822a1197932703c74d11' into HEAD
replghost Oct 1, 2026
8c40f16
docs: use the lock manifest as Peer artifact provenance
replghost Oct 1, 2026
d8744f7
Merge commit '69d255a3e5a2c8ac4567833894df482d20c17e8f' into HEAD
replghost Oct 1, 2026
3f0dcdb
chore: refresh canonical native-main Peer SDK artifacts
replghost Oct 1, 2026
fcfcd36
Merge commit '289d0b1399f524fdd036d3a6be5dae04b4fcfa38' into HEAD
replghost Oct 1, 2026
944d0dd
Merge commit 'a864a60348984c0cb2ae0b4895517a455b96c4b6' into HEAD
replghost Oct 1, 2026
3a815a0
Merge commit '5aae6ba5d8ad5cad932e1a06e9e3b1e873b584c8' into HEAD
replghost Oct 1, 2026
b1a0b81
Merge commit '0afb7feb122702e476d21d1f440917e81a2256c1' into HEAD
replghost Oct 1, 2026
602d1b3
merge: inherit qualified stopped-chain recovery
replghost Oct 2, 2026
0ee6f29
merge: inherit shared-worker generation recovery
replghost Oct 2, 2026
a21757c
merge: inherit proven recovery guidance
replghost Oct 2, 2026
c60e0b1
merge: inherit real-RPC recovery regression cutover
replghost Oct 2, 2026
44ed4f8
merge: inherit isolated bitswap fixture setup
replghost Oct 2, 2026
05a6265
Merge corrected upstream and refresh canonical peer artifacts
replghost Oct 2, 2026
19a9c5a
Merge commit 'abca1e079e90781a97fa9492331ddb7ad669d2b7' into HEAD
replghost Oct 2, 2026
449a6b1
Merge refreshed runtime into browser JAM PeerTransport
replghost Oct 2, 2026
31846fc
Merge refreshed runtime and matching native PeerTransport packages
replghost Oct 2, 2026
9f6fd71
Merge refreshed browser runtime into JamPeerTransport
replghost Oct 2, 2026
f12efea
Merge refreshed runtime and matched JamPeerTransport artifacts
replghost Oct 2, 2026
8e00147
Merge final runtime formatting into JamPeerTransport
replghost Oct 2, 2026
c4ecf99
Merge persisted cache compatibility correction into JamPeerTransport
replghost Oct 2, 2026
0e9a772
Merge runtime archive fixture correction into JamPeerTransport
replghost Oct 2, 2026
870f608
Merge generic runtime into JamPeerTransport and refresh native SDK
replghost Oct 3, 2026
ea4f773
Merge approved Duke pointer-lock smoke correction into browser #290
replghost Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,21 @@ traffic stays on the bounded PolkaVM runtime ABI 1. Guest Host requests use the
Host-frame bytes use the canonical TrUAPI wire codec, currently version 3. Build guest clients against the SDK recorded
in `vendor/truapi-host.lock.json`; runtime ABI 1 compatibility alone does not imply TrUAPI wire compatibility.

On this branch, `vendor/truapi-host.lock.json` pins the canonical SDK and Wasm to `feat/pvm-peer-transport`. JAM peer
transport is execution-local in the sandbox. Before dialing a network, it requests `JamPeers` permission through the
product's authenticated port to the shared page core. The host's Solid permission dialog shows the full genesis hash and
offers **Allow once**, **Always allow**, and **Deny**; dismissal saves no decision. Durable decisions are scoped to
product and genesis, while a one-time grant lasts only for that execution. This grants no account, signing, storage, or
arbitrary web access.

The canonical session uses WebTransport to validators, with at most eight connections, sixteen streams per connection,
and 1 MiB messages. Received data remains unverified until the guest checks it. The runtime menu's **Network access**
section lists this execution's grants. Network updates continue while its display/audio menu is paused. Stop,
replacement, and runtime failure close the session and refuse outstanding permission requests; a replacement guest
cannot consume old replies. Ordinary host frames retain their 1 MiB bound and still use the shared page core; only peer
frames use the larger bound needed for message framing. The session's ten-second dial deadline includes the permission
prompt: a late decision does not resurrect an expired dial, though a retry can use the remembered decision.

App manifest v2 uses runtime ABI 1 with framebuffer, Tri2D, WebGPU Raster, and bounded capability negotiation; TrUAPI,
MotionSample v1, text, IME, focus, and wheel input use the same pinned browser runtime as native Hosts. UI output v1
applies cursor and IME-agent state in the sandbox. Clipboard text and HTTP(S) navigation cross an origin-checked parent
Expand Down
1 change: 1 addition & 0 deletions apps/sandbox/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"@dotli/storage": "*",
"@dotli/truapi-debug": "*",
"@dotli/ui": "*",
"@parity/truapi": "file:../../vendor/truapi",
"@sentry/browser": "^11.1.0",
"@sentry/vite-plugin": "^5.4.0"
}
Expand Down
24 changes: 23 additions & 1 deletion apps/sandbox/src/polkavm-menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ export function installPolkaVmMenu(
options: {
pause: (paused: boolean) => void;
hasFileInput: boolean;
/** Lines describing network access the host granted this execution; read on every open. */
grants: () => readonly string[];
retry: () => void;
launcher: () => void;
error?: string;
Expand Down Expand Up @@ -59,6 +61,25 @@ export function installPolkaVmMenu(
list.append(item);
}
help.append(summary, list);
const network = document.createElement('details');
network.className = 'dotli-polkavm-network';
const networkSummary = document.createElement('summary');
networkSummary.textContent = 'Network access';
const networkList = document.createElement('ul');
network.append(networkSummary, networkList);
const renderGrants = (): void => {
const grants = options.grants();
networkList.replaceChildren(
...(grants.length === 0 ? ["This app has no network access beyond the host's own services."] : grants).map(
grant => {
const item = document.createElement('li');
item.textContent = grant;
return item;
},
),
);
};
renderGrants();
const changeFile = options.hasFileInput ? button('Change Game / Choose file') : null;
if (changeFile !== null) {
changeFile.id = 'dotli-polkavm-file-open';
Expand All @@ -67,7 +88,7 @@ export function installPolkaVmMenu(
retry.hidden = options.error === undefined;
const launcher = button('Return to launcher');
launcher.hidden = !options.hasFileInput;
dialog.append(heading, message, resume, help);
dialog.append(heading, message, resume, help, network);
if (changeFile !== null) {
dialog.append(changeFile);
}
Expand All @@ -80,6 +101,7 @@ export function installPolkaVmMenu(
return;
}
previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
renderGrants();
options.pause(true);
dialog.showModal();
toggle.setAttribute('aria-expanded', 'true');
Expand Down
Loading
Loading