rspace-online/modules
Jeff Emmett be271de7fb feat: add Gnosis Safe + EncryptID passkey wallet abstraction
Derive a deterministic secp256k1 EOA from the passkey's PRF output via
HKDF-SHA256, enabling hardware-backed signing for x402 micropayments and
Safe treasury proposals without storing private keys.

Key changes:
- EOA key derivation with domain-separated HKDF (eoa-derivation.ts)
- Key manager integration with PRF-only EOA path (key-derivation.ts)
- Encrypted client-side wallet store for Safe associations (wallet-store.ts)
- Passkey-backed x402 signer replacing EVM_PRIVATE_KEY (passkey-signer.ts)
- Safe propose/confirm/execute proxy routes in rwallet (mod.ts)
- Wallet capability flag in JWT via users.wallet_address (server.ts)
- Payment operation permissions: x402, safe-propose, safe-execute (session.ts)

Privacy: Safe wallet associations stored client-side only (AES-256-GCM
encrypted localStorage). Server only knows user has wallet capability.

108 tests passing across 5 test suites.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:18:34 -08:00
..
rbooks feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rcal feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rcart feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rchoices feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rdata feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rdesign feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rdocs feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rfiles feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rforum feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rfunds feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rinbox Merge branch 'dev' 2026-02-28 19:51:51 -08:00
rmaps feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rnetwork feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rnotes feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rphotos feat(rphotos): fix gallery API routing and embed Immich at /album 2026-03-01 14:31:19 -08:00
rpubs feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rsocials feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rspace fix(rspace): serve canvas through renderShell like all other rapps 2026-03-01 14:55:36 -08:00
rsplat feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rswag feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00
rtrips feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rtube feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rvote feat: strip demo pages to show just the interactive component 2026-03-01 15:03:46 -08:00
rwallet feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
rwork feat: add outputPaths to module interface and browsable list pages 2026-03-01 13:55:29 -08:00