Files
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

288 lines
6.1 KiB
JSON

{
"$schema": "https://luxwallet.org/schema/chains.v1.json",
"version": 1,
"chains": [
{
"id": "lux-c-mainnet",
"name": "Lux C-Chain",
"family": "evm",
"evmChainId": 96369,
"networkId": 96369,
"mainnet": true,
"testnet": false,
"rpcRoute": "96369",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "lux-c-testnet",
"name": "Lux C-Chain Testnet",
"family": "evm",
"evmChainId": 96368,
"networkId": 96368,
"mainnet": false,
"testnet": true,
"rpcRoute": "96368",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "lux-dex",
"name": "Lux DEX Chain",
"family": "evm",
"evmChainId": 96370,
"networkId": 96370,
"mainnet": true,
"testnet": false,
"rpcRoute": "96370",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "zoo-mainnet",
"name": "Zoo",
"family": "evm",
"evmChainId": 200200,
"networkId": 200200,
"mainnet": true,
"testnet": false,
"rpcRoute": "200200",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "ZOO",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "zoo-testnet",
"name": "Zoo Testnet",
"family": "evm",
"evmChainId": 200201,
"networkId": 200201,
"mainnet": false,
"testnet": true,
"rpcRoute": "200201",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "ZOO",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "hanzo-mainnet",
"name": "Hanzo",
"family": "evm",
"evmChainId": 36963,
"networkId": 36963,
"mainnet": true,
"testnet": false,
"rpcRoute": "36963",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "AI",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "hanzo-testnet",
"name": "Hanzo Testnet",
"family": "evm",
"evmChainId": 36964,
"networkId": 36964,
"mainnet": false,
"testnet": true,
"rpcRoute": "36964",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "AI",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "spc-mainnet",
"name": "Sparkle Pony",
"family": "evm",
"evmChainId": 36911,
"networkId": 36911,
"mainnet": true,
"testnet": false,
"rpcRoute": "36911",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "SPC",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "spc-testnet",
"name": "Sparkle Pony Testnet",
"family": "evm",
"evmChainId": 36910,
"networkId": 36910,
"mainnet": false,
"testnet": true,
"rpcRoute": "36910",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "SPC",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "pars-mainnet",
"name": "Pars",
"family": "evm",
"evmChainId": 494949,
"networkId": 494949,
"mainnet": true,
"testnet": false,
"rpcRoute": "494949",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "PARS",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "pars-testnet",
"name": "Pars Testnet",
"family": "evm",
"evmChainId": 7071,
"networkId": 7071,
"mainnet": false,
"testnet": true,
"rpcRoute": "7071",
"bip44": {
"coinType": 60,
"path": "m/44'/60'/0'/0/0"
},
"nativeAsset": {
"symbol": "PARS",
"decimals": 18
},
"builderStatus": "ready"
},
{
"id": "lux-x-mainnet",
"name": "Lux X-Chain",
"family": "utxo",
"networkId": 1,
"mainnet": true,
"testnet": false,
"rpcRoute": "X",
"bip44": {
"coinType": 9000,
"path": "m/44'/9000'/0'"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 9
},
"builderStatus": "todo"
},
{
"id": "lux-p-mainnet",
"name": "Lux P-Chain",
"family": "platform",
"networkId": 1,
"mainnet": true,
"testnet": false,
"rpcRoute": "P",
"bip44": {
"coinType": 9000,
"path": "m/44'/9000'/0'"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 9
},
"builderStatus": "todo"
},
{
"id": "lux-q-mainnet",
"name": "Lux Q-Chain",
"family": "pqevm",
"networkId": 1,
"mainnet": true,
"testnet": false,
"rpcRoute": "Q",
"bip44": {
"coinType": 9000,
"path": "m/44'/9000'/0'"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 18
},
"builderStatus": "todo"
},
{
"id": "lux-z-mainnet",
"name": "Lux Z-Chain",
"family": "zk",
"networkId": 1,
"mainnet": true,
"testnet": false,
"rpcRoute": "Z",
"bip44": {
"coinType": 9000,
"path": "m/44'/9000'/0'"
},
"nativeAsset": {
"symbol": "LUX",
"decimals": 18
},
"builderStatus": "todo"
}
]
}