deviant/shells/app
walerikus e4f46ae6b6 feat(shell): main-page redesign + ASM core extraction + WalletConnect hero
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>
2026-06-26 22:12:29 +02:00
..
android chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
patches chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
public chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
src feat(shell): main-page redesign + ASM core extraction + WalletConnect hero 2026-06-26 22:12:29 +02:00
test chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
.env.example chore: checkpoint working tree — shell Tier-B retirement + accumulated WIP 2026-06-17 01:01:37 +02:00
asm.html feat(shell): main-page redesign + ASM core extraction + WalletConnect hero 2026-06-26 22:12:29 +02:00
BETA_TESTING.md chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
capacitor.config.ts chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
DEPLOY.md chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
index.html design: refresh CosmoGenesis mockups + splash typography 2026-06-13 16:53:58 +02:00
NATIVE_BUILD.md chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
package-lock.json chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
package.json chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
README.md chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
redeploy.sh chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
tsconfig.json chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00
vite.config.ts feat(shell): main-page redesign + ASM core extraction + WalletConnect hero 2026-06-26 22:12:29 +02:00
vitest.config.ts chore: initial project baseline — full Deviant codebase under version control 2026-06-13 20:38:07 +02:00

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.