Skip to content

Cbh/seity contacts - #288

Merged
replghost merged 4 commits into
feat/chat-seity-profilefrom
cbh/seity-contacts
Sep 26, 2026
Merged

replghost merged 4 commits into
feat/chat-seity-profilefrom
cbh/seity-contacts

Conversation

@corey-hathaway

Copy link
Copy Markdown

Description

Seity contacts layer on top of #287. Consumes paritytech/host-rust-core#1009

  • Add "mood ring" to drawer
  • Resolve contacts reference alongside cid#key: slot → sealed record (avatar + mood) → avatar via existing path
  • Registry read through protocol worker
  • vendor rebuilt from #1009, SessionStore stores the new profile slots encrypted

Tests: turbo run typecheck lint test 39/39, pinned by Seity's contacts vector. Drawn live from a real slot on paseo-next-v2.

corey-hathaway and others added 4 commits September 26, 2026 14:28
…d record, mood ring

A `seity-contacts:v1:<lookupKey><seed>` reference names a registry slot, not
a blob, so it stays the same while the profile behind it changes. The drawer
now resolves one: read the slot from Seity's registry through raw contract
storage (no runtime call), fetch and open the sealed record through the host
preimage path, then fetch the avatar the record names as before. A bare
`cid#key` reference keeps its existing path.

The record's mood is drawn as a ring around the avatar (one WebGL program,
static fallback, still under reduced motion) and lapses after its TTL.

Pinned by Seity profile-core's contacts vector and by the registry's own
storage-layout test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The host page does not own a light client; the protocol worker does, and
the host reaches it by request, as name resolution already does. Add
`resolveSeitySlot` beside `resolveOwner` (client proxy, iframe and shared
worker handlers, request map, timeout) and have the drawer use it. The
slot version crosses as a decimal string.

Log why a drawer load failed (name and message only; nothing on that
path carries the reference), which is how this was found.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ust-core cbh/seity-contacts)

Rebuild `vendor/truapi` and `vendor/truapi-host` from host-rust-core
`298cf4286` (on #1001): `profile.disclose` / `retract` / `presentContact`,
the Chat v2 profile relay, and the `ProfileDisclosure` and
`ProfileReferencesReceived` core-storage slots. The web WASM keeps the
signing host (`--no-default-features --features wasm-signing-host`); the
lock carries the archive, client and WASM hashes of this build.

Host storage policy for the two new slots: generation-scoped in private
custody, their own local-storage keys (received references per chat
product), and encrypted at rest as secret material, since both hold
bearer capabilities.

`turbo run typecheck lint test`: 39/39.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The vendored host is built from cbh/seity-contacts, which is #1009 (stacked
on #1001).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Bundle Size Report

Chunks over 500 KB:

File Raw Brotli Gzip
host/assets/bridge.js 808.7 KB (+650.9 KB) 175.7 KB (+138.6 KB) 226.7 KB (+182.3 KB)
host/assets/truapi_provider_bg.wasm 4.25 MB 968.5 KB 1.30 MB
host/assets/truapi_server_bg.wasm 9.27 MB (+6.63 MB) 5.81 MB (+5.05 MB) 6.31 MB (+5.29 MB)
sandbox/polkavm-runtime/polkavm-browser-runtime.wasm 1.07 MB 186.3 KB 249.9 KB
Total 16.87 MB (+8.79 MB) 7.56 MB (+5.49 MB) (-55%) 8.58 MB (+5.86 MB)
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/base.js 4.7 KB 1.9 KB 2.1 KB
host/assets/blake2.js 7.3 KB (-4.4 KB) 2.6 KB (-1.6 KB) 2.9 KB (-1.8 KB)
host/assets/blake2.js 4.5 KB (-7.2 KB) 1.9 KB (-2.2 KB) 2.1 KB (-2.6 KB)
host/assets/bridge.js 808.7 KB (+650.9 KB) 175.7 KB (+138.6 KB) 226.7 KB (+182.3 KB)
host/assets/browser.js 22.9 KB 7.6 KB 8.6 KB
host/assets/chain-sync.js 3.8 KB 1.5 KB 1.7 KB (+3 B)
host/assets/client.js 13.7 KB (+1.4 KB) 4.5 KB (+448 B) 5.0 KB (+495 B)
host/assets/hex.js 160 B 160 B 160 B
host/assets/index.css 67.4 KB (+4.4 KB) 10.5 KB (+671 B) 12.2 KB (+892 B)
host/assets/index.js 309.9 KB (+120.9 KB) 83.6 KB (+33.0 KB) 100.1 KB (+39.5 KB)
host/assets/manifest.js 21.5 KB (-1.8 KB) 7.0 KB (-368 B) 7.7 KB (-413 B)
host/assets/network.js 6.8 KB (+971 B) 2.4 KB (+376 B) 2.8 KB (+425 B)
host/assets/panel.js 127.8 KB (+36.7 KB) 34.2 KB (+9.6 KB) 39.3 KB (+11.2 KB)
host/assets/proofs.js 28.9 KB (+1 B) 8.5 KB (+3 B) 9.4 KB (+1 B)
host/assets/resolve.js 161 B 161 B 161 B
host/assets/rolldown-runtime.js 901 B (+185 B) 901 B (+185 B) 901 B (+185 B)
host/assets/rpc-resolve.js 3.1 KB (+370 B) 1.3 KB (+106 B) 1.4 KB (+118 B)
host/assets/scale-ts.js 4.8 KB 2.0 KB 2.2 KB
host/assets/spans.js 2.8 KB (+373 B) 1.2 KB (+149 B) 1.4 KB (+175 B)
host/assets/src.js 80.9 KB (+144 B) 25.4 KB (+122 B) 28.4 KB (+132 B)
host/assets/styles.css 29.0 KB (+8.0 KB) 5.8 KB (+1.3 KB) 6.8 KB (+1.4 KB)
host/assets/substrate-client.js 5.8 KB 2.2 KB (+1 B) 2.5 KB (-1 B)
host/assets/truapi_provider_bg.wasm 4.25 MB 968.5 KB 1.30 MB
host/assets/truapi_server_bg.wasm 9.27 MB (+6.63 MB) 5.81 MB (+5.05 MB) 6.31 MB (+5.29 MB)
host/assets/twoX.js 2.8 KB 1023 B (+1 B) 1.1 KB (-2 B)
host/assets/utils.js 3.5 KB 1.4 KB 1.5 KB
host/assets/web.js 43.8 KB (+19.0 KB) 11.6 KB (+5.1 KB) 12.9 KB (+5.6 KB)
host/assets/worker-runtime.js 50.2 KB (+14.4 KB) 11.5 KB (+2.9 KB) 13.2 KB (+3.4 KB)
host/assets/worker-runtime.js 106 B (-35.7 KB) 106 B (-8.5 KB) 106 B (-9.8 KB)
host/assets/ws.js 26.1 KB (-1 B) 8.5 KB (+21 B) 9.3 KB (+1 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.9 KB (-67 B) 1.1 KB (-23 B) 1.3 KB (-19 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 36.4 KB (+190 B) 7.3 KB (+51 B) 9.0 KB (+81 B)
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 11.3 KB (+1.4 KB) 3.5 KB (+330 B) 4.0 KB (+379 B)
sandbox/assets/bitswap-bridge.js 1.1 KB 546 B 633 B (-1 B)
sandbox/assets/fetch.js 3.4 KB 1.2 KB (+1 B) 1.4 KB (+3 B)
sandbox/assets/index.css 67.4 KB (+4.4 KB) 10.5 KB (+671 B) 12.2 KB (+892 B)
sandbox/assets/index.js 214.5 KB (+83.1 KB) 59.1 KB (+22.5 KB) 69.2 KB (+26.5 KB)
sandbox/favicon.svg 1.8 KB 1.8 KB 1.8 KB
sandbox/index.html 2.8 KB (+56 B) 772 B (+21 B) 1.0 KB (+30 B)
sandbox/polkavm-runtime/LICENSE-MPL-2.0 16.3 KB 16.3 KB 16.3 KB
sandbox/polkavm-runtime/PolkaVM-LICENSE-APACHE 10.6 KB 10.6 KB 10.6 KB
sandbox/polkavm-runtime/PolkaVM-LICENSE-MIT 1023 B 1023 B 1023 B
sandbox/polkavm-runtime/SHA256SUMS 631 B 631 B 631 B
sandbox/polkavm-runtime/SOURCE.json 515 B 515 B 515 B
sandbox/polkavm-runtime/polkavm-browser-runtime.wasm 1.07 MB 186.3 KB 249.9 KB
sandbox/polkavm-runtime/polkavm-gpu-worker.js 67.5 KB 11.5 KB 13.4 KB
sandbox/polkavm-runtime/polkavm-worker.js 116.9 KB 18.6 KB 22.6 KB
Total 16.87 MB (+8.79 MB) 7.56 MB (+5.49 MB) (-55%) 8.58 MB (+5.86 MB)

Commit: 86199fe

@github-actions

Copy link
Copy Markdown
Contributor

⚡ Performance Report

Cold Start

Overall: 🟢 improved  |  p50: 9.87s → 9.24s (-6.4%)  |  p95: 14.61s → 9.48s (-35.1%)  |  Mann-Whitney: z=2.71 ✅ significant

Phase breakdown
Phase Base p50 PR p50 p50 Δ Base p95 PR p95 p95 Δ Verdict
End-to-end 9.87s 9.24s -628ms (-6.4%) 14.61s 9.48s -5131ms (-35.1%) 🟢 improved
Host total 6.32s 6.73s +404ms (+6.4%) 6.89s 7.11s +223ms (+3.2%) 🔴 regressed
Name resolution 6.13s 6.28s +155ms (+2.5%) 6.70s 6.71s +10ms (+0.1%) ⚪ unchanged
App total 2.73s 2.25s -481ms (-17.6%) 3.42s 2.75s -677ms (-19.8%) 🟠 uncertain

Warm Start

Overall: 🔴 regressed  |  p50: 5.22s → 8.25s (+58.0%)  |  p95: 6.90s → 9.15s (+32.5%)  |  Mann-Whitney: z=4.03 ✅ significant

Phase breakdown
Phase Base p50 PR p50 p50 Δ Base p95 PR p95 p95 Δ Verdict
End-to-end 5.22s 8.25s +3.03s (+58.0%) 6.90s 9.15s +2.24s (+32.5%) 🔴 regressed
Host total 132ms 6.25s +6.11s (+4631.1%) 161ms 6.77s +6.61s (+4102.5%) 🔴 regressed
Name resolution — 6.08s new — — — —
App total 5.07s 2.10s -2971ms (-58.6%) 6.76s 2.44s -4327ms (-64.0%) 🟢 improved

Lukewarm Start (different site, same session)

Overall: 🟢 improved  |  p50: 11.13s → 10.33s (-7.2%)  |  p95: 18.18s → 11.29s (-37.9%)  |  Mann-Whitney: z=2.57 ✅ significant

Phase breakdown
Phase Base p50 PR p50 p50 Δ Base p95 PR p95 p95 Δ Verdict
End-to-end 11.13s 10.33s -799ms (-7.2%) 18.18s 11.29s -6881ms (-37.9%) 🟢 improved
Host total 7.02s 6.74s -280ms (-4.0%) 7.92s 6.98s -943ms (-11.9%) ⚪ unchanged
Name resolution 6.44s 5.83s -613ms (-9.5%) 7.36s 6.16s -1202ms (-16.3%) 🟢 improved
App total 3.98s 3.45s -539ms (-13.5%) 4.56s 4.54s -20ms (-0.4%) 🟠 uncertain

Commit: 86199fe  |  Outliers (>2x best) discarded before stats

@replghost
replghost merged commit 180278e into feat/chat-seity-profile Sep 26, 2026
10 of 13 checks passed
@replghost
replghost deleted the cbh/seity-contacts branch September 26, 2026 20:13
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.

2 participants