2025-10-21 - 2026-10-21
Overview
1 Release published by 1 user
Published
v0.1.0
289 Pull requests merged by 2 users
Merged
#667 fix: a V4 step that spends some of its output currency shows no Min. received (closes #574)
Merged
#666 fix: an allowance to another spender leaves no Amount figure for its token and no Min. received (closes #658)
Merged
#662 fix: with no Amount line, the takes the total adds up get lines of their own (closes #659)
Merged
#654 fix: an open popup follows a network switch the background saves (closes #650)
Merged
#661 fix: a PERMIT2_TRANSFER_FROM before a permit keeps its amount from standing as the Amount figure (closes #655)
Merged
#656 fix: a PERMIT2_PERMIT_BATCH, and a permit that cannot be read, state what they allow (closes #652)
Merged
#651 fix: a permit shows on its own lines unless its amount is the Amount figure (closes #370)
Merged
#648 fix: a balance refresh that returns after a network switch writes nothing (closes #577)
Merged
#645 fix: a swap's WETH minimum reads as ETH only when all its WETH reaches the UNWRAP_WETH (closes #642)
Merged
#644 fix: a popup save no longer undoes a network switch the background saved during it (closes #641)
Merged
#643 fix: history calls an execute or multicall a Swap only when sent to a router (closes #580)
Merged
#640 fix: WETH paid to the user before an UNWRAP_WETH reads as WETH (closes #607)
Merged
#638 fix: the Chrome layout tests and popup comments use the popup's real 396x600 size (closes #556)
Merged
#639 fix: a swap's unknown first take shows beside a PERMIT2_TRANSFER_FROM, only when the user pays it (closes #634)
Merged
#636 fix: a V3 exact-out swap step shows its tokens and amounts (closes #601)
Merged
#635 fix: TxApproval prices a site's ETH send from its exact amount on its own network (closes #614)
Merged
#626 fix: a swap split across steps the user pays for shows every amount it spends (closes #625)
Merged
#633 fix: TxApproval links addresses to the explorer of the transaction's network (closes #631)
Merged
#630 fix: transaction screens name a token from the tokens of the transaction's network (closes #629)
Merged
#627 fix: TransactionDetail reads a transaction from the Blockscout of the network it was sent on (closes #623)
Merged
#624 fix: SuccessTx and ErrorTx link to the explorer of the network the transaction was sent on (closes #622)
Merged
#620 fix: each PERMIT2_TRANSFER_FROM shows the amount it moves and where to (closes #611)
Merged
#621 fix: WaitTx and TransactionDetail use the network the transaction was sent on (closes #584)
Merged
#619 fix: a network switch in Settings updates the testnet banner at once (closes #511)
Merged
#618 fix: any token a swap leaves in the router keeps it from reading as received (closes #606)
Merged
#617 fix: refusing a From address the wallet does not hold moves nothing (closes #609)
Merged
#616 fix: each router release names and reads its own commands (closes #592)
Merged
#613 fix: the wallet's own send shows its amount to four decimal places (closes #522)
Merged
#615 fix: a balance check of another address sets no swap minimum (closes #600)
Merged
#612 fix: a step the router lets fail is marked, and a balance check it lets fail sets no minimum (closes #602)
Merged
#608 fix: a send the confirmation screen refuses moves nothing on it (closes #583)
Merged
#604 fix: the swap decoder reads who the router's transfer commands pay (closes #599)
Merged
#605 fix: a recipient warning on the confirmation screen is about the recipient on screen (closes #575)
Merged
#572 fix: tracked tokens are kept per network, and bundled picks are offered on mainnet only (closes #523)
Merged
#598 fix: the approval screen names the address a swap's output is paid to (closes #594)
Merged
#569 fix: the confirmation screen reads its balance on the network it is drawn for (closes #558)
Merged
#597 test: the popup boot in the jest suite sends no request to the internet
Merged
#587 fix: a confirmation screen drawn again keeps the network it was reviewed for (closes #586)
Merged
#591 fix: the swap decoder reads each command's type with its router's mask (closes #535)
Merged
#596 docs: the user guide says switching networks restores the last endpoints used (closes #589)
Merged
#590 fix: the delete wallet screens name the wallet's own key material (closes #529)
Merged
#588 fix: the Settings network help text says switching restores the last endpoints used (closes #513)
Merged
#579 fix: the swap summary is shown only for a transaction sent to a Universal Router (closes #520)
Merged
#582 test: no timer a popup test started fires after cleanupPopup() (closes #578)
Merged
#573 fix: a popup that opened on Welcome keeps refreshing once the first wallet is added (closes #530)
Merged
#566 fix: a V4 step of chained swap actions shows what the user receives (closes #563)
Merged
#571 fix: the recipient warning on ConfirmTx says what it checked and skips addresses holding ETH (closes #528)
Merged
#570 fix: a page whose origin has no host is never told an address by accountsChanged (closes #564)
Merged
#568 fix: a site allowed without Remember stays connected when the background worker idles (closes #526)
Merged
#567 fix: Send refuses every amount the confirmation screen would refuse (closes #532)
Merged
#565 fix: failed requests reach the page with an error code and the node's data (closes #533)
Merged
#562 fix: the first wallet's first address is active as soon as it is added (closes #512)
Merged
#550 fix: each browser-suite run builds and removes an image of its own (closes #547)
Merged
#555 fix: approval windows open as wide as the page (closes #518)
Merged
#560 fix: a request whose origin has no host is refused, not treated as a site (closes #527)
Merged
#561 fix: typed data with a missing field or a bool that is not true or false is refused (closes #552)
Merged
#553 fix: a slow answer to an approval still reaches the site (closes #540)
Merged
#537 fix: a V4 swap action not in the deployed shape is shown as not decoded (closes #358)
Merged
#531 chore: bring the token-list enrichment tooling into script/lib (closes #495)
Merged
#557 fix: estimate a request even when the site sends its gas limit (closes #554)
Merged
#536 fix: sign and export with each address's own derivation index (closes #510)
Merged
#548 fix: the connection prompt shows the shared address whole (closes #517)
Merged
#551 fix: the typed data screen shows only the message fields that are signed (closes #539)
Merged
#549 fix: the transaction detail screen decodes a token transfer against the token contract (closes #515)
Merged
#545 fix: eth_sign's warning and the README say what it signs (closes #409)
Merged
#542 fix: Sign & Send refuses a transfer reviewed on another network (closes #524)
Merged
#543 fix: use the gas limit a site sends as gas (closes #207)
Merged
#514 fix: the defective xprv wallet notice names the keys that still reach its addresses (closes #255)
Merged
#546 fix: a listed site ending in a dot gets the phishing warning (closes #534)
Merged
#521 docs: say what a closed window does to a tx or sign approval (closes #505)
Merged
#538 fix: make fmt refuses to run without the repo's own prettier (closes #509)
Merged
#544 fix: typed data for another chain cannot be signed (closes #519)
Merged
#541 fix: Chrome draws the popup's text at the 14px text-sm declares
Merged
#508 docs: a change adds no Completed Steps entry to TODO.md (closes #222)
Merged
#504 test: wait until the page shows a screen, not only until it lays out
Merged
#503 fix: switching the network in Settings tells open pages
Merged
#501 fix: only the user switches the wallet's network
Merged
#499 docs: put Sepolia in scope and write down the provider flag exception
Merged
#498 test: tighten two checks in the persisted-field harness
Merged
#496 fix: show every password error in its own line below the field
Merged
#497 docs: record the pre-1.0 security review in TODO.md
Merged
#491 chore: prune landed remote branches (closes #167)
Merged
#494 docs: README says why the wallet never clears the clipboard
Merged
#490 test: the Firefox suite tolerates no extension error
Merged
#489 chore: draw the toolbar icons in-tree with make icons
Merged
#488 docs: README end-to-end limits match what the browser suites do
Merged
#486 fix: Back from Settings never lands on Settings itself
Merged
#485 fix: discard-dist-on-failure keeps the step's status when its message cannot be written
Merged
#484 fix: Back from Settings no longer lands on a delete wallet screen left by the gear
Merged
#483 chore: script/bootstrap fails unless node finds every dependency and devDependency in package.json
Merged
#479 fix: Back from Settings no longer lands on a secret screen left by the settings gear
Merged
#482 fix: a token symbol read off a contract is never stored cut mid-emoji
Merged
#477 fix: a popup reload no longer logs the requests it cancels, except on the transaction detail and confirmation screens
Merged
#478 fix: the private key export screen opens again in the same popup session
Merged
#474 chore: re-vendor canonical files from sneak/prompts at dd4027b
Merged
#476 fix: a popup reload mid-refresh no longer logs the requests it cancels
Merged
#473 chore: pin Tailwind 4.3.1, which drops module.register()
Merged
#471 fix: make dev rebuilds dist/ on source changes
Merged
#469 chore: cap every CI job with timeout-minutes
Merged
#470 chore: drop eth_chainId and net_version from PROXY_METHODS
Merged
#467 harden: drop 'unsafe-inline' from style-src
Merged
#468 chore: drop an AI vendor's tool directory from .prettierignore
Merged
#465 test: drive WaitTx's timeout and failed-lookup exits end to end
Merged
#466 test: cover Add Token's confirm, TransactionDetail from the token screen, and the token explorer link
Merged
#464 test: cover every control that refuses a defective wallet (closes #254)
Merged
#462 test: drive the private key export screen end to end
Merged
#463 test: drive the StateRecovery screen in both browser suites
Merged
#459 chore: escape every value the views write as markup, and cut symbols on code points
Merged
#455 test: a failing e2e test leaves no fixture switch or send screen behind
Merged
#457 fix: Chrome draws the popup in its monospace font
Merged
#454 chore: remove dead exports and share copied view helpers
Merged
#453 fix: open an approval window while another one has focus (closes #290)
Merged
#452 feat: a "Max" button on the Send screen
Merged
#451 test: a token scale of zero decimals is used, not skipped
Merged
#449 test: the e2e suite waits for each save before it closes the popup
Merged
#450 fix: a change made while an earlier save is running is stored
Merged
#444 fix: open no approval window for a site-connection prompt already answered
Merged
#447 harden: lost-password confirmation refuses empty input and ignores invisible characters
Merged
#445 harden: a holders_count that is not plain digits is unknown, not read in part
Merged
#443 test: the popup boot's stand-in for filterTransactions returns the real shape
Merged
#442 chore: the native token's label follows the network
Merged
#439 fix: an open popup moves to the recovery screen when its profile becomes unreadable
Merged
#441 fix: a swap deadline later than a date can hold is stated in words
Merged
#440 fix: the swap decoder reads a V2 already-paid zero and a zero balance check as the router does
Merged
#435 harden: show a personal message's hex and its text in byte order, hidden characters marked
Merged
#438 harden: a token scale above 80 decimal places is refused as unknown
Merged
#436 harden: debug mode logs only a request's origin and JSON-RPC method
Merged
#433 harden: one connection and one signature prompt per site at a time
Merged
#434 harden: ignore a nonce the page supplies with eth_sendTransaction
Merged
#431 harden: key remembered site permissions by full origin
Merged
#432 harden: take a request's origin from the frame that sent it
Merged
#430 test: load the popup's libraries once per test file, not on every boot
Merged
#425 fix: say an unknown-scale balance the same way on Send and on confirm
Merged
#423 fix: decode Uniswap V2 exact-out swaps, input amount shown as a maximum
Merged
#427 chore: run jest in three worker processes
Merged
#424 fix: keep the dApp approval error containers to their reserved height
Merged
#422 fix: say a contract creation has no recipient instead of a blank line
Merged
#417 fix: show balances and fees below 0.000001 as nonzero on the send screens
Merged
#420 fix: keep the flash line to its one line at any message length
Merged
#421 fix: refuse an unsupported method with EIP-1193 code 4200
Merged
#419 harden: list and end site connections made without Remember in Settings
Merged
#416 harden: end a site's unremembered connection when its address or wallet is removed
Merged
#393 docs: fix stale zero claim, list what decoded approval amount lines read (closes #369)
Merged
#414 harden: warn for token-permission typed data and show the primary type ethers signs (closes #400)
Merged
#412 security: announce a fresh EIP-6963 provider UUID per page load (closes #398)
Merged
#392 fix: re-enable Confirm Delete after a delete, so a second one needs no reopen (closes #335)
Merged
#389 chore: keep the internal view id out of the release banner (closes #375)
Merged
#395 docs: a release procedure from a green main to tagged, packaged artifacts (closes #387)
Merged
#411 harden: bound the total network fee by gasLimit × fee, on both send paths (closes #399)
Merged
#394 fix: name a tracked or explorer-known token instead of "Unknown token" (closes #323)
Merged
#390 fix: say a second wallet's password is separate when one is chosen (closes #374)
Merged
#397 harden: keep the test recovery phrase out of release bundles, match committed keys by content (closes #351)
Merged
#391 fix: honour a transaction response only for a transaction approval (closes #262)
Merged
#381 fix: give every address a row of its own, so none wraps or is shortened (closes #380)
Merged
#190 milestone 1.0.0: approval-path security, build-integrity guard, e2e harness and filter coverage
Merged
#366 fix: floor the persisted fields a restore dereferences, and make each field's floor an executable claim (closes #362)
Merged
#376 fix: declare toolbar icons and ship real PNGs in both archives (closes #371)
Merged
#367 fix: store an absent explorer decimals as unknown instead of fabricating 18 (closes #349)
Merged
#368 harden: pair every swap amount with the token that supplied it
Merged
#365 harden: say a swap's input token is unknown rather than calling it ETH (closes #357)
Merged
#360 fix: version the stored profile, and give a record that cannot be read a way out (closes #311)
Merged
#356 harden: say a swap's output token is unknown rather than calling it ETH (closes #353)
Merged
#344 harden: make the background physically unable to read the shared state singleton
Merged
#352 fix: always name a swap's output token, by address when no symbol is known (closes #346)
Merged
#345 harden: resolve the swap approval screen's token scale, or refuse to format
Merged
#347 release: package the extension, pin the Chrome extension id, and prove the wallet survives a reinstall (closes #310)
Merged
#339 fix: never render a nonzero approval amount as zero (closes #322)
Merged
#341 build: remove dist/ when a release build fails (closes #333)
Merged
#338 docs: state verify-build's dist/ guarantee at the width it enforces (closes #331)
Merged
#337 fix: make saveState() a read-modify-write merge instead of a full-blob overwrite (closes #304)
Merged
#334 fix: let a user who lost the password delete the wallet, and warn before they can (closes #312)
Merged
#330 fix: verify the build against its own receipt, with the expected mode as an argument (closes #309)
Merged
#327 fix: render a hostile token symbol as text, and put a floor under the CSP (closes #307)
Merged
#319 fix: answer eth_chainId and net_version from loaded state (closes #317)
Merged
#321 fix: show the true token amount on the approval screen, or none at all (closes #306)
Merged
#313 fix: gate the chain switch and remember endpoints per network (closes #308)
Merged
#314 fix: sign the ERC-20 amount the send screen displayed (closes #305)
Merged
#301 feat: vendor and censor the phishing blocklist at build time (closes #219)
Merged
#289 fix: settle a site approval on the port that carries its teardown (closes #275)
Merged
#282 fix: answer the page when a background handler throws (closes #280)
Merged
#299 test: drive the Settings screen in a browser and guard every popup element id (closes #229)
Merged
#286 build: add ESLint to script/lint and containerize linting (closes #152)
Merged
#281 refactor: one shared extension-API module, and drive the dApp flows on Firefox (closes #153)
Merged
#296 fix: one wording for an empty password field on every screen (closes #265)
Merged
#291 build: run the browser e2e suites in CI (closes #259)
Merged
#284 fix: one transaction approval at a time, and honest copy for a nonce collision (closes #271)
Merged
#298 fix: an address holding only unpriced tokens is no longer totalled at $0.00 (closes #261)
Merged
#288 test: assert the #150 and #151 items the harness did not cover (closes #188)
Merged
#292 docs: drop the README limit the EIP-1193 code fix removed (closes #285)
Merged
#272 fix: render the view "Back" lands on after the popup is reopened (closes #268)
Merged
#278 fix: carry EIP-1193 error codes through to the page (closes #274)
Merged
#277 fix: a shared ticker no longer hides one of its two real tokens (closes #276)
Merged
#273 test: drive the EIP-1193 dApp approval round trips in the browser (closes #183)
Merged
#270 fix: judge the symbol a user sees, not the bytes a contract returns (closes #260)
Merged
#256 test: containerized Firefox end-to-end harness (closes #184)
Merged
#269 harden: verify the signed transaction against what the popup displayed (closes #216)
Merged
#266 fix: filter the restored view stack against RESTORABLE_VIEWS (closes #224)
Merged
#264 fix: one wording for a rejected password on every screen (closes #172)
Merged
#267 test: close the empty-array hole in the e2e unstubbed-request guard (closes #187)
Merged
#258 test: drive ConfirmTx in the e2e suite, gate assertion included (closes #238)
Merged
#243 fix: explain a rejected dust threshold instead of snapping back silently (closes #233)
Merged
#205 harden: verify all approval fields and make failed signing retryable (closes #174)
Merged
#240 feat: remove an address from an HD wallet, behind a confirmation (closes #162)
Merged
#257 fix: filter a fake ETH token from the balance list too (closes #235)
Merged
#249 test: cover every verify-build failure mode from make check (closes #227)
Merged
#201 fix: WaitTx timeout no longer overwrites a rendered success screen (closes #155)
Merged
#248 fix: wipe the exported private key from the DOM on leaving the screen (closes #221)
Merged
#247 fix: explain a stored non-master xprv wallet instead of throwing at signing time (closes #234)
Merged
#244 fix: treat an unreported holders_count as unknown, not as zero holders (closes #230)
Merged
#206 fix: run libsodium on WebAssembly under the extension CSP (closes #182)
Merged
#241 docs: describe the bundled token list by selection criterion, not count (closes #239)
Merged
#197 fix: count the network fee in the confirm-screen balance check (closes #154)
Merged
#208 fix: drive background refresh and phishing update from alarms (closes #158)
Merged
#226 fix: add a Settings toggle for known-symbol spoof verification (closes #176)
Merged
#214 fix: move the UTC Timestamps checkbox into the Display well (closes #212)
Merged
#232 fix: enforce the base58 checksum and reject non-master extended keys (closes #210)
Merged
#225 fix: NUL-delimit verify-build's dist walk so no path escapes the check (closes #223)
Merged
#215 feat: password-gated recovery phrase display for HD wallets (closes #161)
Merged
#228 fix: honour a dust threshold of 0 and compare addresses case-insensitively (closes #179)
Merged
#209 test: known-answer coverage for HD derivation and the vault (closes #159)
Merged
#204 chore: repo policy compliance sweep — test rerun, npx, frozen lockfile, docs (closes #166)
Merged
#196 fix: one transaction history row per value movement (closes #177)
Merged
#203 fix: correct verify-build diagnostics and close its vacuous passes (closes #180)
Merged
#200 fix: derive hasWallet from the wallet list on load (closes #195)
Merged
#217 docs: correct three README claims contradicted by the code (closes #213)
Merged
#202 docs: rebuild the README Screen Map from the code (closes #164)
Merged
#199 docs: correct docs/README.md external services and remove competitor names (closes #163)
Merged
#194 fix: repair wallet state on delete (closes #156)
Merged
#192 docs: rewrite TODO.md workflow for the branch-per-issue model on next
Merged
#178 build: assert DEBUG is off in every emitted bundle as a post-build check (closes #170)
Merged
#171 security: decrypt and sign dApp approvals in the popup (closes #157)
Merged
#175 test: cover the address-poisoning filters in transactions.js (closes #160)
Merged
#185 test: containerized Chrome end-to-end harness that drives the real popup (closes #181)
Merged
#169 security: make DEBUG a build-time flag defaulting to off (closes #149)
Merged
#145 feat: add About well to settings with build info and debug easter egg
Merged
#148 scripts-to-rule-them-all
Merged
#147 TODO
Merged
#146 fix: implement proper view navigation stack
Merged
#143 feat: show debug banner on testnet or debug mode, add TESTNET tag
Merged
#129 fix: unify address display with shared renderAddressHtml utility
Merged
#142 fix: suppress USD display on testnet networks
Merged
#141 feat: show estimated USD value for ETH in approve-tx view
Merged
#136 fix: etherscan link on address-token page goes to token-specific URL
Merged
#137 feat: add Sepolia testnet support
Merged
#118 feat: expand confirm-tx warnings — closes #114
Merged
#133 Reorder transaction detail view: txid first, logical grouping
Merged
#128 fix: correct swap display — output token, min received, from address, and amount
Merged
#130 feat: add Type field and on-chain details to transaction detail view
Merged
#120 fix: include timezone offset in all displayed timestamps (closes #116)
Merged
#126 feat: add theme setting (Light/Dark/System) with dark mode — closes #125
Merged
#124 fix: reserve space for all error/status messages — closes #123
Merged
#121 feat: speed up copy-flash timing by ~25% — follow-up to #113
Merged
#115 fix: cross-wallet-type duplicate detection — closes #111
Merged
#113 feat: add copy-flash visual feedback — closes #100
Merged
#98 feat: show red warning when sending to address with zero tx history
Merged
#53 feat: add xprv wallet import support
Merged
#102 feat: add etherscan link and click-to-copy on block number in success-tx view
Merged
#94 fix: make success-tx addresses clickable, fix USDT ETH bug, nest decoded details (closes #80)
Merged
#83 fix: replace confirm-tx password modal with inline field (closes #78)
Merged
#89 fix: disable export-privkey and delete-wallet buttons during async processing
Merged
#79 persist confirm-tx view across popup close/reopen (closes #77)
Merged
#92 fix: approve-tx/approve-sign error divs consistency with confirm-tx
Merged
#91 fix: clear password field and error in showTxApproval
Merged
#68 fix: validate destination address on send view (closes #67)
Merged
#73 fix: make token contract display on confirm-tx consistent with other views
Merged
#76 fix: show token transaction history on address-token view (closes #72)
Merged
#31 feat: add export private key from address detail view
Merged
#69 fix: use formatAddressHtml in receive view for display consistency
Merged
#52 fix: resolve token symbols from multiple sources (closes #51)
Merged
#66 fix: consistent transaction view title (closes #65)
Merged
#64 fix: show decoded swap details on success-tx view (closes #63)
Merged
#62 fix: enforce UI policies on transaction detail view (closes #59)
Merged
#61 fix: persist tx decoding across popup close/reopen (closes #60)
Merged
#57 fix: show own labelled address for swap transactions (closes #55)
Merged
#54 fix: fall back to known token list for symbol/name/decimals
Merged
#25 fix: add reverse ENS lookups for all displayed addresses (closes #22)
Merged
#24 fix: preserve ENS names on lookup failure, add debug logging (closes #22)
Merged
#30 fix: show wallet/address titles across all views (closes #26, closes #27, closes #28, closes #29)
Merged
#23 fix: show wallet name for own addresses on approve-tx view (closes #21)
Merged
#8 fix: low-severity security findings L3, L4, L5 (closes #6)
Merged
#17 fix: add fallback popup window for tx/sign approval requests (closes #4)
Merged
#10 fix: display swaps and contract calls correctly in tx history (closes #3)
Merged
#14 feat: add wallet deletion from settings (closes #13)
Merged
#15 fix: use grey well for contract address in address-token view (closes #9)
Merged
#18 fix: pass UUID approval ID as string, not parseInt (closes #4)
Merged
#11 fix: show ERC-20 contract details in address-token view (closes #9)
Merged
#7 security: fix high-severity findings from audit (closes #6)
Merged
#2 Fix all RULES.md divergences
Merged
#5 add tracked token list management to settings
2 Pull requests proposed by 1 user
Proposed
#388 milestone 1.0.0 release readiness: user-facing fixes, security review, release procedure
Proposed
#664 fix: the address screen shows a token just added at its fetched balance, not 0.0000 (closes #516)
310 Issues closed from 2 users
Closed
#574 A V4 step that spends part of a currency it bought shows the whole bought minimum as Min. received
Closed
#658 An allowance to another spender in the same transaction is not reflected in Amount or Min. received
Closed
#659 When the Amount figure is held back, the first step's stated take is shown nowhere
Closed
#650 An open popup keeps showing the previous network after the background saves a switch
Closed
#655 A PERMIT2_TRANSFER_FROM before a standing permit can move more than the Amount shows
Closed
#652 A PERMIT2_PERMIT_BATCH, or a permit that cannot be read, shows nothing of what it allows
Closed
#370 decision: a trailing PERMIT2_PERMIT replaces the swap's input side on the approval screen
Closed
#576 After a network switch, Back shows the previous network's balances and tokens on the screen beneath Settings
Closed
#577 A balance refresh in flight during a network switch writes the previous network's balances onto the new one
Closed
#642 A swap's WETH minimum reads as ETH received when part of its WETH may not reach the UNWRAP_WETH
Closed
#641 A popup save can undo a network switch the background saved while the save was in flight
Closed
#580 History labels any call named execute or multicall as a Swap, whatever address it went to
Closed
#607 WETH paid to the user before an UNWRAP_WETH is labelled ETH
Closed
#556 README and the browser layout tests say 360x600; the popup is 396px wide
Closed
#634 A PERMIT2_TRANSFER_FROM's figure can be the only one shown when the swap's first take is unknown
Closed
#637 A V3 path with bytes after its last hop names a token the router does not pay
Closed
#601 A V3_SWAP_EXACT_OUT step is named but never decoded, so its tokens show as not named in the calldata
Closed
#614 TxApproval prices a site's ETH send from the shortened amount and the active network's price
Closed
#625 A swap split across two steps the user pays for shows only the first step's amount
Closed
#628 A V4 step shows its swap action's amount, not the larger SETTLE the user pays
Closed
#631 TxApproval links addresses to the active network's explorer instead of the transaction's
Closed
#629 The calldata decoder names tokens from the active network's tokens, not the transaction's
Closed
#623 TransactionDetail reads a transaction's details from the active network's Blockscout
Closed
#622 SuccessTx and ErrorTx link to the active network's explorer instead of the transaction's
Closed
#611 The approval screen never shows how much a PERMIT2_TRANSFER_FROM moves
Closed
#584 WaitTx and TransactionDetail use the active network instead of the network the transaction was sent on
Closed
#511 Switching the network in Settings leaves the testnet banner showing the old network
Closed
#606 A swap that leaves part of the user's input in the router still reads as received
Closed
#609 The From-address refusal on the confirmation screen moves Sign & Send down
Closed
#592 The swap decoder names the older routers' NFT commands as V4 commands and decodes one as a V4 swap
Closed
#522 The wallet's own send shows its amount unformatted, unlike the approval screen
Closed
#600 A BALANCE_CHECK_ERC20 of another address's balance is shown as Min. received
Closed
#602 A swap step allowed to revert still has its minimum shown as received
Closed
#583 A refused or failed send on the confirmation screen moves the password field and Sign & Send down
Closed
#599 Tokens moved by TRANSFER, PAY_PORTION, TAKE_PORTION and the router's other transfer commands are not shown with their recipient
Closed
#575 A late recipient check can show its warning on the confirmation screen of a different recipient
Closed
#523 Tracked tokens are shared across networks, and mainnet tokens are offered and added on Sepolia
Closed
#594 The approval screen shows a swap's output as received by the user when the calldata pays it to another address
Closed
#558 A reopened confirmation screen shows the balance from before a network switch
Closed
#559 A unit test sends real requests to Blockscout
Closed
#586 A confirmation screen drawn again after a network switch signs the reviewed send on the other network
Closed
#535 The swap decoder lists an Execute Sub-Plan step as a V3 exact-out swap
Closed
#589 The user guide says switching networks resets the endpoints to their defaults; it restores the last ones used
Closed
#529 The delete wallet screens tell key and xprv wallets to rely on a recovery phrase they do not have
Closed
#513 The Settings network text says switching resets the endpoints to their defaults; it restores the last ones used
Closed
#520 Any address receiving execute() calldata is shown as a swap via the Uniswap Universal Router
Closed
#578 A flash message timer outlives a popup test and can fail another test file
Closed
#530 A popup that opened with no wallet never refreshes balances after the first wallet is added
Closed
#563 A V4 step with several swap actions shows the first one's output as what the user receives
Closed
#528 The confirmation screen says a recipient has zero transaction history when it has only never sent one
Closed
#564 A page with an opaque origin at a connected site's URL is still sent the active address
Closed
#526 A site allowed without Remember is disconnected when the background worker idles
Closed
#532 Send passes amounts such as 1e-3 to the confirmation screen, which then refuses them
Closed
#533 Failed RPC calls reach the site with no error code and without the node's revert data
Closed
#512 After the first wallet is created, no address is active until the popup is reopened
Closed
#547 fix: two browser-suite runs at once delete each other's image
Closed
#518 Approval windows are 36 pixels narrower than the page, cutting off the Reject button
Closed
#527 A page with an opaque origin is treated as a site named null
Closed
#552 Typed data can sign a bool field as the opposite of what the screen shows
Closed
#540 Is a pending approval lost when Chrome stops the idle background worker?
Closed
#358 chore: V4 struct decodes target the deployed shape, and silently stop describing swaps if periphery adds a field
Closed
#495 decision: bring the token-list enrichment tooling from f7a2437 into the repo?
Closed
#554 A site that sends its own gas limit skips the wallet's revert check
Closed
#456 Chrome draws the popup at 12px, not the 14px its text-sm declares
Closed
#510 Sending from or exporting an HD or xprv address can use another address's key
Closed
#517 The connection prompt hides the last characters of the address it will share
Closed
#539 The typed data screen lists message keys that are not signed
Closed
#515 The transaction detail screen decodes a token transfer against its recipient, naming the recipient as the token
Closed
#409 decision: eth_sign is signed as a personal message while its warning and the README describe raw-hash signing
Closed
#524 Switching network in Settings under the confirmation screen sends the transfer on the new network
Closed
#207 decision: a dApp-supplied gas limit is silently dropped, so the popup always re-estimates
Closed
#255 decision: a defective xprv wallet is told to use other software, but we hold the only key and will not export it
Closed
#534 A blocklisted site gets no phishing warning when its hostname ends in a dot
Closed
#505 stale comment: a closed signing window is rejected, not kept for the toolbar popup
Closed
#509 fix: make fmt in a fresh clone formats with whatever prettier the host has
Closed
#519 Typed data for another chain can be signed: domain.chainId is never checked against the active network
Closed
#507 defect hunt: read the signing, approval and key-handling code for correctness
Closed
#222 decision: the per-unit TODO.md entry makes every merge invalidate every open PR
Closed
#506 defect hunt: use the extension as a user would, in headless Chrome and Firefox, on test networks
Closed
#231 decision: what should the confirm screen quote as the network fee — estimate, reserve, or both?
Closed
#502 test: the browser suites can read an approval screen before the page has shown it
Closed
#500 fix: switching the network in Settings does not tell open pages (no chainChanged)
Closed
#408 decision: a connected site can switch the wallet's network with no prompt
Closed
#165 decision: Sepolia support contradicts "Non-Goals for 1.0", and isMetaMask names a competitor in shipped code
Closed
#382 Review toward 1.0: identify and file all next steps
Closed
#379 test: classes of undriven path in the persisted-field contract harness
Closed
#493 fix: password errors are still shown three different ways
Closed
#383 security: pre-1.0 review of key handling, DEBUG mode and RPC/dApp input validation
Closed
#167 chore: prune 24 stale remote feature branches
Closed
#492 docs: the README never explains why the wallet does not clear the clipboard
Closed
#487 test: the Firefox suite still tolerates an error whose cause was removed
Closed
#378 chore: the toolbar icons ship as opaque binaries with no in-tree way to regenerate them
Closed
#293 docs: the README e2e limits list omits the harness accommodation that neutralizes window.close
Closed
#481 fix: Back from Settings does nothing once when the screen under it on the Back stack is Settings itself
Closed
#342 chore: rough edges in script/discard-dist-on-failure — status swallowed when stderr is closed, silent SIGINT, and a censored-word failure wipes a good release build
Closed
#480 fix: Back onto the delete wallet screen left by the settings gear shows a password prompt that can only fail
Closed
#263 chore: script/bootstrap can report success while leaving playwright-core unlinked
Closed
#461 fix: Back onto a secret screen left by the settings gear shows a password prompt that can only fail
Closed
#458 fix: a token symbol read off a contract can be stored cut in the middle of an emoji
Closed
#475 fix: the address screen, the token screen and the new-wallet address scan log a request the popup's reload cancelled
Closed
#460 fix: the private key export screen opens only once per popup session; a second open throws
Closed
#472 Re-vendor the canonical files from sneak/prompts at dd4027b
Closed
#218 test: popup reload mid-refresh can fail the e2e run with "loadHomeTxs failed: Failed to fetch"
Closed
#237 chore: script/test-e2e emits DEP0205 module.register() deprecation warning
Closed
#355 chore: the Tailwind CLI emits a module.register() deprecation warning on every build
Closed
#332 fix: make dev is documented as watch mode but has never watched anything
Closed
#294 chore: no workflow sets timeout-minutes, so a hung browser can hold the shared runner for the 6h default
Closed
#326 chore: eth_chainId and net_version are listed in PROXY_METHODS but intercepted earlier, so both entries are dead
Closed
#328 harden: move the 39 static style attributes onto classes and drop 'unsafe-inline' from style-src
Closed
#363 chore: .prettierignore names an AI vendor tool directory
Closed
#315 test: WaitTx's timeout and consecutive-failed-lookup exit branches have no e2e coverage
Closed
#295 test: four DoD items from #150 and #151 remain uncovered after #188
Closed
#254 test: the defective-wallet UI gates have no coverage — all six can be deleted with the suite still green
Closed
#253 test: the private-key export screen has no e2e coverage, unlike the recovery-phrase screen
Closed
#361 test: the state-recovery screen has no e2e coverage, so its behaviour under the real manifest CSP is unverified
Closed
#329 chore: escaping hygiene left after #307 — a dead un-encoded explorer helper, two inconsistent bare interpolations, a UTF-16 slice
Closed
#318 test: e2e hygiene — a failing case leaves routeOpts and the popup screen dirty, cascading into unrelated failures
Closed
#418 Chrome draws the popup in the system font, not the monospace font it declares
Closed
#168 chore: remove dead exports and de-duplicate copy-pasted view helpers
Closed
#290 test: make test-e2e is flaky under host load — "the extension opened no approval window within 30000ms"
Closed
#198 feat: "send max" affordance — emptying an ETH account now requires manual arithmetic
Closed
#325 test: guard decimals:0 against the falsy trap, and de-duplicate toDecimals
Closed
#446 test: the e2e Settings round trip can close the popup before the network switch is saved, leaving the suite on Sepolia
Closed
#448 fix: a change made while an earlier save from the same page is still running is never stored
Closed
#287 flake: the Chrome e2e dApp signing prompt loses its page about one run in three under load
Closed
#336 harden: two latent gaps in the lost-password confirmation — whitespace-only name, and U+200B still untypable
Closed
#251 harden: parseHoldersCount partial-parses a malformed count into a reported low count, hiding the token
Closed
#429 test: the popup boot's stand-in for filterTransactions returns a list, so every boot fails to load transactions
Closed
#372 chore: networks.js defines nativeCurrency and nothing reads it, so Sepolia balances and fees all read "ETH"
Closed
#373 fix: a popup already open when storage becomes unreadable keeps rendering the stale profile
Closed
#437 fix: a swap deadline past the year 275760 leaves the whole swap undecoded
Closed
#415 fix: the swap decoder shows a V2 "already paid" zero as 0.0000 and lets a zero balance check erase a swap's minimum
Closed
#403 harden: personal_sign display decodes only hex and renders control and bidirectional characters verbatim, without the raw bytes
Closed
#350 harden: a token scale above ~87 makes the whole swap silently undecodable
Closed
#410 harden: runtime debug mode logs full request URLs and bodies, which can include RPC credentials
Closed
#405 harden: a page can open unbounded concurrent approval windows
Closed
#404 harden: a page-supplied transaction nonce is honoured and shown only as a bare number
Closed
#402 harden: remembered site permissions are keyed by hostname only, dropping the scheme and port
Closed
#407 harden: origin attribution falls back to the top-level tab URL and then to the page-supplied origin
Closed
#428 test: the persisted-field contract test alone takes most of make test's 30-second budget
Closed
#377 fix: an unknown-scale token reads differently on Send than on the confirmation screen, and the fee error promises a retry that cannot help
Closed
#283 Uniswap V2_SWAP_EXACT_OUT (command 0x09) is decoded by a function nothing calls
Closed
#426 chore: make test starts one jest worker per CPU core
Closed
#297 fix: the two dApp approval error containers shift 6px when an error appears
Closed
#250 fix: a contract deployment shows a blank recipient on the wait and approval screens
Closed
#343 fix: the send and send-confirm screens render a sub-1e-6 balance and fee as 0.0
Closed
#252 fix: flash messages longer than one line wrap and shift the layout, defeating the reserved-space policy
Closed
#279 fix: an unsupported method is reported to the page with no EIP-1193 code (4200)
Closed
#406 harden: a session (non-remembered) site connection cannot be revoked from the UI, and the remove-site message does nothing
Closed
#245 harden: connectedSites is never cleared for a removed address or wallet
Closed
#369 docs: README still says a genuine zero renders 0.0000, and the approval screen's refusal vocabulary is undocumented
Closed
#400 harden: typed-data signing shows no warning for allowance-granting shapes and displays a primaryType it does not enforce
Closed
#398 security: the EIP-6963 provider UUID is persisted and reused, so any site can read a stable per-install tracking identifier
Closed
#413 Run every build, test and lint step in the Dockerfiles at nice -n 19
Closed
#396 infra: the mac-studio CI runner has run out of docker subnets, so every e2e job fails before checkout
Closed
#173 decision: no browser in the agent environment, so several 1.0.0 items cannot have their DoD verified
Closed
#335 fix: Confirm Delete stays disabled after a successful wallet delete, so a second delete needs a popup reopen
Closed
#375 chore: the testnet and debug banners leak the internal view id, e.g. "[TESTNET] (approve-tx)"
Closed
#387 docs: a release procedure from a green main to tagged, packaged, distributed artifacts
Closed
#399 security: the transaction fee backstop is per-field, so the fee can reach thousands of ETH, and the wallet's own send path has no backstop at all
Closed
#323 fix: the approval screen says "Unknown token" for tokens whose symbol is already known
Closed
#374 fix: adding a second wallet silently accepts a different password, with nothing saying it is a separate one
Closed
#351 harden: the test recovery phrase ships inside the release artifacts, and the committed-key guard matches only by filename
Closed
#262 fix: an approval claimed when its window closes is orphaned, leaving the dApp promise unsettled forever
Closed
#236 harden: an oversized phishing delta erases the previously stored one, dropping to vendored-only coverage for up to 24h
Closed
#242 tokenList.js header comment says "511 tokens"; the array has 512
Closed
#246 harden: decimals || "18" collapses absent and zero if a backend ever sends numeric 0
Closed
#354 chore: a tracked token's symbol is ignored, so the approval screen says "Unknown token" for a token the user added by hand
Closed
#348 decision: who owns the Chrome CRX signing key, and does 1.0 require AMO signing for Firefox
Closed
#380 wallet view: addresses wrap and break the layout when a wallet has multiple addresses
Closed
#191 docs: TODO.md describes the old branch-from-main workflow and its Status/Next Step are stale
Closed
#362 fix: malformed allowedSites and fraudContracts entries are dereferenced without a floor
Closed
#371 fix: neither manifest declares icons, so both browsers show a generic puzzle piece
Closed
#349 fix: balances.js fabricates decimals 18 before storage, laundering a guess into both approval paths
Closed
#359 harden: a V4 step with a zero amountOutMin leaves an earlier hop's Min. received on screen
Closed
#364 harden: a zero input amount lets a later hop's figure be displayed against an earlier hop's Token In
Closed
#357 harden: the input side has the same null-means-ETH collapse — an undetermined inputToken is asserted as "ETH (native)"
Closed
#311 fix: stored state has no version and no migration, and a corrupt blob bricks the popup and every dApp call
Closed
#353 harden: a V4 swap with an undetermined output token is asserted to the user as ETH at 18 decimals
Closed
#340 harden: the swap approval screen guesses 18 decimals for any token not in the bundled list
Closed
#320 fix: a cold worker prepares a dApp transaction for the wrong chain, so every non-mainnet dApp send is refused
Closed
#324 harden: the background must stop reading the shared state singleton — one root cause, five sites, and the fixes keep adding new ones
Closed
#346 fix: a swap to a token absent from the bundled list shows no Token Out line at all
Closed
#310 release: there is no packaging, no artifact and no signing — the extension cannot be installed durably on either browser
Closed
#322 fix: a nonzero approval amount still renders as 0.0000 when it is smaller than the 4-decimal display floor
Closed
#333 build: a failed release build leaves the complete INSECURE debug bundle loadable in dist/
Closed
#331 docs: README claims verify-build covers "nothing the build did not write", which is broader than what is enforced
Closed
#304 fix: a second extension page silently deletes a wallet — saveState() is a last-writer-wins full-blob overwrite
Closed
#312 fix: a forgotten password permanently wedges the wallet — cannot delete it, cannot re-import the phrase
Closed
#303 pre-1.0 security review: key handling, DEBUG-mode policy, RPC input validation
Closed
#309 build: make build can produce an INSECURE debug bundle and verify-build certifies it green
Closed
#307 harden: a hostile ERC-20 symbol renders as live HTML in the popup — cross-origin iframe over the wallet UI
Closed
#317 fix: a cold worker answers eth_chainId and net_version from never-loaded state, reporting mainnet to a page whose user is on Sepolia
Closed
#306 fix: the dApp approval screen renders a 5,000-token transfer as "Amount 0.0000"
Closed
#316 fix: the background worker saves state it never loaded, so a chain switch wipes every wallet in storage
Closed
#308 fix: any web page can switch the network and destroy the user's custom RPC endpoint, unprompted and unconnected
Closed
#305 fix: the popup's own ERC-20 send signs an amount it never displayed (indexer decimals vs contract decimals)
Closed
#219 decision: the phishing blocklist URL embeds a competitor's org name, and its documented upstream no longer exists
Closed
#300 every unit conflicts with every other unit in TODO.md, costing a rebase cycle per merge
Closed
#302 DEP0205 module.register() deprecation warning during make build
Closed
#275 fix: approving a site connection races the popup teardown and can be recorded as a rejection
Closed
#280 fix: a throw inside handleRpc hangs the dApp's promise forever with no error
Closed
#229 test: the Settings view has no browser coverage, so a wrong element id takes the whole screen down undetected
Closed
#152 build: add ESLint to script/lint — make check cannot currently catch undefined identifiers
Closed
#153 fix: Firefox target is non-functional — Chrome callback APIs used against the promise-only browser namespace
Closed
#265 fix: the empty-password message diverges on the private key export screen
Closed
#259 build: nothing automatic ever runs the e2e suites, so every browser-level guarantee is manual-only
Closed
#271 fix: two concurrent dApp transactions are populated with the same nonce, and the second fails terminally
Closed
#261 fix: an address holding only unpriced tokens reports its total as $0.00
Closed
#186 decision: agent commits are landing under three different author identities, including yours
Closed
#188 test: assert the DoD items from #150 and #151 that the harness does not yet cover
Closed
#285 docs: README still documents the EIP-1193 code loss that #274 fixed
Closed
#268 fix: Back after reopening the popup lands on a blank screen, because goBack() never re-renders
Closed
#274 fix: EIP-1193 error codes never reach the page — a dApp cannot detect a user rejection
Closed
#276 fix: seven bundled tokens are filtered as spoofs of their own duplicate symbol
Closed
#220 blocked: no Actions runner is picking up jobs — every CI run sits queued forever
Closed
#183 test: drive the EIP-1193 dApp approval round trips in the browser harness
Closed
#260 fix: a whitespace-padded symbol bypasses the spoof filter but still displays as the real one
Closed
#184 test: containerized Firefox end-to-end harness (geckodriver, MV2 temporary add-on)
Closed
#216 harden: approval verification compares against the dApp's request, not against what the popup displayed
Closed
#224 fix: the restored viewStack can contain views the popup may not reopen onto, giving a dead-end screen
Closed
#172 fix: "Wrong password." is a sentence fragment and diverges from the other password prompts
Closed
#187 test: an empty-array POST body escapes the e2e unstubbed-request guard
Closed
#238 test: ConfirmTx has no automated coverage at all — the screen that decides what gets signed
Closed
#233 fix: the dust threshold field rejects input silently, snapping back with no explanation
Closed
#174 harden: approvalVerify does not compare chainId, nonce or fee fields; failed signing leaves an unretryable button
Closed
#162 feat: delete an address from an HD wallet (with confirmation)
Closed
#235 fix: a fake token impersonating ETH is filtered from history and send, but still shows in the balance list
Closed
#227 test: verify-build's failure modes are only ever proven by hand — make the battery a committed target
Closed
#155 fix: WaitTx 60s timeout overwrites an already-rendered success screen
Closed
#221 fix: leaving the private-key export screen leaves the private key in the DOM for the life of the popup
Closed
#234 fix: an already-imported non-master xprv wallet will throw at signing time with no explanation
Closed
#230 fix: an omitted holders_count is coerced to 0, so a legitimate token gets filtered as spam
Closed
#182 fix: libsodium WASM is refused by the extension CSP on every popup load, silently falling back to asm.js
Closed
#239 docs: the bundled token list is described as "top 250" in four places and "roughly 500" in another; it is 512
Closed
#154 fix: gas fee is excluded from the insufficient-balance check, so max-value ETH sends fail at broadcast
Closed
#158 fix: MV3 service worker termination kills the background refresh and the 24h phishing list update
Closed
#176 fix: known-symbol spoof verification has no off switch, contradicting the README's user-configurable promise
Closed
#212 fix: the UTC Timestamps checkbox sits inside the Token Spam Protection well
Closed
#210 fix: isValidXprv accepts a mistyped extended key and silently imports a different wallet
Closed
#223 fix: verify-build's dist walk is line-delimited, so a path with trailing whitespace escapes the unlisted-bundle check
Closed
#161 feat: show wallet's recovery phrase (requires password)
Closed
#179 fix: a dust threshold of 0 silently becomes 100,000 gwei, and isSpoofedSymbol is case-sensitive on the contract address
Closed
#159 test: cover wallet.js key derivation and vault.js encryption — currently zero tests on the crypto core
Closed
#166 chore: repo policy compliance sweep — test rerun pattern, yarn/npx, frozen lockfile, undocumented targets
Closed
#177 fix: every plain ERC-20 transfer produces two rows in transaction history
Closed
#180 fix: verify-build diagnostic overstates the failure, and two robustness gaps in the same script
Closed
#195 fix: loadState reads hasWallet from storage without reconciling it against wallets.length
Closed
#213 docs: three README.md claims are contradicted by the shipped code
Closed
#164 docs: README Screen Map omits three shipped screens and misdescribes four flows
Closed
#163 docs: docs/README.md names competitors and contradicts the code on external services
Closed
#156 fix: deleting the last wallet leaves hasWallet true, resets selection unconditionally, and skips the active-address broadcast
Closed
#189 TOP PRIORITY: consolidate all open PRs onto one next branch, one PR
Closed
#170 build: assert DEBUG is off in every emitted bundle as a post-build check
Closed
#157 security: the user's plaintext password crosses the extension messaging boundary during dApp approvals
Closed
#160 test: the entire address-poisoning defense in transactions.js is untested
Closed
#150 fix: AddToken screen is unreachable — ReferenceError: showView is not defined
Closed
#151 fix: TransactionDetail crashes for every ERC-20 transfer — ReferenceError: addressDotHtml is not defined
Closed
#181 test: containerized Chrome end-to-end harness that drives the real popup
Closed
#149 security: DEBUG hardcoded on — every generated recovery phrase is the public test phrase
Closed
#144 add a new well to the bottom of settings that includes application information
Closed
#134 view stack pop bug
Closed
#140 make red debug banner conditional display
Closed
#97 approve-tx view doesn't display addresses consistently
Closed
#139 usd display is still happening on main even when using testnet
Closed
#138 approve-tx transferring out ETH doesn't show the estimated value of the ETH amount
Closed
#135 special case: clicking on the etherscan link for our address on address-token should go to etherscan address-token page
Closed
#110 we need to support the sepolia testnet
Closed
#114 expand on the work in #98 to show more types of warnings in that reserved space warning element
Closed
#131 improve transaction view
Closed
#127 decoding or display error in transaction view
Closed
#95 on 'transaction' view, an erc20 transfer never actually says 'ERC20 Transfer'
Closed
#116 ISO timestamps shown do not include timezone
Closed
#125 feat: add theme setting (Light/Dark/System) with dark mode
Closed
#123 clicking "sign and send" with empty/wrong pw field violates layout shift policy
Closed
#111 adding wallet by private key doesn't check to see if the public address is already part of one of the other wallets
Closed
#100 flash messages are insufficient feedback alone on click-to-copy
Closed
#82 on 'confirm-tx', show a red warning if about to send to an address with ZERO transaction history
Closed
#20 importing existing wallet using xprv instead of mnemonic
Closed
#99 the block number on 'success-tx' should have an external link to uniswap, and should be click-to-copyable
Closed
#80 'success-tx' address display inconsistent
Closed
#87 consistency: three different error display patterns used for password validation
Closed
#78 'confirm-tx' view uses modal for password input
Closed
#86 consistency: export-privkey and delete-wallet buttons not disabled during async processing
Closed
#77 'confirm-tx' view disappears on popup close/reopen (returns to 'main')
Closed
#84 consistency: approve-tx and approve-sign password error divs missing min-height (layout shift)
Closed
#85 consistency: approve-tx password field not cleared when view is shown
Closed
#67 no validation is done on destination address when sending
Closed
#70 token contract display on 'confirm-tx' page is inconsistent with token contract display elsewhere
Closed
#72 tx history for token is missing on 'address-token' view
Closed
#19 a method of viewing an address's private key
Closed
#58 'receive' view violates address display consistency policy
Closed
#65 'transaction' view has inconsistent title
Closed
#63 for swaps, the 'success-tx' view should have a lot more data on it.
Closed
#59 on 'transaction' view, several UI policies are violated:
Closed
#60 closing and reopening popup while on 'transaction' view causes raw data and action decoding to disappear
Closed
#55 in the transaction history lists, "swap" items show un-useful address
Closed
#51 balance list on address-token for USDC shows ? for symbol
Closed
#22 reverse ens lookups don't seem to be working anymore
Closed
#26 send view: From address does not show wallet/address title
Closed
#27 txStatus view: To address does not show wallet/address title
Closed
#28 home view: tx list counterparties don't show wallet/address titles
Closed
#29 addressDetail/addressToken: tx list counterparties don't show wallet/address titles
Closed
#21 address display inconsistency on approve-tx view
Closed
#3 swaps show up as sends
Closed
#13 need a way to delete a wallet. propose options.
Closed
#9 address-token view should show contract address and ERC20 details
Closed
#4 no confirmation popup when doing a uniswap
Closed
#6 security review
Closed
#1 non-compliance with rules
333 Issues created by 1 user
Opened
#1 non-compliance with rules
Opened
#3 swaps show up as sends
Opened
#4 no confirmation popup when doing a uniswap
Opened
#6 security review
Opened
#9 address-token view should show contract address and ERC20 details
Opened
#13 need a way to delete a wallet. propose options.
Opened
#19 a method of viewing an address's private key
Opened
#20 importing existing wallet using xprv instead of mnemonic
Opened
#21 address display inconsistency on approve-tx view
Opened
#22 reverse ens lookups don't seem to be working anymore
Opened
#26 send view: From address does not show wallet/address title
Opened
#27 txStatus view: To address does not show wallet/address title
Opened
#28 home view: tx list counterparties don't show wallet/address titles
Opened
#29 addressDetail/addressToken: tx list counterparties don't show wallet/address titles
Opened
#51 balance list on address-token for USDC shows ? for symbol
Opened
#55 in the transaction history lists, "swap" items show un-useful address
Opened
#58 'receive' view violates address display consistency policy
Opened
#59 on 'transaction' view, several UI policies are violated:
Opened
#60 closing and reopening popup while on 'transaction' view causes raw data and action decoding to disappear
Opened
#63 for swaps, the 'success-tx' view should have a lot more data on it.
Opened
#65 'transaction' view has inconsistent title
Opened
#67 no validation is done on destination address when sending
Opened
#70 token contract display on 'confirm-tx' page is inconsistent with token contract display elsewhere
Opened
#72 tx history for token is missing on 'address-token' view
Opened
#77 'confirm-tx' view disappears on popup close/reopen (returns to 'main')
Opened
#78 'confirm-tx' view uses modal for password input
Opened
#80 'success-tx' address display inconsistent
Opened
#82 on 'confirm-tx', show a red warning if about to send to an address with ZERO transaction history
Opened
#84 consistency: approve-tx and approve-sign password error divs missing min-height (layout shift)
Opened
#85 consistency: approve-tx password field not cleared when view is shown
Opened
#86 consistency: export-privkey and delete-wallet buttons not disabled during async processing
Opened
#87 consistency: three different error display patterns used for password validation
Opened
#95 on 'transaction' view, an erc20 transfer never actually says 'ERC20 Transfer'
Opened
#97 approve-tx view doesn't display addresses consistently
Opened
#99 the block number on 'success-tx' should have an external link to uniswap, and should be click-to-copyable
Opened
#100 flash messages are insufficient feedback alone on click-to-copy
Opened
#110 we need to support the sepolia testnet
Opened
#111 adding wallet by private key doesn't check to see if the public address is already part of one of the other wallets
Opened
#114 expand on the work in #98 to show more types of warnings in that reserved space warning element
Opened
#116 ISO timestamps shown do not include timezone
Opened
#123 clicking "sign and send" with empty/wrong pw field violates layout shift policy
Opened
#125 feat: add theme setting (Light/Dark/System) with dark mode
Opened
#127 decoding or display error in transaction view
Opened
#131 improve transaction view
Opened
#134 view stack pop bug
Opened
#135 special case: clicking on the etherscan link for our address on address-token should go to etherscan address-token page
Opened
#138 approve-tx transferring out ETH doesn't show the estimated value of the ETH amount
Opened
#139 usd display is still happening on main even when using testnet
Opened
#140 make red debug banner conditional display
Opened
#144 add a new well to the bottom of settings that includes application information
Opened
#149 security: DEBUG hardcoded on — every generated recovery phrase is the public test phrase
Opened
#150 fix: AddToken screen is unreachable — ReferenceError: showView is not defined
Opened
#151 fix: TransactionDetail crashes for every ERC-20 transfer — ReferenceError: addressDotHtml is not defined
Opened
#152 build: add ESLint to script/lint — make check cannot currently catch undefined identifiers
Opened
#153 fix: Firefox target is non-functional — Chrome callback APIs used against the promise-only browser namespace
Opened
#154 fix: gas fee is excluded from the insufficient-balance check, so max-value ETH sends fail at broadcast
Opened
#155 fix: WaitTx 60s timeout overwrites an already-rendered success screen
Opened
#156 fix: deleting the last wallet leaves hasWallet true, resets selection unconditionally, and skips the active-address broadcast
Opened
#157 security: the user's plaintext password crosses the extension messaging boundary during dApp approvals
Opened
#158 fix: MV3 service worker termination kills the background refresh and the 24h phishing list update
Opened
#159 test: cover wallet.js key derivation and vault.js encryption — currently zero tests on the crypto core
Opened
#160 test: the entire address-poisoning defense in transactions.js is untested
Opened
#161 feat: show wallet's recovery phrase (requires password)
Opened
#162 feat: delete an address from an HD wallet (with confirmation)
Opened
#163 docs: docs/README.md names competitors and contradicts the code on external services
Opened
#164 docs: README Screen Map omits three shipped screens and misdescribes four flows
Opened
#165 decision: Sepolia support contradicts "Non-Goals for 1.0", and isMetaMask names a competitor in shipped code
Opened
#166 chore: repo policy compliance sweep — test rerun pattern, yarn/npx, frozen lockfile, undocumented targets
Opened
#167 chore: prune 24 stale remote feature branches
Opened
#168 chore: remove dead exports and de-duplicate copy-pasted view helpers
Opened
#170 build: assert DEBUG is off in every emitted bundle as a post-build check
Opened
#172 fix: "Wrong password." is a sentence fragment and diverges from the other password prompts
Opened
#173 decision: no browser in the agent environment, so several 1.0.0 items cannot have their DoD verified
Opened
#174 harden: approvalVerify does not compare chainId, nonce or fee fields; failed signing leaves an unretryable button
Opened
#176 fix: known-symbol spoof verification has no off switch, contradicting the README's user-configurable promise
Opened
#177 fix: every plain ERC-20 transfer produces two rows in transaction history
Opened
#179 fix: a dust threshold of 0 silently becomes 100,000 gwei, and isSpoofedSymbol is case-sensitive on the contract address
Opened
#180 fix: verify-build diagnostic overstates the failure, and two robustness gaps in the same script
Opened
#181 test: containerized Chrome end-to-end harness that drives the real popup
Opened
#182 fix: libsodium WASM is refused by the extension CSP on every popup load, silently falling back to asm.js
Opened
#183 test: drive the EIP-1193 dApp approval round trips in the browser harness
Opened
#184 test: containerized Firefox end-to-end harness (geckodriver, MV2 temporary add-on)
Opened
#186 decision: agent commits are landing under three different author identities, including yours
Opened
#187 test: an empty-array POST body escapes the e2e unstubbed-request guard
Opened
#188 test: assert the DoD items from #150 and #151 that the harness does not yet cover
Opened
#189 TOP PRIORITY: consolidate all open PRs onto one next branch, one PR
Opened
#191 docs: TODO.md describes the old branch-from-main workflow and its Status/Next Step are stale
Opened
#193 decision: RULES.md "Build & Workflow" still says merge to main, contradicting the branch-per-issue-onto-next model
Opened
#195 fix: loadState reads hasWallet from storage without reconciling it against wallets.length
Opened
#198 feat: "send max" affordance — emptying an ETH account now requires manual arithmetic
Opened
#207 decision: a dApp-supplied gas limit is silently dropped, so the popup always re-estimates
Opened
#210 fix: isValidXprv accepts a mistyped extended key and silently imports a different wallet
Opened
#211 decision: RULES.md states three things the code contradicts
Opened
#212 fix: the UTC Timestamps checkbox sits inside the Token Spam Protection well
Opened
#213 docs: three README.md claims are contradicted by the shipped code
Opened
#216 harden: approval verification compares against the dApp's request, not against what the popup displayed
Opened
#218 test: popup reload mid-refresh can fail the e2e run with "loadHomeTxs failed: Failed to fetch"
Opened
#219 decision: the phishing blocklist URL embeds a competitor's org name, and its documented upstream no longer exists
Opened
#220 blocked: no Actions runner is picking up jobs — every CI run sits queued forever
Opened
#221 fix: leaving the private-key export screen leaves the private key in the DOM for the life of the popup
Opened
#222 decision: the per-unit TODO.md entry makes every merge invalidate every open PR
Opened
#223 fix: verify-build's dist walk is line-delimited, so a path with trailing whitespace escapes the unlisted-bundle check
Opened
#224 fix: the restored viewStack can contain views the popup may not reopen onto, giving a dead-end screen
Opened
#227 test: verify-build's failure modes are only ever proven by hand — make the battery a committed target
Opened
#229 test: the Settings view has no browser coverage, so a wrong element id takes the whole screen down undetected
Opened
#230 fix: an omitted holders_count is coerced to 0, so a legitimate token gets filtered as spam
Opened
#231 decision: what should the confirm screen quote as the network fee — estimate, reserve, or both?
Opened
#233 fix: the dust threshold field rejects input silently, snapping back with no explanation
Opened
#234 fix: an already-imported non-master xprv wallet will throw at signing time with no explanation
Opened
#235 fix: a fake token impersonating ETH is filtered from history and send, but still shows in the balance list
Opened
#236 harden: an oversized phishing delta erases the previously stored one, dropping to vendored-only coverage for up to 24h
Opened
#237 chore: script/test-e2e emits DEP0205 module.register() deprecation warning
Opened
#238 test: ConfirmTx has no automated coverage at all — the screen that decides what gets signed
Opened
#239 docs: the bundled token list is described as "top 250" in four places and "roughly 500" in another; it is 512
Opened
#242 tokenList.js header comment says "511 tokens"; the array has 512
Opened
#245 harden: connectedSites is never cleared for a removed address or wallet
Opened
#246 harden: decimals || "18" collapses absent and zero if a backend ever sends numeric 0
Opened
#250 fix: a contract deployment shows a blank recipient on the wait and approval screens
Opened
#251 harden: parseHoldersCount partial-parses a malformed count into a reported low count, hiding the token
Opened
#252 fix: flash messages longer than one line wrap and shift the layout, defeating the reserved-space policy
Opened
#253 test: the private-key export screen has no e2e coverage, unlike the recovery-phrase screen
Opened
#254 test: the defective-wallet UI gates have no coverage — all six can be deleted with the suite still green
Opened
#255 decision: a defective xprv wallet is told to use other software, but we hold the only key and will not export it
Opened
#259 build: nothing automatic ever runs the e2e suites, so every browser-level guarantee is manual-only
Opened
#260 fix: a whitespace-padded symbol bypasses the spoof filter but still displays as the real one
Opened
#261 fix: an address holding only unpriced tokens reports its total as $0.00
Opened
#262 fix: an approval claimed when its window closes is orphaned, leaving the dApp promise unsettled forever
Opened
#263 chore: script/bootstrap can report success while leaving playwright-core unlinked
Opened
#265 fix: the empty-password message diverges on the private key export screen
Opened
#268 fix: Back after reopening the popup lands on a blank screen, because goBack() never re-renders
Opened
#271 fix: two concurrent dApp transactions are populated with the same nonce, and the second fails terminally
Opened
#274 fix: EIP-1193 error codes never reach the page — a dApp cannot detect a user rejection
Opened
#275 fix: approving a site connection races the popup teardown and can be recorded as a rejection
Opened
#276 fix: seven bundled tokens are filtered as spoofs of their own duplicate symbol
Opened
#279 fix: an unsupported method is reported to the page with no EIP-1193 code (4200)
Opened
#280 fix: a throw inside handleRpc hangs the dApp's promise forever with no error
Opened
#283 Uniswap V2_SWAP_EXACT_OUT (command 0x09) is decoded by a function nothing calls
Opened
#285 docs: README still documents the EIP-1193 code loss that #274 fixed
Opened
#287 flake: the Chrome e2e dApp signing prompt loses its page about one run in three under load
Opened
#290 test: make test-e2e is flaky under host load — "the extension opened no approval window within 30000ms"
Opened
#293 docs: the README e2e limits list omits the harness accommodation that neutralizes window.close
Opened
#294 chore: no workflow sets timeout-minutes, so a hung browser can hold the shared runner for the 6h default
Opened
#295 test: four DoD items from #150 and #151 remain uncovered after #188
Opened
#297 fix: the two dApp approval error containers shift 6px when an error appears
Opened
#300 every unit conflicts with every other unit in TODO.md, costing a rebase cycle per merge
Opened
#302 DEP0205 module.register() deprecation warning during make build
Opened
#303 pre-1.0 security review: key handling, DEBUG-mode policy, RPC input validation
Opened
#304 fix: a second extension page silently deletes a wallet — saveState() is a last-writer-wins full-blob overwrite
Opened
#305 fix: the popup's own ERC-20 send signs an amount it never displayed (indexer decimals vs contract decimals)
Opened
#306 fix: the dApp approval screen renders a 5,000-token transfer as "Amount 0.0000"
Opened
#307 harden: a hostile ERC-20 symbol renders as live HTML in the popup — cross-origin iframe over the wallet UI
Opened
#308 fix: any web page can switch the network and destroy the user's custom RPC endpoint, unprompted and unconnected
Opened
#309 build: make build can produce an INSECURE debug bundle and verify-build certifies it green
Opened
#310 release: there is no packaging, no artifact and no signing — the extension cannot be installed durably on either browser
Opened
#311 fix: stored state has no version and no migration, and a corrupt blob bricks the popup and every dApp call
Opened
#312 fix: a forgotten password permanently wedges the wallet — cannot delete it, cannot re-import the phrase
Opened
#315 test: WaitTx's timeout and consecutive-failed-lookup exit branches have no e2e coverage
Opened
#316 fix: the background worker saves state it never loaded, so a chain switch wipes every wallet in storage
Opened
#317 fix: a cold worker answers eth_chainId and net_version from never-loaded state, reporting mainnet to a page whose user is on Sepolia
Opened
#318 test: e2e hygiene — a failing case leaves routeOpts and the popup screen dirty, cascading into unrelated failures
Opened
#320 fix: a cold worker prepares a dApp transaction for the wrong chain, so every non-mainnet dApp send is refused
Opened
#322 fix: a nonzero approval amount still renders as 0.0000 when it is smaller than the 4-decimal display floor
Opened
#323 fix: the approval screen says "Unknown token" for tokens whose symbol is already known
Opened
#324 harden: the background must stop reading the shared state singleton — one root cause, five sites, and the fixes keep adding new ones
Opened
#325 test: guard decimals:0 against the falsy trap, and de-duplicate toDecimals
Opened
#326 chore: eth_chainId and net_version are listed in PROXY_METHODS but intercepted earlier, so both entries are dead
Opened
#328 harden: move the 39 static style attributes onto classes and drop 'unsafe-inline' from style-src
Opened
#329 chore: escaping hygiene left after #307 — a dead un-encoded explorer helper, two inconsistent bare interpolations, a UTF-16 slice
Opened
#331 docs: README claims verify-build covers "nothing the build did not write", which is broader than what is enforced
Opened
#332 fix: make dev is documented as watch mode but has never watched anything
Opened
#333 build: a failed release build leaves the complete INSECURE debug bundle loadable in dist/
Opened
#335 fix: Confirm Delete stays disabled after a successful wallet delete, so a second delete needs a popup reopen
Opened
#336 harden: two latent gaps in the lost-password confirmation — whitespace-only name, and U+200B still untypable
Opened
#340 harden: the swap approval screen guesses 18 decimals for any token not in the bundled list
Opened
#342 chore: rough edges in script/discard-dist-on-failure — status swallowed when stderr is closed, silent SIGINT, and a censored-word failure wipes a good release build
Opened
#343 fix: the send and send-confirm screens render a sub-1e-6 balance and fee as 0.0
Opened
#346 fix: a swap to a token absent from the bundled list shows no Token Out line at all
Opened
#348 decision: who owns the Chrome CRX signing key, and does 1.0 require AMO signing for Firefox
Opened
#349 fix: balances.js fabricates decimals 18 before storage, laundering a guess into both approval paths
Opened
#350 harden: a token scale above ~87 makes the whole swap silently undecodable
Opened
#351 harden: the test recovery phrase ships inside the release artifacts, and the committed-key guard matches only by filename
Opened
#353 harden: a V4 swap with an undetermined output token is asserted to the user as ETH at 18 decimals
Opened
#354 chore: a tracked token's symbol is ignored, so the approval screen says "Unknown token" for a token the user added by hand
Opened
#355 chore: the Tailwind CLI emits a module.register() deprecation warning on every build
Opened
#357 harden: the input side has the same null-means-ETH collapse — an undetermined inputToken is asserted as "ETH (native)"
Opened
#358 chore: V4 struct decodes target the deployed shape, and silently stop describing swaps if periphery adds a field
Opened
#359 harden: a V4 step with a zero amountOutMin leaves an earlier hop's Min. received on screen
Opened
#361 test: the state-recovery screen has no e2e coverage, so its behaviour under the real manifest CSP is unverified
Opened
#362 fix: malformed allowedSites and fraudContracts entries are dereferenced without a floor
Opened
#363 chore: .prettierignore names an AI vendor tool directory
Opened
#364 harden: a zero input amount lets a later hop's figure be displayed against an earlier hop's Token In
Opened
#369 docs: README still says a genuine zero renders 0.0000, and the approval screen's refusal vocabulary is undocumented
Opened
#370 decision: a trailing PERMIT2_PERMIT replaces the swap's input side on the approval screen
Opened
#371 fix: neither manifest declares icons, so both browsers show a generic puzzle piece
Opened
#372 chore: networks.js defines nativeCurrency and nothing reads it, so Sepolia balances and fees all read "ETH"
Opened
#373 fix: a popup already open when storage becomes unreadable keeps rendering the stale profile
Opened
#374 fix: adding a second wallet silently accepts a different password, with nothing saying it is a separate one
Opened
#375 chore: the testnet and debug banners leak the internal view id, e.g. "[TESTNET] (approve-tx)"
Opened
#377 fix: an unknown-scale token reads differently on Send than on the confirmation screen, and the fee error promises a retry that cannot help
Opened
#378 chore: the toolbar icons ship as opaque binaries with no in-tree way to regenerate them
Opened
#379 test: classes of undriven path in the persisted-field contract harness
Opened
#380 wallet view: addresses wrap and break the layout when a wallet has multiple addresses
Opened
#382 Review toward 1.0: identify and file all next steps
Opened
#383 security: pre-1.0 review of key handling, DEBUG mode and RPC/dApp input validation
Opened
#384 release: bump the version to 1.0.0 in package.json and both manifests, as the last unit of the milestone
Opened
#385 verify: a human pass against a real network with real funds before the 1.0.0 tag
Opened
#386 decision: how 1.0.0 is distributed on Firefox (signing) and on Chrome (store or CRX)
Opened
#387 docs: a release procedure from a green main to tagged, packaged, distributed artifacts
Opened
#396 infra: the mac-studio CI runner has run out of docker subnets, so every e2e job fails before checkout
Opened
#398 security: the EIP-6963 provider UUID is persisted and reused, so any site can read a stable per-install tracking identifier
Opened
#399 security: the transaction fee backstop is per-field, so the fee can reach thousands of ETH, and the wallet's own send path has no backstop at all
Opened
#400 harden: typed-data signing shows no warning for allowance-granting shapes and displays a primaryType it does not enforce
Opened
#401 decision: Argon2id runs at INTERACTIVE cost for the at-rest vault key
Opened
#402 harden: remembered site permissions are keyed by hostname only, dropping the scheme and port
Opened
#403 harden: personal_sign display decodes only hex and renders control and bidirectional characters verbatim, without the raw bytes
Opened
#404 harden: a page-supplied transaction nonce is honoured and shown only as a bare number
Opened
#405 harden: a page can open unbounded concurrent approval windows
Opened
#406 harden: a session (non-remembered) site connection cannot be revoked from the UI, and the remove-site message does nothing
Opened
#407 harden: origin attribution falls back to the top-level tab URL and then to the page-supplied origin
Opened
#408 decision: a connected site can switch the wallet's network with no prompt
Opened
#409 decision: eth_sign is signed as a personal message while its warning and the README describe raw-hash signing
Opened
#410 harden: runtime debug mode logs full request URLs and bodies, which can include RPC credentials
Opened
#413 Run every build, test and lint step in the Dockerfiles at nice -n 19
Opened
#415 fix: the swap decoder shows a V2 "already paid" zero as 0.0000 and lets a zero balance check erase a swap's minimum
Opened
#418 Chrome draws the popup in the system font, not the monospace font it declares
Opened
#426 chore: make test starts one jest worker per CPU core
Opened
#428 test: the persisted-field contract test alone takes most of make test's 30-second budget
Opened
#429 test: the popup boot's stand-in for filterTransactions returns a list, so every boot fails to load transactions
Opened
#437 fix: a swap deadline past the year 275760 leaves the whole swap undecoded
Opened
#446 test: the e2e Settings round trip can close the popup before the network switch is saved, leaving the suite on Sepolia
Opened
#448 fix: a change made while an earlier save from the same page is still running is never stored
Opened
#456 Chrome draws the popup at 12px, not the 14px its text-sm declares
Opened
#458 fix: a token symbol read off a contract can be stored cut in the middle of an emoji
Opened
#460 fix: the private key export screen opens only once per popup session; a second open throws
Opened
#461 fix: Back onto a secret screen left by the settings gear shows a password prompt that can only fail
Opened
#472 Re-vendor the canonical files from sneak/prompts at dd4027b
Opened
#475 fix: the address screen, the token screen and the new-wallet address scan log a request the popup's reload cancelled
Opened
#480 fix: Back onto the delete wallet screen left by the settings gear shows a password prompt that can only fail
Opened
#481 fix: Back from Settings does nothing once when the screen under it on the Back stack is Settings itself
Opened
#487 test: the Firefox suite still tolerates an error whose cause was removed
Opened
#492 docs: the README never explains why the wallet does not clear the clipboard
Opened
#493 fix: password errors are still shown three different ways
Opened
#495 decision: bring the token-list enrichment tooling from f7a2437 into the repo?
Opened
#500 fix: switching the network in Settings does not tell open pages (no chainChanged)
Opened
#502 test: the browser suites can read an approval screen before the page has shown it
Opened
#505 stale comment: a closed signing window is rejected, not kept for the toolbar popup
Opened
#506 defect hunt: use the extension as a user would, in headless Chrome and Firefox, on test networks
Opened
#507 defect hunt: read the signing, approval and key-handling code for correctness
Opened
#509 fix: make fmt in a fresh clone formats with whatever prettier the host has
Opened
#510 Sending from or exporting an HD or xprv address can use another address's key
Opened
#511 Switching the network in Settings leaves the testnet banner showing the old network
Opened
#512 After the first wallet is created, no address is active until the popup is reopened
Opened
#513 The Settings network text says switching resets the endpoints to their defaults; it restores the last ones used
Opened
#515 The transaction detail screen decodes a token transfer against its recipient, naming the recipient as the token
Opened
#516 After adding a token from an address, the address screen shows its balance as 0.0000 until reopened
Opened
#517 The connection prompt hides the last characters of the address it will share
Opened
#518 Approval windows are 36 pixels narrower than the page, cutting off the Reject button
Opened
#519 Typed data for another chain can be signed: domain.chainId is never checked against the active network
Opened
#520 Any address receiving execute() calldata is shown as a swap via the Uniswap Universal Router
Opened
#522 The wallet's own send shows its amount unformatted, unlike the approval screen
Opened
#523 Tracked tokens are shared across networks, and mainnet tokens are offered and added on Sepolia
Opened
#524 Switching network in Settings under the confirmation screen sends the transfer on the new network
Opened
#525 The price service refuses requests without an API key, so mainnet shows no USD prices
Opened
#526 A site allowed without Remember is disconnected when the background worker idles
Opened
#527 A page with an opaque origin is treated as a site named null
Opened
#528 The confirmation screen says a recipient has zero transaction history when it has only never sent one
Opened
#529 The delete wallet screens tell key and xprv wallets to rely on a recovery phrase they do not have
Opened
#530 A popup that opened with no wallet never refreshes balances after the first wallet is added
Opened
#532 Send passes amounts such as 1e-3 to the confirmation screen, which then refuses them
Opened
#533 Failed RPC calls reach the site with no error code and without the node's revert data
Opened
#534 A blocklisted site gets no phishing warning when its hostname ends in a dot
Opened
#535 The swap decoder lists an Execute Sub-Plan step as a V3 exact-out swap
Opened
#539 The typed data screen lists message keys that are not signed
Opened
#540 Is a pending approval lost when Chrome stops the idle background worker?
Opened
#547 fix: two browser-suite runs at once delete each other's image
Opened
#552 Typed data can sign a bool field as the opposite of what the screen shows
Opened
#554 A site that sends its own gas limit skips the wallet's revert check
Opened
#556 README and the browser layout tests say 360x600; the popup is 396px wide
Opened
#558 A reopened confirmation screen shows the balance from before a network switch
Opened
#559 A unit test sends real requests to Blockscout
Opened
#563 A V4 step with several swap actions shows the first one's output as what the user receives
Opened
#564 A page with an opaque origin at a connected site's URL is still sent the active address
Opened
#574 A V4 step that spends part of a currency it bought shows the whole bought minimum as Min. received
Opened
#575 A late recipient check can show its warning on the confirmation screen of a different recipient
Opened
#576 After a network switch, Back shows the previous network's balances and tokens on the screen beneath Settings
Opened
#577 A balance refresh in flight during a network switch writes the previous network's balances onto the new one
Opened
#578 A flash message timer outlives a popup test and can fail another test file
Opened
#580 History labels any call named execute or multicall as a Swap, whatever address it went to
Opened
#581 Addresses found by an import show 0.0000 until the next refresh when a refresh was already running
Opened
#583 A refused or failed send on the confirmation screen moves the password field and Sign & Send down
Opened
#584 WaitTx and TransactionDetail use the active network instead of the network the transaction was sent on
Opened
#585 The test suite leaves work running and needs --forceExit to finish
Opened
#586 A confirmation screen drawn again after a network switch signs the reviewed send on the other network
Opened
#589 The user guide says switching networks resets the endpoints to their defaults; it restores the last ones used
Opened
#592 The swap decoder names the older routers' NFT commands as V4 commands and decodes one as a V4 swap
Opened
#593 The erase warning on StateRecovery tells key and xprv wallets to rely on a recovery phrase they do not have
Opened
#594 The approval screen shows a swap's output as received by the user when the calldata pays it to another address
Opened
#595 Every install prints "Workspaces can only be enabled in private projects" about twenty times
Opened
#599 Tokens moved by TRANSFER, PAY_PORTION, TAKE_PORTION and the router's other transfer commands are not shown with their recipient
Opened
#600 A BALANCE_CHECK_ERC20 of another address's balance is shown as Min. received
Opened
#601 A V3_SWAP_EXACT_OUT step is named but never decoded, so its tokens show as not named in the calldata
Opened
#602 A swap step allowed to revert still has its minimum shown as received
Opened
#603 A token lookup that answers after the user left AddToken takes the popup to AddressDetail
Opened
#606 A swap that leaves part of the user's input in the router still reads as received
Opened
#607 WETH paid to the user before an UNWRAP_WETH is labelled ETH
Opened
#609 The From-address refusal on the confirmation screen moves Sign & Send down
Opened
#610 README quotes a wrong-password message the confirmation screen does not show
Opened
#611 The approval screen never shows how much a PERMIT2_TRANSFER_FROM moves
Opened
#614 TxApproval prices a site's ETH send from the shortened amount and the active network's price
Opened
#622 SuccessTx and ErrorTx link to the active network's explorer instead of the transaction's
Opened
#623 TransactionDetail reads a transaction's details from the active network's Blockscout
Opened
#625 A swap split across two steps the user pays for shows only the first step's amount
Opened
#628 A V4 step shows its swap action's amount, not the larger SETTLE the user pays
Opened
#629 The calldata decoder names tokens from the active network's tokens, not the transaction's
Opened
#631 TxApproval links addresses to the active network's explorer instead of the transaction's
Opened
#632 The bundled mainnet token list names tokens on every network
Opened
#634 A PERMIT2_TRANSFER_FROM's figure can be the only one shown when the swap's first take is unknown
Opened
#637 A V3 path with bytes after its last hop names a token the router does not pay
Opened
#641 A popup save can undo a network switch the background saved while the save was in flight
Opened
#642 A swap's WETH minimum reads as ETH received when part of its WETH may not reach the UNWRAP_WETH
Opened
#646 decision: should AutistMask run in Firefox private windows, where its pages do not share the background's lock
Opened
#647 A swap split across steps shows only the last step's minimum as Min. received
Opened
#649 A zero-minimum balance check can name its own token as Token Out
Opened
#650 An open popup keeps showing the previous network after the background saves a switch
Opened
#652 A PERMIT2_PERMIT_BATCH, or a permit that cannot be read, shows nothing of what it allows
Opened
#653 A background refresh between a Settings switch and its save can leave the old network's balance stored
Opened
#655 A PERMIT2_TRANSFER_FROM before a standing permit can move more than the Amount shows
Opened
#657 A history fetch on AddressDetail that returns after a network switch shows the previous network's transactions
Opened
#658 An allowance to another spender in the same transaction is not reflected in Amount or Min. received
Opened
#659 When the Amount figure is held back, the first step's stated take is shown nowhere
Opened
#660 A permit on the zero address reads Allowance token ETH
Opened
#663 An RPC endpoint saved in Settings while the popup follows a switch is lost, though Saved. is shown
Opened
#665 A WRAP_ETH paying another address, and the router's own ETH settled in V4, are described wrongly