Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
fc2df9d
feat(truapi): add the PeerTransport host service
replghost Sep 26, 2026
81021f4
refactor(truapi): move PeerTransport to wire trait 23
replghost Sep 26, 2026
cb395a9
Merge feat/pvm-peer-transport (#1010) into the Seity layer for deploy…
replghost Sep 26, 2026
f32dd56
Merge feat/pvm-peer-transport (#1010): PeerTransport on wire trait 23
replghost Sep 26, 2026
4f5a750
feat(truapi): grant PeerTransport by the JamPeers runtime permission
replghost Sep 27, 2026
e7dbb0a
Merge feat/pvm-peer-transport (#1010): JamPeers runtime permission
replghost Sep 27, 2026
8e4521b
fix(truapi): bound PeerTransport dials and honour CANCEL
replghost Sep 27, 2026
379c413
Merge feat/pvm-peer-transport (#1010): bounded, cancellable dials
replghost Sep 27, 2026
ab023e5
test(truapi-host): count the JamPeers mock permission arm
replghost Sep 27, 2026
50284f9
refactor(truapi): rename PeerTransport to JamPeerTransport
replghost Sep 27, 2026
c85c26b
Merge feat/pvm-peer-transport (#1010): rename to JamPeerTransport
replghost Sep 27, 2026
585054c
Merge feat/pvm-app-runtime (#540): no-std import and clippy fix
replghost Sep 27, 2026
4d639f9
Merge feat/chat-seity-profile: forward the #540/#1001 CI fixes
replghost Sep 27, 2026
5e60196
Merge feat/pvm-peer-transport: forward the #540/#1001 CI fixes
replghost Sep 27, 2026
593c2be
Merge branch 'refresh/1001-021' into refresh/1011-021
replghost Sep 27, 2026
6026aac
Merge branch 'refresh/1001-021' into refresh/1011-021
replghost Sep 27, 2026
45dd2c2
Merge feat/chat-seity-profile (#1001): release the wallet lease befor…
replghost Sep 27, 2026
64f0a96
Merge branch 'renum/1001' into renum/1011
replghost Sep 28, 2026
7144fed
Merge feat/pvm-app-runtime (#540): SDK 0.21 refresh
replghost Sep 28, 2026
3c2f8f2
Merge feat/pvm-peer-transport (#1010: SDK 0.21 refresh) into the Seit…
replghost Sep 28, 2026
5bee953
refactor(truapi): move JamPeerTransport to wire trait 111
replghost Sep 28, 2026
0e07295
Merge feat/pvm-peer-transport (#1010): JamPeerTransport on wire trait…
replghost Sep 28, 2026
e8ca333
Merge feat/chat-seity-profile (#1001): profile disclosure consent
replghost Sep 28, 2026
2f1d9c8
Merge feat/chat-seity-profile (#1001): placed contact avatars
replghost Sep 28, 2026
0b95759
Merge feat/chat-seity-profile (#1001): Chat state migration
replghost Sep 28, 2026
e9d3ac0
Merge feat/chat-seity-profile (#1001): Profile on wire trait 69
replghost Sep 28, 2026
f46e726
Merge feat/chat-seity-profile (#1001): relay on ready and on share ch…
replghost Sep 28, 2026
63cca3a
Merge updated host base
replghost Sep 28, 2026
de8f000
Merge updated Seity host base
replghost Sep 28, 2026
ef98193
Merge updated JamPeerTransport base
replghost Sep 28, 2026
52a0b1b
Merge updated Seity host base
replghost Sep 28, 2026
1b0adea
Merge updated Seity host base
replghost Sep 29, 2026
67156fe
feat(truapi-server): serve JamPeerTransport natively over JAMNP-S QUIC
replghost Sep 29, 2026
4db1b3d
Merge feat/pvm-peer-transport (#1010): native JamPeerTransport
replghost Sep 29, 2026
5c1b378
Merge light-client CLI base into feat/jam-peer-transport-on-seity
replghost Sep 29, 2026
372d696
fix(truapi): pin distinct-serial PolkaJAM WebTransport certificates
replghost Sep 29, 2026
4d52f5c
Merge feat/pvm-peer-transport (#1010): distinct-serial WebTransport c…
replghost Sep 29, 2026
f2838ac
Merge refreshed host base into JAM peer transport
replghost Sep 29, 2026
b054b1e
Merge commit 'a1ab7cb45' into HEAD
replghost Sep 29, 2026
a34eb5a
Merge commit '6898a7f95' into HEAD
replghost Sep 29, 2026
6e6c9dd
Regenerate peer contract against unified host and current primitives
replghost Sep 29, 2026
746d86e
Merge commit '50beeb41d85871f476ea6281e32f8cdfc74d08b3' into HEAD
replghost Sep 29, 2026
6064bd8
Merge commit '6e6c9ddfc373572ba501b9064245f5718adee52b' into HEAD
replghost Sep 29, 2026
b12df65
Merge commit '131f5a37e4ca5a6d276806cab912102b08b9f062' into HEAD
replghost Sep 29, 2026
c73e072
Merge commit '522e14465' into HEAD
replghost Sep 29, 2026
b64a288
Merge commit '2b5556cc22884658839a45c0b2db7ec3b013cbd9' into HEAD
replghost Sep 29, 2026
d24817f
Merge commit 'c73e072c96cff7d363af9a61e378ee22621e9f5b' into HEAD
replghost Sep 29, 2026
981ac6d
Merge commit 'f9d72df5e' into HEAD
replghost Sep 29, 2026
f11ed90
Merge commit 'b1ca53eb023f96265792b29a38b00775a9b6384a' into HEAD
replghost Sep 29, 2026
598e293
Merge commit '981ac6d6c' into HEAD
replghost Sep 29, 2026
c2d7499
Merge commit 'e73014d21dcab5064b3484a9d599310fa523ef2d' into HEAD
replghost Sep 29, 2026
746e8d8
Merge commit '5f777e6a575a17c66532c53a7135dcca62d7136c' into HEAD
replghost Sep 29, 2026
3e2b0bf
Merge commit 'c2d749991617f154662dd426aaa08948717f19b9' into HEAD
replghost Sep 29, 2026
7ce9951
Merge Seity behavioral qualification into combined host
replghost Sep 29, 2026
334cdca
chore(stack): integrate Seity payload export repair
replghost Sep 29, 2026
7f952cf
fix(ci): retain iOS test failure diagnostics
replghost Sep 29, 2026
d43460d
chore(stack): integrate peer iOS diagnostic capture
replghost Sep 29, 2026
94234df
chore(stack): integrate Chat and Seity durable schema
replghost Sep 29, 2026
651bf27
refactor(ios): share permission presentation across consent and settings
replghost Sep 29, 2026
08a08fb
Merge own profile status, presentation and avatar slot into feat/jam-…
replghost Sep 29, 2026
e5889c8
Merge commit 'a802b5249' into HEAD
replghost Sep 29, 2026
3ed8a3c
Merge commit 'e4f657dfe' into HEAD
replghost Sep 29, 2026
accfa94
Merge commit 'f194f2e6f' into HEAD
replghost Sep 29, 2026
7d44bab
Merge commit '3ed8a3c2d' into HEAD
replghost Sep 29, 2026
4a9a390
Merge remote-tracking branch 'origin/feat/pvm-app-runtime' into HEAD
replghost Sep 29, 2026
6516f36
Merge remote-tracking branch 'origin/feat/chat-seity-profile' into HEAD
replghost Sep 29, 2026
b38c7e4
Merge remote-tracking branch 'origin/feat/pvm-peer-transport' into HEAD
replghost Sep 29, 2026
c296469
Merge remote-tracking branch 'origin/feat/chat-seity-profile' into HEAD
replghost Sep 30, 2026
f3c5540
Merge remote-tracking branch 'origin/feat/chat-seity-profile' into HEAD
replghost Sep 30, 2026
af087f7
Merge remote-tracking branch 'origin/feat/chat-seity-profile' into HEAD
replghost Sep 30, 2026
2e6b0cd
Merge commit 'd155c1474f8dce3bdca63637acee078afc84574b' into HEAD
replghost Sep 30, 2026
242f057
Merge commit '510b84fe46f34f742276412d34d61a7f068ef4a8' into HEAD
replghost Sep 30, 2026
a45d63a
Merge commit '2e6b0cdc1ca967cfa2637db68e957dc487609a68' into HEAD
replghost Sep 30, 2026
f18d4c8
Merge commit '953519aa65f02412ae487ce2356d04ed56b5622d' into HEAD
replghost Sep 30, 2026
b153f61
Merge commit '3d057d5de00751ff6c882c301434e64cb88f4930' into HEAD
replghost Sep 30, 2026
4b8a264
Merge commit 'f18d4c8ea676c034704026de7644fbba0d12e0d7' into HEAD
replghost Sep 30, 2026
51caee8
Scope web product callbacks to their execution on a shared native host
replghost Oct 1, 2026
9088433
Merge commit 'f18d4c8ea676c034704026de7644fbba0d12e0d7' into HEAD
replghost Oct 1, 2026
8786806
Merge commit 'a4c2dd7ab45c7ac15b1cf7522553e9cd825a10b9' into HEAD
replghost Oct 1, 2026
7d93943
Merge refreshed PolkaVM base into native peer transport
replghost Oct 1, 2026
a207fc2
Merge refreshed Seity source stack into JAM integration
replghost Oct 1, 2026
7a2d845
Rename native JAM live fixture to JAM-TEST-INSTANCE
replghost Oct 1, 2026
a4d0857
Merge refreshed Peer stack and JAM-TEST-INSTANCE naming into JAM
replghost Oct 1, 2026
877556f
Fix refreshed SQLite dependency lock disambiguation
replghost Oct 1, 2026
ba68f33
Merge commit '1709e630c87d336e30632799f587d0bd09e1a80d' into HEAD
replghost Oct 1, 2026
648e0c7
Merge commit 'a1f6a2ab41f807ffd5af55e09a10b0b20a39f84c' into HEAD
replghost Oct 1, 2026
b6f4998
Merge commit 'ba68f33fdec18d977ec1cc08e7ab086595ae70fb' into HEAD
replghost Oct 1, 2026
79cd7de
Merge commit '9dcf66544e02b3bb3994e05f3a1400738f742331' into HEAD
replghost Oct 1, 2026
867cc8f
Merge commit '734e5adeda9e35a1aad8c2000cc70737729e7c99' into HEAD
replghost Oct 1, 2026
0b91e84
Merge commit '79cd7de8a7ccb4ef27e81ae158f6e7cf9aedffd6' into HEAD
replghost Oct 1, 2026
16bd707
Merge commit 'ed934876624df524a9ad99ee241a094258696aee' into HEAD
replghost Oct 1, 2026
e51563a
Merge commit '978b7d3e46b92d8983e733a3f39b2862968d0ef5' into HEAD
replghost Oct 1, 2026
78237df
Merge commit 'ec91cdc01daa7ff57af61cb1f943d28a1036c9c6' into HEAD
replghost Oct 1, 2026
e39fd35
Merge commit 'aa72ef6cdf852ada92d268557bd9f16d2c0816e1'; commit '7823…
replghost Oct 1, 2026
3cc0e5c
Merge commit 'e0a8d59a07e72c4c7f36e6bab6c1db34c06d35dc' into HEAD
replghost Oct 1, 2026
7e65d2e
Merge commit '94f597becce31682a374e4aabc546e4a9ad61103'; commit '3cc0…
replghost Oct 1, 2026
ab46811
Merge commit 'a572456b90dc6932476f2fb5a71985fbe9fcbd84' into HEAD
replghost Oct 2, 2026
a629846
Merge commit '3a364f1157177f7d1ae4839241488d5c9276ed1d' into HEAD
replghost Oct 2, 2026
95d0c32
Merge commit 'ab46811b1e02469119a94706d7b4a01c9fc57839' into HEAD
replghost Oct 2, 2026
6a9de94
Merge feat/pvm-app-runtime into feat/pvm-peer-transport
replghost Oct 2, 2026
77cff12
Merge feat/chat-seity-profile into feat/jam-peer-transport-on-seity
replghost Oct 2, 2026
8ae436a
Merge feat/pvm-peer-transport into feat/jam-peer-transport-on-seity
replghost Oct 2, 2026
4500922
Merge Seity test-host synchronization into feat/jam-peer-transport-on…
replghost Oct 2, 2026
1f754fc
Merge runtime subtree synchronization into feat/pvm-peer-transport
replghost Oct 2, 2026
9ee870a
Merge Seity runtime synchronization into feat/jam-peer-transport-on-s…
replghost Oct 2, 2026
934b55b
Merge peer transport runtime synchronization into feat/jam-peer-trans…
replghost Oct 2, 2026
b1ffb99
Merge Seity allowance cache regression fix into feat/jam-peer-transpo…
replghost Oct 2, 2026
0fabda4
Merge runtime snapshot fixture correction into feat/pvm-peer-transport
replghost Oct 2, 2026
9b4c982
Merge Seity snapshot fixture correction into feat/jam-peer-transport-…
replghost Oct 2, 2026
4af893e
Merge peer transport snapshot fixture correction into feat/jam-peer-t…
replghost Oct 2, 2026
8f4c8eb
Merge branch 'work/seity-contact-audiences' into work/contacts-host-f…
replghost Oct 2, 2026
7430877
Merge frozen runtime main update into feat/pvm-peer-transport
replghost Oct 2, 2026
884ec25
Merge frozen Seity main update into feat/jam-peer-transport-on-seity
replghost Oct 2, 2026
276bf5e
Merge frozen transport main update into feat/jam-peer-transport-on-seity
replghost Oct 2, 2026
83f42ce
Merge incoming Contacts integration into candidate transport integration
replghost Oct 2, 2026
78052ce
Merge updated candidate Seity into candidate transport integration
replghost Oct 2, 2026
e5f34f7
Merge locale and contact drawer prerequisites into peer-transport int…
replghost Oct 2, 2026
5bd95e2
Merge final Seity locale catalog into peer-transport integration
replghost Oct 2, 2026
08b3146
Merge generator fixture compile fix into peer-transport integration
replghost Oct 2, 2026
891ca7c
merge: forward pinned-nightly Locale formatting into native 1011
replghost Oct 2, 2026
06e15bb
Merge qualified runtime updates from #1001 into #1011
replghost Oct 3, 2026
c923399
Merge qualified runtime updates from #540 into #1010
replghost Oct 3, 2026
f7ac212
Merge refreshed peer Locale runtime from #1010 into #1011
replghost Oct 3, 2026
cc54b34
feat(notifications): integrate canonical receiving on PVM host stack
replghost Oct 4, 2026
682d9c0
fix(receiving): fence closed products on account replacement
replghost Oct 4, 2026
8b039c4
chore(receiving): regenerate the PVM client contract
replghost Oct 4, 2026
df91f8f
fix(host): handle an unavailable HOP callback
replghost Oct 4, 2026
3c3c620
fix(receiving): align generated storage and native callback contracts
replghost Oct 4, 2026
367d76a
fix: scope browser receiving synchronization to each authority
replghost Oct 5, 2026
7579617
merge: integrate background receiving into native qualification candi…
replghost Oct 5, 2026
2c87cf1
fix(truapi): scope authority revocation and withdraw cancelled approvals
replghost Oct 5, 2026
6e93054
fix(contacts): distinguish directory interruption from revoked authority
replghost Oct 5, 2026
8676393
style(core): format receiving and callback generation sources
replghost Oct 5, 2026
6e30c50
Merge notification activation and bootstrap fixes into JamPeerTransport
replghost Oct 5, 2026
eb0b8d2
Merge notification activation and bootstrap fixes from Seity into int…
replghost Oct 5, 2026
5421b72
Merge updated JamPeerTransport notification base into integration
replghost Oct 5, 2026
7daf4d5
Merge approved notification base compile correction into JamPeerTrans…
replghost Oct 5, 2026
4687eaa
Merge approved Seity notification correction into integration
replghost Oct 5, 2026
9e09597
Merge approved JamPeerTransport notification correction into integration
replghost Oct 5, 2026
ef5612d
Merge approved base notification client catalog into JamPeerTransport
replghost Oct 5, 2026
c55e663
Merge approved Seity notification client catalog into integration
replghost Oct 5, 2026
795a408
Merge approved JamPeerTransport notification client catalog into inte…
replghost Oct 5, 2026
4991d81
chore(core): preserve receiving API under strict lint
replghost Oct 5, 2026
1570d36
Merge updated integration base while preserving scoped identity autho…
replghost Oct 5, 2026
894881a
chore: format inherited notification wire scope coverage
replghost Oct 5, 2026
1f1443b
Merge pull request #1212 from paritytech/fix/scoped-authority-approva…
replghost Oct 6, 2026
8cc1d62
fix(receiving): preserve clicks when unchanged watches are republished
replghost Oct 6, 2026
e4d0a15
Merge approved cold-notification activation fix into receiving integr…
replghost Oct 6, 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
3 changes: 3 additions & 0 deletions .changeset/pvm-host-runtime-authority.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ full-source declaration snapshots, while retaining deterministic code generation
Preserve incoming-payment ownership and native Coinage ledger records when
migrating either the historical Chat store or current main's iOS store to the
combined model. Retain both historical model variants for migration detection.

Centralize iOS permission presentation for consent prompts and app settings,
preserving the separate Chat and genesis-scoped JAM peer disclosures.
19 changes: 19 additions & 0 deletions .changeset/pvm-jam-peer-transport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"@parity/truapi": minor
"@parity/truapi-host": minor
---

Add the `JamPeerTransport` host service (trait 111): host-terminated JAMNP-S QUIC or WebTransport streams to JAM peers
with `dial`, `open`, `send`, `recv`, `reset`, `close` and `events`. Access is the runtime permission
`RemotePermission::JamPeers { genesis }`, appended as variant 5: before a `dial` connects, the host checks the
product's stored decision, prompts when it is undetermined and persists the answer per product and genesis. App
manifests declare nothing. The trait's default implementation returns `NotGranted`, and the browser core keeps it.
Ships the browser WebTransport adapter, whose `createJamPeerTransportSession({ authorize })` asks once per genesis per
session, and the deterministic PolkaJAM certificate-hash derivation under `@parity/truapi/jam-peer-transport`. Native
Rust product runtimes (iOS, Android, CLI) serve the service over JAMNP-S QUIC with the same session rules, and the iOS
and Android hosts show their remote-permission prompt for `JamPeers`.

The browser adapter pins two certificates per validity period: PolkaJAM's stock serial-0 certificate and one whose
serial is derived from the peer's P-256 key and period (first 8 bytes of SHA-256(compressed key ‖ period as big-endian
u64), top bit cleared, 1 if zero). Firefox's NSS rejects a second certificate with the same issuer and serial, so with
stock nodes it reaches one validator; nodes that use the derived serial are all reachable, and stock nodes keep working.
6 changes: 6 additions & 0 deletions .changeset/scoped-authority-approval-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@parity/truapi": patch
"@parity/truapi-host": patch
---

Product clearing revokes only that product's in-flight signing, resource allocation, identity disclosure and contact authority, while account replacement or disconnection revokes all prior authority. Resource reviews and allowance-cache commits revalidate their product and account. Identity disclosure retains identity-owner checks and lookup-error propagation, and contact selection and labels retain independent directory-mutation fences. Cancelled CLI signing requests withdraw their permission and signature reviews, including on product disconnection, without authorizing late answers or losing the command draft.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ generated from [Conventional Commits](https://www.conventionalcommits.org/).
- migrate the generic runtime and Rust client to SDK 0.16's scoped wire codec 3;
the handshake requires an exact codec match, so product guests built against
an earlier codec must be rebuilt
- Code-generation verification checks deterministic protocol and host output instead of pinning implementation-text snapshots; generated bindings are compiled and exercised against the runtime.

### Added

Expand All @@ -36,9 +37,20 @@ generated from [Conventional Commits](https://www.conventionalcommits.org/).
subscription interrupts, and host-initiated Renderer subscription codecs.
- Generate complete App, Widget, Worker, and Worker-only method catalogs from
the canonical protocol schema.
- Host-owned background notification receiving on Notifications actions 2 through 7, with durable consent, revision-fenced watches and receipts, authenticated delivery and activation, and resident native/WASM transport hooks. Receipt results distinguish confirmed OS display from an outstanding display claim; explicit display failures release the claim. Hosts without an adapter explicitly report unsupported.
- Generic Ed25519 notification assertions in bounded standard Gordian envelopes, with opaque byte-leaf digest witnesses and exact chain/channel plus authenticated topic filtering, exposed through `@parity/truapi/notification-envelope`.
- A wallet-free, single-writer browser receiving runtime and immutable execution-scope dispatch. Receiving consent lasts only through its approved watch expiry (at most 30 days); transport leases may renew within that bound without product UI. Native/provider adapters and real-device qualification remain host responsibilities; resident hooks do not imply delivery after a desktop host fully quits.
- Browser host account selection fences all persisted product authorities, including closed products. Explicit logout durably revokes every authority before identity removal; ordinary client closure retains consent. Receiving storage uses reserved key 20 without colliding with the PolkaVM runtime's existing keys.
- Foreground receipts distinguish confirmed OS display from an unresolved durable display reservation. Hosts confirm successful presentation or cancel a known failure; an unknown outcome after restart remains pending until event expiry and must not trigger a competing OS alert. Provider-rendered APNs alerts remain advisory until authenticated local processing.

### Fixed

- Browser receiving synchronizes and revokes each authority scope independently, so account or verified-artifact replacement cannot leave the current enrollment in a revoke/register loop.
- Message catch-up receipts preserve an already queued notification activation until the product explicitly acknowledges its sequence.
- Generated WASM bridges preserve owned `String` parameters instead of emitting unsized `str` arguments.
- Generated host tagged-union codecs preserve explicit SCALE discriminants, including receiving storage slot 20 when slots 13–19 are absent from the generic runtime.
- Swift's unsupported receiving callbacks use the generated native rejection case.

- persist typed Statement Store allowance approvals and denials per product and
account selector for implicit, idempotent provisioning; explicit requests for
additional quota retain per-operation confirmation and increase semantics.
Expand Down
173 changes: 171 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ console_error_panic_hook = "0.1"
convert_case = "0.6"
crossterm = "0.29"
derive_more = { version = "2", default-features = false }
ed25519-dalek = { version = "2", default-features = false, features = ["alloc"] }
flate2 = "1"
frame-metadata = { version = "23", default-features = false }
fs2 = "0.4"
Expand Down
Loading
Loading