Files
desktop/apps/hanzo-desktop/playwright.deep.config.ts
e7547de725 feat(desktop): shared NetworkSwitcher + WalletMenu — the ONE hanzo.network standard (#29)
* wip(desktop): GPU-node connect (gpu.rs/useGpuConnect/hanzo-auth) + luxwallet start + brand assets

* feat(desktop): native omnichain post-quantum Lux Wallet (node-independent)

Mirror of the live fix in hanzoai/gui pkgs/ai (@hanzo/ai) applied to this
repo's pre-convergence frontend tree. Replaces the hanzo-node-backed crypto
wallet — which couldn't create/show a wallet without a connected node — with a
self-contained stack under apps/hanzo-desktop/src/lib/lux-wallet:

- luxfi/crypto WASM (real FIPS-204 ML-DSA-65 + secp256k1 + keccak); EVM keys via
  BIP-44 keys.deriveSecp256k1 (bit-identical to ethers/MetaMask), PQ identity
  via keys.serviceIdentity. Secrets sealed in OS keychain, never plaintext.
- create / import / list / reveal / balance / send across the 11 ready EVM
  chains (@luxwallet/chains + /rpc); non-EVM X/P/Q/Z marked "coming soon".
- Sign-In-With-Wallet: /v1/iam/web3/nonce -> CAIP-122 -> EIP-191 sign ->
  /v1/iam/web3/verify (@luxwallet/connect + @luxfi/crypto).
- local-HD-PQ default; MPC / Safe selectable (coming soon).

Wiring: rewrite pages/crypto-wallet.tsx onto the store; node-independent /wallet
route + "Sign in with Wallet" on quick-connection; drop dead wallets-context.
MIT/BSD deps vendored under apps/hanzo-desktop/vendor.

NOTE: this app now renders @hanzo/ai (main.tsx), so the shipping wallet fix
lands via hanzoai/gui; this mirror keeps the repo's own tree consistent.

* feat(desktop): the ONE network/wallet standard — shared NetworkSwitcher + WalletMenu

Aligns the desktop onto the shared hanzo.network model (@hanzo/ui/network +
@hanzo/ui/wallet from @hanzo/[email protected] — same standard as the hanzo
CLI and console):

- lib/network.ts: ONE place composing the brand network list (hanzo →
  canonical mainnet/testnet/devnet/local envs; zoo/lux → brand mainnet)
  into the shared selected-network store.
- Sidebar footer mounts <NetworkSwitcher/> + <WalletMenu/> (menuSide=top);
  wallet auto-provisions the PQ HD account via the lux-wallet adapter
  (keychain-sealed secrets; backup stays on the crypto-wallet page).
- Selected network drives endpoints: lux-wallet brandRpcConfig gateway +
  rpc override, defaultChainId, and useChainBalance now follow the
  selection (switch env → every chain/cloud call repoints).
- styles.css: semantic token aliases + @source for the shared components.
- tsconfig: moduleResolution bundler (exports-aware; tsc clean).
- package.json: declare @hanzo/ai (was undeclared — npm install pruned it
  and broke main.tsx) + @hanzo/ui alias.

tsc 0 errors; vite build green; vitest 81/81.

* docs(LLM.md): the network/wallet standard — seams + gotchas

* chore(desktop): bump @hanzo/ui-shadcn 5.7.3 -> 5.7.4 (genesis-canonical chain IDs)

Picks up the corrected network set (testnet 36962, devnet 36964, local
1337 @ :9630/v1/bc/C/rpc). tsc 0; vite build green.

---------

Co-authored-by: hanzo-dev <[email protected]>
2026-07-08 09:12:15 -07:00

29 lines
884 B
TypeScript

import { defineConfig } from '@playwright/test';
import { detectChromium, launchArgs } from './e2e-tests/deep/support/chromium';
// Deep E2E: self-serves the built dist/ and seeds past the onboarding +
// node-health gates (see e2e-tests/deep/support/app-fixture.ts). No native
// .app / Tauri runtime, no external webServer — runnable headless in CI.
export default defineConfig({
testDir: './e2e-tests/deep',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 1 : 0,
workers: 2,
reporter: 'line',
timeout: 60_000,
expect: { timeout: 15_000 },
use: {
trace: 'on-first-retry',
screenshot: 'only-on-failure',
launchOptions: { executablePath: detectChromium(), args: launchArgs },
},
projects: [
{
name: 'chromium',
use: { browserName: 'chromium', viewport: { width: 1280, height: 832 } },
},
],
});