From c82aad16f3494d5036bba0ed02c901db7f7dd785 Mon Sep 17 00:00:00 2001 From: Local Dev Date: Fri, 2 Oct 2026 00:15:06 +0200 Subject: [PATCH] =?UTF-8?q?fix(aegis):=200.23.0=20=E2=80=94=20chipnet=20wa?= =?UTF-8?q?llets=20were=20in=20the=20pairing=20list,=20just=20buried?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported as "WizardConnect pairing is done only via Mainnet, chipnet is not available on UI". Chipnet pairing works and is not filtered anywhere: the Connect pane reads state.wallets unfiltered, wcPairableWallets() keys only on chain/phase/eligibility, and startForWallet registers every BCH wallet whatever its network. The profile even holds a live wc:// URI against bch-chipnet-0, so a chipnet wallet has already paired. What it actually was: the picker listed wallets in registry order, and a bulk keystore import put fifteen unpairable chipnet WIF wallets ahead of the two chipnet HD wallets that pair fine. Every visible row was a greyed-out "can't pair" testnet entry, so the list read as "chipnet is unsupported" while the working options sat at positions 17 and 19 of 19. Group the select instead: "Can pair" first, "Cannot pair" after. The reasons stay visible — they were asked for, and a wallet greyed out with no explanation reads as broken — but they no longer hide the wallets that work. Only a WIF import is ineligible, because hdwalletv1 hands the dapp an xpub and one key is not a key tree. Promote to HD (0.11.0) remains the fix for those. --- bundled-addons/aegis/addon.json | 2 +- bundled-addons/aegis/panel.js | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bundled-addons/aegis/addon.json b/bundled-addons/aegis/addon.json index b074ce38..f36c65f1 100644 --- a/bundled-addons/aegis/addon.json +++ b/bundled-addons/aegis/addon.json @@ -1,7 +1,7 @@ { "id": "aegis", "name": "Aegis Wallet", - "version": "0.22.0", + "version": "0.23.0", "category": "plugin", "description": "Multi-chain wallet (BCH, BTC, TRX, ETH, SOL, SC, DGB) derived from your Theseus vault. Dapps get window.bitcoincash on .x sites; window.tronWeb / window.tronLink / window.ethereum / window.solana on any https page.", "author": "Silent Mode", diff --git a/bundled-addons/aegis/panel.js b/bundled-addons/aegis/panel.js index 39db123f..f32b409c 100644 --- a/bundled-addons/aegis/panel.js +++ b/bundled-addons/aegis/panel.js @@ -2256,18 +2256,28 @@ function renderConnectPane(bchWallets) { // Wallets with no derivable seed (WIF single-key imports) can't pair at // all, so they're disabled rather than silently failing on Connect. const pairable = readyBch.filter((w) => !w.wcBlocked); + const blocked = readyBch.filter((w) => w.wcBlocked); // Same precedence as the page-initiated pairing in index.js — the wallet // nominated for WizardConnect, else whatever the panel is showing. Two // different rules here and there is how a pairing surprises someone. const wcRole = (state && state.roles && state.roles.wizardconnect) || null; const preferId = (pairable.find((w) => w.id === wcRole) || pairable.find((w) => w.id === state.selectedWalletId) || pairable[0] || {}).id || null; - const options = readyBch.map((w) => ``).join(""); + const opt = (w) => ``; + // Pairable first, under a heading, whenever anything is blocked. In + // registry order a bulk keystore import puts fifteen unpairable WIF + // wallets ahead of the two chipnet ones that pair fine, and a list whose + // visible rows are all greyed-out testnet entries reads as "chipnet isn't + // supported" — which is not true and never was. Grouping keeps the + // reasons visible without letting them bury the working options. + const options = blocked.length + ? `${pairable.map(opt).join("")}` + + `${blocked.map(opt).join("")}` + : pairable.map(opt).join(""); // Greying an option out with "can't pair" and giving no reason anywhere on // the page reads as a broken wallet rather than a property of how it was // added. Show the reasons whenever ANY wallet is blocked — the old note // only appeared when nothing at all could pair, so a user with one good // mainnet wallet and ten WIF-imported chipnet ones saw no explanation. - const blocked = readyBch.filter((w) => w.wcBlocked); const reasons = [...new Set(blocked.map((w) => w.wcBlocked))].map(esc).join(" "); const blockedNote = !blocked.length ? ""