Commit Graph

2 Commits

Author SHA1 Message Date
7b2ff5445b fix(android): make Docker APK build pass with Capacitor config, synced lockfile, and JDK 21
- Track frontend/capacitor.config.json with appId/appName/webDir for Capacitor Android setup
- Unignore frontend/capacitor.config.json so config is committed with the project
- Update Android Docker builder to use JDK 21 (required by current Capacitor/Gradle toolchain)
- Switch Docker CMD to JSON-array form for safer signal handling
- Refresh frontend package-lock.json to match Capacitor and crypto dependencies required by npm ci
2026-03-10 14:37:58 +01:00
e785179ee4 feat(android): add Capacitor APK build with pure-JS crypto layer
Introduces a platform abstraction so the React app runs on both
Electron (desktop) and Android (WebView via Capacitor) without any
Python backend:

- frontend/src/services/crypto-service.js: pure-JS reimplementation of
  all address types (P2PKH, P2WPKH, P2TR, P2PK, P2SH multisig) and HD
  wallet generation (BIP-32/39/44/49/84/86) using @noble/curves,
  @noble/hashes, @scure/bip32, @scure/bip39, bech32, bs58.
  AES-256-CBC encryption via Web Crypto API, Electrum-compatible key
  derivation (SHA256(SHA256(password))).
- frontend/src/services/api.js: detects Electron (window.electronAPI)
  vs Android (Capacitor Filesystem) at runtime; components are
  unchanged in behaviour.
- frontend/src/components/{HDWallet,SingleAddress,WalletViewer}.jsx:
  import api instead of window.electronAPI directly.
- frontend/package.json: @noble/*, @scure/*, bech32, bs58,
  @capacitor/core, @capacitor/filesystem, @capacitor/cli,
  @capacitor/android; cap:sync script.
- frontend/capacitor.config.json: appId com.walletgen.app, webDir dist.
- contrib/android/Dockerfile + build.sh: JDK 17, Android SDK 34,
  cap add/sync, ./gradlew assembleDebug; outputs wallet-gen-debug.apk
2026-03-10 14:09:58 +01:00