cipher/package.json
maverick bd112d07fe Fix: namespace encrypted store per-account so two accounts can coexist on one browser
Root cause of 'two users can't chat': all accounts on one browser shared a
single IndexedDB, so the second registration overwrote the first's Signal
identity keys, corrupting both. Verified via two-isolated-client integration
test (real crypto.js + store.js) that the protocol itself is correct.

- store.js: useAccount(username) namespaces IndexedDB as cipher:<username>;
  keys generated at registration now persist under the right account
- accounts.js: localStorage-backed account registry + active pointer
- app.js: multi-account boot/activate, account-switch/add/logout menu,
  error toasts on send/decrypt failures (no more silent failures)
- login guards against missing on-device keys (multi-device linking still TODO)
- SW cache v2->v3 + precache accounts.js

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 02:48:00 +10:00

23 lines
642 B
JSON

{
"name": "cipher",
"version": "0.1.0",
"private": true,
"description": "Cipher — end-to-end encrypted messenger (Signal Protocol) on Cloudflare",
"type": "module",
"scripts": {
"dev": "wrangler dev",
"deploy": "wrangler deploy",
"db:migrate:local": "wrangler d1 migrations apply cipher --local",
"db:migrate": "wrangler d1 migrations apply cipher --remote"
},
"dependencies": {
"hono": "^4.6.14"
},
"devDependencies": {
"@privacyresearch/libsignal-protocol-typescript": "^0.0.16",
"buffer": "^6.0.3",
"esbuild": "^0.28.1",
"fake-indexeddb": "^6.2.5",
"wrangler": "^4.96.0"
}
}