Two regressions in 0.26.0. The PIN was still asked after the wallet had painted. pinGateOnLoad() ran after render() and was not awaited, so the interface appeared — balances and all — and the pad then opened on top of a panel the user could already read. It is now awaited before the first render, and `pinGateBlocked` keeps the chrome hidden for as long as the PIN is owed: render() returns early into a closed door, state pushes cannot paint around it, and Settings is covered too (unlike the vault lock, where Settings must stay reachable to create a PIN in the first place, here it would just be a way around the gate). Cancelling leaves the door shut with a retry rather than falling through to an open wallet. The pad threw digits away mid-entry. render() fires on every state push — balance polls fire it every couple of seconds — and renderLockScreen() rebuilt body.innerHTML unconditionally, replacing the pad and its buffer under the user's fingers. The reset was timed to the poll, not to the keypress count, which is why it looked like "after two digits". All three branches are now keyed on body.dataset.mode and rebuild only when the mode actually changes; the master-password and first-run forms had the same defect and were erasing half-typed input the same way. Also: every pad was wired through getElementById, so two pads alive at once (a load gate plus a transaction gate) were duplicate ids and the second setupPinPad bound the first pad's buttons. All four are now scoped to their own container, only one PIN prompt can be open at a time, and setupPinPad carries a note saying why it must never be handed a global lookup.
29 lines
1.1 KiB
JSON
29 lines
1.1 KiB
JSON
{
|
|
"id": "aegis",
|
|
"name": "Aegis Wallet",
|
|
"version": "0.26.1",
|
|
"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",
|
|
"icon": "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none'%3E%3Cpolygon points='16,2 28,9 28,23 16,30 4,23 4,9' fill='%230a0a0d' stroke='%23D6FF3D' stroke-width='1.6' stroke-linejoin='round'/%3E%3Ccircle cx='16' cy='16' r='4.5' fill='none' stroke='%23D6FF3D' stroke-width='1.4'/%3E%3Ccircle cx='16' cy='16' r='1.6' fill='%23D6FF3D'/%3E%3C/svg%3E",
|
|
"main": "index.js",
|
|
"updateURL": "https://navigate.st/bns/theseus.x/extensions/aegis/updates.json",
|
|
"capabilities": [
|
|
"sidebar-panel",
|
|
"vault-derive",
|
|
"page-inject",
|
|
"approval-modal",
|
|
"scan-page",
|
|
"open-tab"
|
|
],
|
|
"absorbs": [
|
|
"bchwallet",
|
|
"siawallet"
|
|
],
|
|
"page-inject": {
|
|
"preload": "wallet-inject.js",
|
|
"origins": [
|
|
"https://*/*"
|
|
]
|
|
}
|
|
}
|