Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
288 commits
Select commit Hold shift + click to select a range
602ef7b
test(pvm): prove canonical TrUAPI roundtrip
replghost Aug 30, 2026
3f5ad61
fix(pvm): update runtime to v0.1.4
replghost Aug 30, 2026
45f6ec4
test(pvm): isolate live performance server
replghost Aug 30, 2026
1642963
fix(pvm): reconnect warm runtime cache
replghost Aug 30, 2026
a0afeb5
fix(pvm): compact runtime metrics overlay
replghost Aug 30, 2026
926dba0
fix(pvm): explain unsupported app features
replghost Aug 31, 2026
bb47ee1
fix(pvm): recover WebGPU apps across resize
replghost Aug 31, 2026
5e60cde
fix(pvm): capture pointer for WebGPU games
replghost Aug 31, 2026
2827aa6
chore(pvm): pin reviewed motion bridge
replghost Aug 31, 2026
3683779
style(pvm): format resize coverage
replghost Aug 31, 2026
6b6c6bc
feat(pvm): integrate MotionSample v1
replghost Aug 31, 2026
2460b85
chore(pvm): pin merged GPU motion runtime
replghost Aug 31, 2026
747ece9
feat(pvm): require explicit relative pointer input
replghost Aug 31, 2026
14017e0
test(pvm): separate capture from guest input
replghost Aug 31, 2026
17c18f0
test(pvm): retain relative pointer control label
replghost Aug 31, 2026
6cb3a86
Revert "test(pvm): retain relative pointer control label"
replghost Aug 31, 2026
a1ab1e2
Revert "test(pvm): separate capture from guest input"
replghost Aug 31, 2026
6393442
Revert "feat(pvm): require explicit relative pointer input"
replghost Aug 31, 2026
10b4005
feat(pvm): deliver text IME focus and wheel input
replghost Sep 2, 2026
93bb2f3
chore: rebase onto main and harden dependency overrides
replghost Sep 3, 2026
44e72db
chore(pvm): pin merged advanced input runtime
replghost Sep 3, 2026
6a39242
chore(pvm): pin runtime v0.1.7
replghost Sep 3, 2026
de2e4e1
fix(pvm): ship WebGPU motion applications
replghost Sep 3, 2026
bb85cf3
fix(pvm): support Safari physical motion
replghost Sep 3, 2026
e4966d1
fix(pvm): delegate motion sensors to app frame
replghost Sep 3, 2026
a2e56be
fix(pvm): request iOS motion from top-level host
replghost Sep 3, 2026
1faa0bf
fix(pvm): harden top-level motion relay
replghost Sep 3, 2026
7250df9
fix(pvm): recover motion parent origin
replghost Sep 3, 2026
74afa1c
fix(pvm): satisfy parent origin checks
replghost Sep 3, 2026
c82a200
feat(pvm): mediate UI platform output (#202)
replghost Sep 4, 2026
7f72e5f
fix(pvm): reload WebGPU apps after wake
replghost Sep 4, 2026
d21d7fe
fix(pvm): dismiss granted motion prompt
replghost Sep 4, 2026
29944f9
feat(pvm): accept WebGPU compute apps
replghost Sep 4, 2026
023c631
fix(ui): size product frame to dynamic viewport
replghost Sep 4, 2026
865bfde
fix(pvm): contain canvas in product viewport
replghost Sep 4, 2026
555b163
chore: normalize package overrides
replghost Sep 4, 2026
fcd80b5
fix(pvm): raise the program ceiling to 64 MiB
replghost Sep 4, 2026
3d22452
fix(content): assemble nested dag-pb file chunks
replghost Sep 4, 2026
faac6fa
fix(pvm): give the interpreter fallback its start budget
replghost Sep 4, 2026
c2f95b0
feat(pvm): select a declared web fallback when WebGPU is unavailable
replghost Sep 4, 2026
3d4c7e3
fix(pvm): focus the text surface for text-requiring apps
replghost Sep 5, 2026
4761778
feat(pvm): support guest-owned pointer capture
replghost Sep 5, 2026
cf3790a
test(pvm): verify gameplay owns pointer capture
replghost Sep 5, 2026
4272dd2
build(pvm): pin runtime v0.1.13
replghost Sep 5, 2026
1112644
fix(ui): require active frame for sandbox controls
replghost Sep 5, 2026
e0d79f4
fix(pvm): release capture on runtime teardown
replghost Sep 5, 2026
089c634
test(ui): tolerate CI import contention
replghost Sep 5, 2026
28e86c7
fix(pvm): preserve inline archive bytes and reopen upgraded caches
replghost Sep 5, 2026
7dc1911
fix(pvm): release failed workers and renegotiate closed host ports
replghost Sep 5, 2026
2b218e6
fix: map GPU pointer input to the negotiated surface
replghost Sep 5, 2026
e169706
fix(pvm): update browser runtime to v0.1.14
replghost Sep 5, 2026
c2755ec
fix(resolver): bound ChainHead pins to live read scopes
replghost Sep 5, 2026
f6ad06f
feat(polkavm): standardize browser runtime surfaces
replghost Sep 6, 2026
c13b365
fix(sandbox): harden PolkaVM host integration
replghost Sep 6, 2026
09b6ce5
fix(polkavm): authenticate runtime host boundaries
replghost Sep 6, 2026
e9de2fb
fix(polkavm): satisfy runtime lint invariants
replghost Sep 6, 2026
d8c01e5
fix(polkavm): preserve declared source revision
replghost Sep 6, 2026
4bd7775
fix(polkavm): keep touch gestures inside the guest surface
replghost Sep 6, 2026
659f6ed
fix(polkavm): adopt retryable host-frame response backpressure
replghost Sep 6, 2026
ef995f1
fix(polkavm): confirm host-frame delivery with sequenced acks
replghost Sep 6, 2026
6f71b1c
build(polkavm): vendor the upstream runtime 0.1.15
replghost Sep 7, 2026
1873c3a
fix(polkavm): record the vendored runtime release in the lockfile
replghost Sep 7, 2026
16e1457
fix(polkavm): accept the published App runtime ABI v1
replghost Sep 7, 2026
52b4b9f
build(polkavm): vendor @useragent-kit/polkavm-runtime 0.6.28
replghost Sep 7, 2026
bd767c5
fix(polkavm): restore the strict App runtime ABI 2 contract
replghost Sep 7, 2026
e909df3
fix(e2e): namespace signing-host lite usernames per run
replghost Sep 7, 2026
5beb840
fix(e2e): keep lite username prefixes lowercase letters
replghost Sep 7, 2026
eac7311
fix(content): retry cold bitswap peer discovery
replghost Sep 7, 2026
1f69811
fix(polkavm): load the Apps that are actually published
replghost Sep 7, 2026
53eef21
docs(adr): record the application runtime ABI decision
replghost Sep 7, 2026
b954988
test(polkavm): smoke published products after deploy
replghost Sep 7, 2026
8d2b56f
test(polkavm): enter Quake gameplay in product smoke
replghost Sep 8, 2026
f60c4ae
refactor(polkavm): keep computer contract stacked
replghost Sep 8, 2026
f0d82a7
test(polkavm): verify live product interaction
replghost Sep 9, 2026
da1f8ab
style: format product smoke evidence
replghost Sep 9, 2026
d1826cb
fix(polkavm): support Zed workspace on current runtime ABI 1
replghost Sep 8, 2026
fd3d430
docs(polkavm): record ABI-one Zed runtime pin
replghost Sep 8, 2026
249395a
test(polkavm): assert framebuffer fit within drawable surface
replghost Sep 9, 2026
584e5dc
test(polkavm): smoke live TrUAPI products
replghost Sep 9, 2026
36a2129
test(polkavm): focus playground handshake action
replghost Sep 9, 2026
9d8fd45
test(polkavm): click playground handshake control
replghost Sep 9, 2026
19f91f0
feat(debug): dock PolkaVM runtime metrics
replghost Sep 9, 2026
103fe9f
Merge remote-tracking branch 'origin/main' into feat/pvm-wasm
replghost Sep 9, 2026
8279a7e
fix(content): retry bitswap discovery per cid
replghost Sep 9, 2026
a78142e
Merge remote-tracking branch 'origin/main' into feat/pvm-wasm
replghost Sep 9, 2026
94d3ac2
style(resolver): format main integration
replghost Sep 9, 2026
7e189b0
fix(content): harden bitswap retry scheduling
replghost Sep 9, 2026
4256a77
build: vendor Chat-enabled TrUAPI host
replghost Sep 9, 2026
7ed4b7a
fix(polkavm): restore compiled Zed execution with runtime 0.1.3
replghost Sep 9, 2026
4741e99
build: expand TrUAPI vendor packages for Bun
replghost Sep 9, 2026
12f1d5d
build: exclude vendored packages from formatting
replghost Sep 9, 2026
6cb9c16
build: refresh TrUAPI vendor from host branch
replghost Sep 9, 2026
d566f9c
feat(polkavm): relay mobile viewport insets
replghost Sep 9, 2026
a220c23
chore: preserve existing file formatting
replghost Sep 9, 2026
2ab2a02
build: refresh vendor from clean host integration
replghost Sep 9, 2026
2c6338c
fix(polkavm): compare viewport insets structurally
replghost Sep 9, 2026
9e6cb46
build: track latest clean host revision
replghost Sep 9, 2026
3ce0adf
feat(polkavm): integrate demand-driven mobile runtime
replghost Sep 9, 2026
09fcaaa
chore(polkavm): pin synchronized runtime assets
replghost Sep 9, 2026
9cac60b
chore(polkavm): pin verified runtime assets
replghost Sep 9, 2026
40121f4
fix(polkavm): report touch capture failures
replghost Sep 9, 2026
207ebf9
test(polkavm): assert stable multi-touch records
replghost Sep 9, 2026
847aae7
fix(polkavm): cache complete compiled programs and report fallback st…
replghost Sep 10, 2026
46213ed
Merge remote-tracking branch 'origin/feat/pvm-wasm' into perf/zed-run…
replghost Sep 10, 2026
24900e9
fix(polkavm): ship adaptive Zed compiler with current mobile runtime
replghost Sep 10, 2026
1710906
fix: preserve light-client sync timeout cause
replghost Sep 10, 2026
992ba90
chore(polkavm): vendor combined runtime 0.3.0
replghost Sep 10, 2026
f3d3fb8
Merge PR #227 timeout attribution fix into #185
replghost Sep 10, 2026
911e75d
fix(polkavm): key cached runtime assets by content digest
replghost Sep 10, 2026
62c5170
fix(protocol): retry typed stopped resolver errors
replghost Sep 10, 2026
83378a9
Merge remote-tracking branch 'origin/feat/pvm-wasm' into feat/pvm-wasm
replghost Sep 10, 2026
9b517ff
feat(polkavm): add mediated camera input
replghost Sep 10, 2026
78abdf6
fix(polkavm): retry transient WebGPU device restoration
replghost Sep 10, 2026
80dcf3c
chore(polkavm): record packaged recovery runtime
replghost Sep 10, 2026
b3db281
chore(polkavm): advance recovery runtime revision
replghost Sep 10, 2026
1c7fb11
fix(polkavm): bridge native paste and recover Command key releases
replghost Sep 10, 2026
3a6d8fa
Merge remote-tracking branch 'origin/feat/pvm-wasm' into perf/zed-run…
replghost Sep 10, 2026
6f95a68
docs(polkavm): describe native clipboard paste
replghost Sep 10, 2026
cde0d4f
fix(polkavm): support browser core clocks and entropy
replghost Sep 10, 2026
fbf8ee1
feat(polkavm): vendor Chat v2 host authority
replghost Sep 10, 2026
3e1b681
test(host): smoke published Chat product
replghost Sep 10, 2026
d83fecd
fix(polkavm): retain partitioned JIT with mediated input and GPU reco…
replghost Sep 10, 2026
359aaff
Merge remote-tracking branch 'origin/feat/pvm-wasm' into perf/zed-run…
replghost Sep 10, 2026
c3aaa9f
Merge verified partitioned JIT and clipboard runtime from PR185
replghost Sep 10, 2026
5274997
fix(polkavm): allow cold guest commands within browser activation
replghost Sep 10, 2026
824581c
Merge PR185 cold guest activation fix into Chat runtime integration
replghost Sep 10, 2026
601ab95
Merge current main into PolkaVM integration
replghost Sep 10, 2026
276e06a
Merge conflict-resolved PolkaVM integration into Chat host
replghost Sep 10, 2026
2e5df47
Merge concurrent Chat integration refresh
replghost Sep 10, 2026
f50b140
Isolate shared-client metric assertions by mode
replghost Sep 10, 2026
fc96553
Merge remote-tracking branch 'origin/feat/pvm-wasm' into feat/chat-v2…
replghost Sep 10, 2026
fe98341
feat(polkavm): refresh Chat authority runtime
replghost Sep 10, 2026
b8f9f84
feat(polkavm): vendor Chat v2 host authority (#226)
replghost Sep 10, 2026
0577a4d
feat(polkavm): provide secure guest randomness
replghost Sep 11, 2026
f6f51ad
feat(polkavm): provide secure guest randomness
replghost Sep 11, 2026
212b07f
chore(polkavm): refresh runtime entropy build
replghost Sep 11, 2026
d5ef13f
fix(polkavm): normalize browser wheel direction
replghost Sep 11, 2026
bf9f8d6
chore(polkavm): attest final runtime revision
replghost Sep 11, 2026
f7da5bc
fix(polkavm): forward legacy wheel input
replghost Sep 11, 2026
ce2a625
fix(truapi): forward Chat statement proofs over SSO
replghost Sep 11, 2026
3ab1511
fix(truapi): forward Chat statement proofs over SSO
replghost Sep 11, 2026
9820365
test(polkavm): account for demand-driven frames
replghost Sep 11, 2026
6efc7a1
Merge remote-tracking branch 'origin/main' into feat/pvm-wasm
replghost Sep 11, 2026
2cc9b63
feat(polkavm): add consented file input
replghost Sep 11, 2026
849c4b6
fix(truapi): sign Chat request proofs canonically
replghost Sep 12, 2026
f6df869
fix(truapi): register Chat-compatible identity keys
replghost Sep 12, 2026
4f983ea
fix(debug): show live PolkaVM FPS in runtime badge
replghost Sep 12, 2026
1f8e77f
fix(ui): adapt live camera controls
replghost Sep 12, 2026
45d47b3
Merge remote-tracking branch 'origin/feat/pvm-wasm' into feat/chat-v2…
replghost Sep 12, 2026
c371777
fix(polkavm): keep refreshed runtime assets atomic
replghost Sep 12, 2026
d02244c
style(ui): format camera controls
replghost Sep 12, 2026
412038f
fix(ui): satisfy strict camera control lint
replghost Sep 12, 2026
4723d50
style(ui): format camera controls
replghost Sep 12, 2026
78a8f42
fix(ui): satisfy strict camera control lint
replghost Sep 12, 2026
5ae0954
feat(polkavm): add mobile FPS touch controls
replghost Sep 12, 2026
073e78b
Merge commit '5ae09546' into integrate/touch-controls-chat
replghost Sep 12, 2026
223ebd4
feat(wallet): add encrypted browser-local signer
replghost Sep 12, 2026
bcaf5b8
fix(wallet): satisfy strict UI lint
replghost Sep 12, 2026
318fe03
fix(polkavm): keep touch controls clear of landscape aim
replghost Sep 12, 2026
4235940
Merge remote-tracking branch 'origin/feat/pvm-wasm' into feat/polkavm…
replghost Sep 12, 2026
0dc0797
Merge remote-tracking branch 'origin/feat/pvm-wasm' into integrate/to…
replghost Sep 12, 2026
3c6dc70
chore(deploy): support approved Chat branch deployments without new PRs
replghost Sep 12, 2026
a793cd2
fix(polkavm): keep Chat authority on its separate integration branch
replghost Sep 12, 2026
587c4b7
Restore PR226 Chat stack above the runtime-only PR185 branch
replghost Sep 12, 2026
05132ba
refactor(polkavm): isolate browser wallet from runtime base
replghost Sep 12, 2026
61d6152
refactor(chat): isolate browser wallet above Chat integration
replghost Sep 12, 2026
71cc923
chore(polkavm): refresh isolated native runtime packages
replghost Sep 12, 2026
8392087
Merge current runtime base while preserving Chat host package set
replghost Sep 12, 2026
6444de0
Merge debug wallet base below PolkaVM integration
replghost Sep 13, 2026
c74dd39
Merge wallet-backed PolkaVM base into Chat integration
replghost Sep 13, 2026
1595c08
Merge wallet recovery and account controls into PolkaVM
replghost Sep 13, 2026
a7f6f7e
Merge branch 'integrate/wallet-base-runtime' into integrate/wallet-ba…
replghost Sep 13, 2026
d1f8e1a
fix(sandbox): vendor corrected PolkaVM runtime
replghost Sep 13, 2026
b5ef59b
merge: update PolkaVM runtime base
replghost Sep 13, 2026
6d3cbcd
test(host): drop stale runtime badge wording assertion
replghost Sep 13, 2026
722058b
merge: refresh PolkaVM runtime base
replghost Sep 13, 2026
44f02b2
Merge branch 'integration/wallet-public-prereqs-20260913' into integr…
replghost Sep 14, 2026
d51435a
fix(protocol): route legacy extrinsic subscription updates
replghost Sep 14, 2026
e0ff693
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
532bd97
Merge branch 'integration/wallet-public-prereqs-20260913' into integr…
replghost Sep 14, 2026
6678e3f
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
bd2ad15
Merge branch 'integration/wallet-public-prereqs-20260913' into integr…
replghost Sep 14, 2026
e2c6e19
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
b005225
Merge branch 'integration/wallet-public-prereqs-20260913' into integr…
replghost Sep 14, 2026
15de596
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
31a6d2b
Merge wallet identity proxy deployment into PolkaVM
replghost Sep 14, 2026
9bee3e9
Merge wallet identity proxy deployment through PolkaVM into Chat
replghost Sep 14, 2026
ddc670c
Merge branch 'integration/wallet-public-prereqs-20260913' into integr…
replghost Sep 14, 2026
343ef55
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
4e2041e
fix(pvm): use canonical sandbox origin in host inspector
replghost Sep 14, 2026
47564aa
Merge branch 'integration/pvm-wallet-prereqs-20260913' into integrati…
replghost Sep 14, 2026
5c10464
test(chat): handle automatic sign-in in product smoke
replghost Sep 14, 2026
5188cf3
fix(pvm): inherit wallet activation and confirmation UX
replghost Sep 15, 2026
7e4d0c4
fix(chat): inherit activation-first wallet and confirmation UX
replghost Sep 15, 2026
477a283
fix(pvm): inherit complete base client package
replghost Sep 15, 2026
a144ce7
fix(chat): inherit complete base SDK packaging
replghost Sep 15, 2026
9d866f1
Merge branch 'integrate/wallet-dotlidev-ux-20260914' into integrate/w…
replghost Sep 15, 2026
b6c894e
Merge branch 'integrate/wallet-runtime-followup-20260914' into integr…
replghost Sep 15, 2026
8a43b21
Merge branch 'integrate/wallet-dotlidev-ux-20260914' into integrate/w…
replghost Sep 15, 2026
5f942fb
Merge branch 'integrate/wallet-runtime-followup-20260914' into integr…
replghost Sep 15, 2026
d260fbb
Merge wallet reload display hydration into PolkaVM runtime
replghost Sep 15, 2026
b211222
Merge wallet reload display hydration through runtime into Chat
replghost Sep 15, 2026
3612f72
fix: vendor rebuilt generic host runtime and matching client
replghost Sep 15, 2026
ad2624d
fix: vendor rebuilt Chat authority runtime and matching client
replghost Sep 15, 2026
7a67a6e
Merge generic runtime fixes while preserving the matched Chat package…
replghost Sep 15, 2026
2db6dcb
Merge branch 'integrate/wallet-dotlidev-ux-20260914' into integrate/w…
replghost Sep 15, 2026
9dd37be
Merge branch 'integrate/wallet-runtime-followup-20260914' into integr…
replghost Sep 15, 2026
4eed300
Refresh Chat browser packages for SDK 0.16
replghost Sep 15, 2026
f15bf86
Migrate browser host consumers and CI to SDK 0.16
replghost Sep 15, 2026
0c80f2c
Merge the SDK 0.16 browser migration into Chat
replghost Sep 15, 2026
995a871
Pin the verified SDK 0.16 Chat source
replghost Sep 15, 2026
7579ef8
Pin verified SDK sources and keep signing warnings visible first
replghost Sep 15, 2026
8d0dfaa
Merge final SDK provenance and signing review presentation
replghost Sep 15, 2026
1b23c8c
Merge remote-tracking branch 'origin/feat/pwa-wallet' into fix/wasm-a…
replghost Sep 15, 2026
2d668e3
Merge remote-tracking branch 'origin/feat/pvm-wasm' into fix/wasm-all…
replghost Sep 15, 2026
7530936
Merge remote-tracking branch 'origin/feat/chat-v2-host-runtime' into …
replghost Sep 15, 2026
7881826
Merge remote-tracking branch 'origin/feat/pvm-wasm' into fix/chat-aut…
replghost Sep 15, 2026
4e632c1
fix: include complete TrUAPI 0.16 distribution
replghost Sep 15, 2026
a409e66
Merge remote-tracking branch 'origin/feat/pvm-wasm' into fix/chat-aut…
replghost Sep 15, 2026
b03aa81
feat(chat): integrate Chat host authority above PolkaVM runtime (#236)
replghost Sep 15, 2026
8e4146d
chore: refresh complete SDK 0.16 vendor distribution
replghost Sep 16, 2026
73e261c
chore: vendor final Chat SDK 0.16 authority distribution
replghost Sep 16, 2026
d98f96f
merge: integrate updated runtime base preserving final Chat SDK
replghost Sep 16, 2026
0093ce3
merge: retain final Chat SDK after upstream Chat integration
replghost Sep 16, 2026
55355eb
fix: run product E2E against the pinned SDK client
replghost Sep 16, 2026
29d1f73
Align product E2E networks and handle navigation and approval lifecycles
replghost Sep 16, 2026
7d76c83
Set the local product fixture to the signing-host network
replghost Sep 16, 2026
ac85e54
Merge remote-tracking branch 'origin/feat/pwa-wallet' into fix/wasm-a…
replghost Sep 16, 2026
ea03a8c
Merge remote-tracking branch 'origin/feat/pwa-wallet' into integrate/…
replghost Sep 17, 2026
7529b65
fix(polkavm): restore runtime-only boundary after Chat integration
replghost Sep 17, 2026
0084922
chore(truapi): refresh runtime SDK after base merge
replghost Sep 17, 2026
c986088
chore(truapi): record latest runtime merge
replghost Sep 17, 2026
8d19bab
chore(truapi): refresh Wasm-gated runtime host
replghost Sep 17, 2026
bbd6cef
Merge wallet claim progress into browser runtime
replghost Sep 17, 2026
2d29da9
chore(runtime): vendor claim-progress host SDK
replghost Sep 17, 2026
fb85b93
Merge remote-tracking branch 'origin/feat/pwa-wallet' into refresh/pr…
replghost Sep 18, 2026
d3442a0
chore(truapi): commit vendor modules the dist ignore skipped
replghost Sep 18, 2026
dd4ff79
Merge remote-tracking branch 'origin/feat/pwa-wallet' into refresh/pr…
replghost Sep 18, 2026
7bf8151
Merge remote-tracking branch 'origin/feat/pwa-wallet' into refresh/pr…
replghost Sep 18, 2026
314c5cf
Merge remote-tracking branch 'origin/feat/pwa-wallet' into refresh/pr…
replghost Sep 18, 2026
29effa0
Merge remote-tracking branch 'origin/feat/pwa-wallet' into refresh/pr…
replghost Sep 18, 2026
0b5f8bf
ci(deploy): smoke the products of every label-deployed environment
replghost Sep 18, 2026
ccc8eda
test(smoke): cover wallet-free TrUAPI capabilities on the deployed host
replghost Sep 18, 2026
329b99c
test(smoke): retry product gesture after first draw
replghost Sep 19, 2026
88c60e1
feat(polkavm): add host pause menu and recoverable file loading
replghost Sep 19, 2026
d10dd4b
chore(polkavm): pin verified runtime asset metadata
replghost Sep 19, 2026
3853c8c
fix(polkavm): align control help whitespace with runtime
replghost Sep 19, 2026
fbf77a7
fix(polkavm): align pause menu beneath its trigger
replghost Sep 19, 2026
9290ef7
feat: consume the bounded large-program PolkaVM runtime
replghost Sep 20, 2026
f112e14
test: avoid returning void in program boundary assertion
replghost Sep 20, 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
8 changes: 6 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,18 @@ VITE_SENTRY_DSN=
SENTRY_AUTH_TOKEN=

# E2E (apps/host/tests/e2e) — pairing and signing via the truapi-host CLI
# from paritytech/host-rust-core. Install it with the repo's installer script
# or set SIGNING_HOST_BIN to a locally built binary (defaults to PATH lookup).
# from paritytech/host-rust-core. Build the upstreamRevision recorded in
# vendor/truapi-host.lock.json (see README's local E2E instructions), then set
# SIGNING_HOST_BIN to its absolute path (defaults to PATH lookup).
# Set TRUAPI_HOST_NO_UPDATE=1 to keep the matching binary from self-updating.
SIGNING_HOST_BIN=
# MUST match the host's `defaultNetwork()` in `packages/config/src/network.ts`.
# Drift produces a silent "pair OK, user-badge never appears" failure: the
# CLI attests on one chain, the host listens on another, and the chain-side
# handshake never reaches the host.
SIGNING_HOST_NETWORK=paseo-next-v2
# The local host-playground fixture must select this same network's Asset Hub.
NEXT_PUBLIC_NETWORK_GENESIS_HASH=0x4349b00e54897e21196fd331015fc5be0f14e118beb0375ed2bb1793737bb57a
# CLI state dir (accounts, sessions). Defaults to apps/host/tests/e2e/.auth/
# signing-host so repeat runs reuse one test account. Override to isolate.
SIGNING_HOST_BASE_PATH=
Expand Down
53 changes: 53 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
environments: ${{ steps.plan.outputs.environments }}
smoke_environments: ${{ steps.plan.outputs.smoke_environments }}
ref: ${{ steps.plan.outputs.ref }}
steps:
- id: plan
Expand All @@ -39,6 +40,7 @@ jobs:
;;
push)
echo 'environments=["paseoli.dev"]' >> "$GITHUB_OUTPUT"
echo 'smoke_environments=["paseoli.dev"]' >> "$GITHUB_OUTPUT"
echo "ref=" >> "$GITHUB_OUTPUT"
;;
pull_request)
Expand All @@ -56,6 +58,12 @@ jobs:
| select(IN($allowed[])) ]
| unique')"
echo "environments=$ENVS" >> "$GITHUB_OUTPUT"
# Smoke whatever this label actually deployed. The old filter
# named `westendli.dev`, which no PR label can select, so a
# label deploy shipped published products without ever loading
# one — that is how a broken product reached paseo.fyi unnoticed.
SMOKE_ENVS="$ENVS"
echo "smoke_environments=$SMOKE_ENVS" >> "$GITHUB_OUTPUT"
echo "ref=$PR_HEAD_SHA" >> "$GITHUB_OUTPUT"
;;
esac
Expand All @@ -82,6 +90,8 @@ jobs:

- name: Type check
run: bunx --bun turbo run typecheck
- name: Verify PolkaVM runtime assets
run: bun run check:polkavm-runtime

- name: Unit tests
run: bunx --bun turbo run test
Expand Down Expand Up @@ -161,3 +171,46 @@ jobs:
| jq -e 'type == "object" and (.attester | type == "string" and test("^0x[0-9a-fA-F]{64}$"))'
env:
DEPLOY_SITE: ${{ matrix.environment }}

product-smoke:
name: Smoke ${{ matrix.environment }} products
needs: [plan, deploy]
if: needs.plan.outputs.smoke_environments != '[]'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
environment: ${{ fromJSON(needs.plan.outputs.smoke_environments) }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ needs.plan.outputs.ref || github.sha }}

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: "1.3.13"

- run: bun install --frozen-lockfile

- name: Install product smoke browser
working-directory: apps/host
run: bunx playwright install --with-deps chromium

- name: Smoke published PolkaVM products
working-directory: apps/host
run: bun run test:smoke:products
env:
DOTLI_SMOKE_ROOT: ${{ matrix.environment }}
DOTLI_WEBGPU: "1"

# Capability coverage against the deployed host: the paired E2E suite
# only ever talks to a local build, so without this a deployment could
# serve a host the published products cannot call.
- name: Smoke published TrUAPI capabilities
# Run even when a product smoke fails: a broken published product
# and a broken host capability are separate findings.
if: ${{ !cancelled() }}
working-directory: apps/host
run: bun run test:smoke:truapi
env:
DOTLI_SMOKE_ROOT: ${{ matrix.environment }}
118 changes: 101 additions & 17 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Verify PolkaVM runtime assets
run: bun run check:polkavm-runtime

- name: Run tests
run: bunx --bun turbo run test

Expand Down Expand Up @@ -69,14 +72,26 @@ jobs:
working-directory: apps/host
env:
VITE_METRICS: "true"
run: bunx --bun playwright test --config=tests/functional/playwright.config.ts tests/functional/loading.spec.ts tests/functional/resolution.spec.ts tests/functional/navigation.spec.ts tests/functional/network-transport.spec.ts || true
run: bun run test:functional || true

- name: Apply functional threshold
working-directory: apps/host
run: |
TOTAL=$(jq '[.suites[] | recurse(.suites[]?) | .specs[]?] | length' tests/functional/results.json)
if [ "$TOTAL" -lt 12 ]; then
echo "::error::expected at least 12 tests, got $TOTAL."
TOTAL=$(jq '[.suites[] | recurse(.suites[]?) | .specs[]? | select(any(.tests[]?.results[]?; .status != "skipped"))] | length' tests/functional/results.json)
if [ "$TOTAL" -lt 11 ]; then
echo "::error::expected at least 11 executed tests, got $TOTAL."
exit 1
fi
RUNTIME_EXECUTED=$(jq '[.suites[] | recurse(.suites[]?) | .specs[]? | select(.file == "polkavm.spec.ts" or .file == "chinpokomon.spec.ts") | select(any(.tests[]?.results[]?; .status != "skipped"))] | length' tests/functional/results.json)
RUNTIME_FAILED=$(jq '[.suites[] | recurse(.suites[]?) | .specs[]? | select((.file == "polkavm.spec.ts" or .file == "chinpokomon.spec.ts") and .ok == false)] | length' tests/functional/results.json)
echo "Executed PolkaVM functional specs: $RUNTIME_EXECUTED"
echo "PolkaVM functional failures: $RUNTIME_FAILED"
if [ "$RUNTIME_EXECUTED" -lt 4 ]; then
echo "::error::expected at least 4 executed PolkaVM functional specs, got $RUNTIME_EXECUTED."
exit 1
fi
if [ "$RUNTIME_FAILED" -gt 0 ]; then
echo "::error::PolkaVM functional specs must have 0 failures"
exit 1
fi
LOADING_FAILED=$(jq '[.suites[] | recurse(.suites[]?) | .specs[]? | select(.file == "loading.spec.ts" and .ok == false)] | length' tests/functional/results.json)
Expand Down Expand Up @@ -107,24 +122,28 @@ jobs:
exit 1
fi

# E2E run of host-playground product tests against the local preview server,
# with pairing and signing handled headlessly by the truapi-host CLI from
# paritytech/host-rust-core (no Android emulator, no Maestro).
# E2E run of the pinned host-playground source against the local preview
# server. The product client and signing CLI use the same SDK as dotli;
# the independently deployed host-playground.dot can use an older wire codec.
e2e-product:
name: E2E
runs-on: ubuntu-latest
needs: unit
# Headroom over Playwright's globalTimeout (30 min) so a stuck run is
# cut off by Playwright with diagnostics, not by GHA mid-stream.
timeout-minutes: 35
# Allow source-build time plus headroom over Playwright's globalTimeout
# (30 min), so a stuck test run is cut off with Playwright diagnostics.
timeout-minutes: 60
if: ${{ github.event.sender.type != 'Bot' }}
env:
# Must match the host's `defaultNetwork()` in
# `packages/config/src/network.ts`. Setting explicitly so a host
# network bump can't silently leave the CLI on the wrong chain.
SIGNING_HOST_NETWORK: paseo-next-v2
# The product must query the same Asset Hub as the host and signing CLI.
NEXT_PUBLIC_NETWORK_GENESIS_HASH: "0x4349b00e54897e21196fd331015fc5be0f14e118beb0375ed2bb1793737bb57a"
# The CLI self-updates by default; keep CI runs deterministic.
TRUAPI_HOST_NO_UPDATE: "1"
E2E_PRODUCT_REPO: ${{ github.workspace }}/.build/e2e-host-playground
E2E_PRODUCT_URL: http://localhost:5199
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -134,14 +153,77 @@ jobs:
with:
bun-version: "1.3.13"

# Installs the current stable prebuilt binary (release pointer
# `truapi-host-cli-stable` in host-rust-core). Pin with
# TRUAPI_HOST_VERSION=x.y.z if a release ever breaks the suite.
- name: Install truapi-host CLI
# Build from the same immutable source as this branch's vendored SDK.
# Released CLI versions can lag behind the protocol used by the client.
- name: Resolve signing-host source
id: signing-host-source
run: |
set -euo pipefail
revision="$(jq -er '.upstreamRevision | select(type == "string") | select(test("^[0-9a-f]{40}$"))' vendor/truapi-host.lock.json)"
echo "revision=$revision" >> "$GITHUB_OUTPUT"
echo "Signing-host source: https://github.com/paritytech/host-rust-core/commit/$revision"

- name: Checkout signing-host source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: paritytech/host-rust-core
ref: ${{ steps.signing-host-source.outputs.revision }}
path: .signing-host-src
persist-credentials: false

# Match host-rust-core's codegen toolchains; generated Rust is not tracked.
- name: Setup nightly Rust for codegen
uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # nightly
with:
toolchain: nightly
components: rustfmt

- name: Setup stable Rust
uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # stable
with:
toolchain: stable

- name: Cache signing-host Rust build
uses: Swatinem/rust-cache@f0d9c3887740aee45f6153b24b3a6b815192ec16 # v2
with:
workspaces: .signing-host-src -> target
save-if: ${{ github.event_name == 'push' }}

- name: Setup Node for codegen
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"

- name: Checkout product fixture source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: paritytech/host-playground
ref: 63ba2274648c39ed2431b7548dcd93d50862ea9e
path: .build/e2e-host-playground
persist-credentials: false

- name: Install product fixture dependencies
working-directory: .build/e2e-host-playground
run: |
corepack enable
corepack prepare yarn@1.22.22 --activate
yarn install --frozen-lockfile

- name: Link product fixture to the pinned SDK
run: bun scripts/link-truapi-local.ts --product-vendor

- name: Generate signing-host sources
working-directory: .signing-host-src
run: |
npm ci --ignore-scripts
TRUAPI_SKIP_PACKAGE_BUILD=1 ./scripts/codegen.sh

- name: Build truapi-host CLI
working-directory: .signing-host-src
run: |
curl -fsSL https://raw.githubusercontent.com/paritytech/host-rust-core/main/scripts/truapi-host-installer.sh | bash
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
"$HOME/.local/bin/truapi-host" --version
cargo build --locked -p truapi-host-cli --bin truapi-host
echo "SIGNING_HOST_BIN=$PWD/target/debug/truapi-host" >> "$GITHUB_ENV"
./target/debug/truapi-host --version

- name: Build
env:
Expand All @@ -150,6 +232,8 @@ jobs:
# protocol/app iframes, so every test times out. deploy.yml supplies
# this from repo vars; the test build needs its own value.
VITE_NETWORKS: paseo-next-v2,previewnet
# The fixture is served through dotli's existing loopback-only proxy.
VITE_APP_DEBUG: "true"
run: bunx --bun turbo run build

# Exit code 99 from playwright = pairing/signing infrastructure down
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ node_modules/
bun.lock
tests/results/
docs/
apps/sandbox/public/polkavm-runtime/
vendor/
8 changes: 5 additions & 3 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ The active launch path is `packages/ui/src/bridge.ts`:
- calls `createIframeHost(...)` with the product URL, sandbox policy, allowed
origin, and the worker-backed provider.

Modern product frames enter the Rust core through the iframe `MessageChannel`.
The temporary Nova compatibility shim forwards legacy `window.postMessage`
frames into the same product-scoped provider.
SDK 0.16 product frames enter the Rust core through the iframe `MessageChannel`,
using wire codec 2's scoped trait, method, and message-type envelope. Legacy Nova
`window.postMessage` frames are rejected with a product-update notice rather
than forwarded into an incompatible decoder. Products must rebuild against
`@parity/truapi` 0.16 or newer and use its MessagePort transport.
Account, signing, statement-store, SSO pairing, restore, and logout are
core-owned and do not cross the JS host callback boundary as Nova-specific
routes.
Expand Down
Loading
Loading