Assets|Wallets sub-tabs, WalletConnect hero action (live src/connect pairing), per-wallet-scoped activity; swap/ASM logic extracted into src/asm-core with a standalone asm.html widget seed. Snapshots 0167-0168; wiki status to 0168. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| android | ||
| patches | ||
| public | ||
| src | ||
| test | ||
| .env.example | ||
| asm.html | ||
| BETA_TESTING.md | ||
| capacitor.config.ts | ||
| DEPLOY.md | ||
| index.html | ||
| NATIVE_BUILD.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| redeploy.sh | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
shells/app/ — Deviant wallet shell (Capacitor + Vite + React)
The production wallet shell: the four-tab CosmoGenesis IA over the existing shared
TypeScript core, running in-process, client-side, non-custodially in the WebView
(desktop browser = same engine class — build/verify here first). No core fork, no
nodejs-mobile, no IPC bridge — proven viable in snapshot 0044 via the noble crypto shim
(ADR-0023). Full brief: ../../design/CAPACITOR_HANDOFF.md.
Status — chipnet beta (snapshot 0102)
The shell is a feature-complete, installable chipnet beta (web/PWA). Onboarding,
real keystores (web + native), live balance, swap broadcast, token import, sweep, and
activity all work; production vite build is green and a 17-test vitest suite covers
keystore/registry/safety. See BETA_TESTING.md (tester runbook) and NATIVE_BUILD.md
(device build). Remaining ⬜ items are device-only or post-beta.
| Piece | State |
|---|---|
vite.config.ts (node polyfills, @core/@design, noble shim default, esnext, code-split manualChunks) |
✅ dev + vite build green, no chunk-size warning |
src/core/wallet.ts thin client |
✅ session, balance, swap plan→execute (real broadcast), BCH send, token register, history |
KeyStore — WebKeyStore (AES-GCM/PBKDF2 vault) + CapacitorKeyStore (Keychain/Keystore + biometric) |
✅ runtime-selected via Capacitor.isNativePlatform(); created wallets restore from their own seed (R-017 fixed) |
Token registry — LocalStorageTokenRegistry |
✅ persists across sessions; chipnet ASM/ASM2 auto-seeded |
Onboarding (create/restore/PIN) + loading splash + Manifesto |
✅ phone-framed tap-to-enter splash; manifesto carries to welcome |
CosmoGenesis theme + src/shell.css + PWA (manifest, sw.js, icon) |
✅ installable on Android/desktop Chrome |
Beta safety — buildInfo.ts + BetaBanner |
✅ mainnet structurally absent; persistent banner |
| Main / Assets / Artemision / Apps / Settings tabs | ✅ built (Artemision create wizard; genesis broadcast ⬜) |
| Swap (Builder → live quote → broadcast) | ✅ planSwap/executeSwap on chipnet |
| Receive (real addr + QR) / Send (BCH broadcast) / Activity / Sweep / Token import | ✅ chipnet |
Native iOS/Android packages (cap add), camera QR scan, live WalletConnect/CashConnect, genesis broadcast |
⬜ device-only / post-beta |
Run
npm install # core deps (mainnet-js/cashscript/libauth) resolve from repo root
npm run dev # Vite dev server — noble shim crypto (ADR-0023) by default
npm run build # production bundle (noble shim; esnext target)
USE_WASM=1 npm run dev # opt back into raw libauth WASM (dev only; it has a top-level await)
Crypto: the bundle replaces libauth's WASM crypto with the pure-JS @noble shim by
default (ADR-0023) — no WASM, no top-level await, bundles cleanly and runs on any engine.
The core is imported from the repo's compiled dist/ via @core; run npm run build
at the repo root first if dist/ is stale.