Ship an official IndexedDB-backed StorageProvider so browser-based Shade
consumers persist identity, prekeys, sessions, retired identities,
peer-verification state and stream-resume rows across tab refresh and
browser restart. Closes the gap that forced browser apps onto
storage:"memory" (regenerated identity each load, orphaned device
records server-side).
- New package @shade/storage-indexeddb (4.3.0): full StorageProvider
conformance, schema v1, idb-backed; bumpPeerIdentityVersion is wrapped
in a single readwrite IDB transaction (atomic, vs SQLite's
read-then-upsert race).
- @shade/sdk resolveStorage() accepts { type: 'indexeddb', dbName? } via
dynamic import (lazy, optional dep — same pattern as
@shade/storage-postgres). Named StorageSpec type now reused by
ResolvedConfig.
- Tests: 16 new tests in shade-storage-indexeddb (StorageProvider
surface + peer-verifications + full E2EE conversation surviving a
simulated tab reload). Run on fake-indexeddb.
- Lockstep version bump 4.2.1 → 4.3.0 across all 25 packages.
- Publish scripts updated to include the new package.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 lines
573 B
JSON
25 lines
573 B
JSON
{
|
|
"name": "@shade/widgets",
|
|
"version": "4.3.0",
|
|
"type": "module",
|
|
"main": "src/index.ts",
|
|
"types": "src/index.ts",
|
|
"dependencies": {
|
|
"@shade/recovery": "workspace:*",
|
|
"@shade/sdk": "workspace:*",
|
|
"@shade/streams": "workspace:*",
|
|
"@shade/transfer": "workspace:*"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "^18.0.0 || ^19.0.0",
|
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"happy-dom": "^15.11.7",
|
|
"react": "^19.2.5",
|
|
"react-dom": "^19.2.5"
|
|
}
|
|
}
|