FolkJS collaborative canvas with subdomain routing for community spaces
Go to file
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
backlog chore: add backlog tasks 74-76 2026-03-01 15:04:39 -08:00
db Add rSplat module — Gaussian splat viewer with x402 gated uploads 2026-02-21 20:55:45 +00:00
docs feat: add folk-canvas shape, WS cascade enforcement, and at-rest encryption 2026-02-24 18:43:30 -08:00
lib fix: make folk-rapp header a drag handle so shapes can be grabbed 2026-03-01 18:11:30 -08:00
modules feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
public/.well-known fix: change WebAuthn RP ID from jeffemmett.com to rspace.online 2026-02-18 14:32:57 -07:00
scripts feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
server feat: add x402 test endpoint and payment test script 2026-03-02 00:28:55 -08:00
shared feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
src feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
types fix: resolve all TypeScript build errors across modules 2026-02-23 19:42:44 -08:00
website fix: mobile/touch UX for toolbar buttons and ghost tool placement 2026-03-02 12:18:07 -08:00
.dockerignore fix: make Docker build self-contained with local context 2026-02-16 18:51:24 -07:00
.gitignore refactor: rename module directories to match r-prefixed module IDs 2026-02-28 19:49:26 -08:00
Dockerfile feat: move rApp secrets to Infisical, add seed script 2026-03-01 18:06:21 -08:00
Dockerfile.encryptid Fix EncryptID Docker build to include encryptid-sdk dependency 2026-02-14 21:23:18 -07:00
MODULE_SPEC.md docs: add MODULE_SPEC.md with permission model and capabilities 2026-02-17 12:30:14 -07:00
bun.lock feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
docker-compose.encryptid.yml feat: admin dashboard with user management and delete capabilities 2026-02-28 22:30:21 -08:00
docker-compose.standalone.yml refactor: rename module directories to match r-prefixed module IDs 2026-02-28 19:49:26 -08:00
docker-compose.yml fix: remove DATABASE_URL from docker-compose, now in Infisical 2026-03-01 21:41:16 -08:00
entrypoint.sh feat: wire rspace to pull secrets from Infisical at startup 2026-02-23 19:36:27 -08:00
package-lock.json fix: switch all module shell themes from light to dark 2026-02-24 19:42:33 -08:00
package.json feat: add Gnosis Safe + EncryptID passkey wallet abstraction 2026-03-02 12:18:34 -08:00
tsconfig.json fix: resolve all TypeScript build errors across modules 2026-02-23 19:42:44 -08:00
vite.config.ts refactor: rename module directories to match r-prefixed module IDs 2026-02-28 19:49:26 -08:00