diff --git a/bundled-addons/aegis/addon.json b/bundled-addons/aegis/addon.json
index 7a96b815..84f46b6d 100644
--- a/bundled-addons/aegis/addon.json
+++ b/bundled-addons/aegis/addon.json
@@ -1,7 +1,7 @@
{
"id": "aegis",
"name": "Aegis Wallet",
- "version": "0.9.3",
+ "version": "0.9.4",
"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.html b/bundled-addons/aegis/panel.html
index 4a7901fd..f4be4724 100644
--- a/bundled-addons/aegis/panel.html
+++ b/bundled-addons/aegis/panel.html
@@ -453,9 +453,6 @@
.wstrip .warow .wact { background: transparent; border: 0; color: var(--dim); cursor: pointer;
padding: 2px 5px; border-radius: 4px; font-size: 12.5px; line-height: 1; }
.wstrip .warow .wact:hover { color: var(--acid, #d6ff3d); background: rgba(255,255,255,.06); }
- /* Destructive strip action (remove wallet). Stays quiet until hovered so
- a row of icons doesn't read as a row of warnings. */
- .wstrip .wact.wactdel:hover { color: var(--danger, #f6768a); background: rgb(from var(--danger, #f6768a) r g b / .12); }
/* Per-address asset list (0.8.8). The count chip expands the row into a
nested list of what that ONE address holds beyond the native coin. */
.wstrip .waassets { background: rgba(255,255,255,.06); border: 0; color: var(--dim); cursor: pointer;
diff --git a/bundled-addons/aegis/panel.js b/bundled-addons/aegis/panel.js
index b839239b..ce8b70cb 100644
--- a/bundled-addons/aegis/panel.js
+++ b/bundled-addons/aegis/panel.js
@@ -895,29 +895,6 @@ function aegisAlert(message, opts) {
});
}
-// Shared remove-wallet flow, used by the strip's ๐ buttons and the coin
-// drilldown. Confirms first, then unlinks. On-chain funds are untouched โ
-// this only drops Aegis's record of the wallet.
-async function removeWalletWithConfirm(id) {
- const w = (state?.wallets || []).find((x) => x.id === id);
- if (!w) return false;
- if (w.isDefault || w.isLegacy) {
- await aegisAlert("This is the default wallet โ it holds legacy funds and can't be removed.", { title: "Can't remove", icon: "๐" });
- return false;
- }
- const ok = await aegisConfirm({
- title: `Remove "${w.label}"?`,
- danger: true,
- confirmLabel: "Remove wallet",
- body: `On-chain funds stay exactly where they are โ this only unlinks the wallet from Aegis.
You can add it back later on the same coin + network to derive the same addresses ${w.kind === "imported" ? "(or re-import it, since this one was imported)" : "from your vault seed"}.`,
- });
- if (!ok) return false;
- state = await S.invoke("removeWallet", { id });
- settingsFilled = false;
- render();
- return true;
-}
-
// Import modal โ M.1 UX. Paste mnemonic + path OR WIF, choose network + label
// + category. Backend derives cashaddr and stores signer material in
// wallet-imports.enc (design ยง3.2). Modal is a plain overlay div injected
@@ -2230,12 +2207,15 @@ function renderWalletStrip() {
// and opened the global Settings tab โ the same destination for every
// coin, so it read as a per-coin control that wasn't one. Removing a
// wallet is the action people actually wanted there.
- const editAttr = `data-wedit="${esc(walletId)}"`;
+ // Same single-โฏ shape as the drilldown row: one control for "change
+ // this wallet", opening the manage modal that already holds rename,
+ // derivation path and remove. 0.9.3 merged the drilldown but left
+ // this row with the old โ + ๐ pair, so the two views disagreed.
const activeW = gw.find((w) => w.id === walletId);
const canRemove = !(activeW?.isDefault || activeW?.isLegacy);
- const removeBtn = canRemove
- ? ``
- : `๐`;
+ const rowMenu = canRemove
+ ? ``
+ : `๐`;
rows.push(`