2026-08-08 - 2026-08-15

Overview

53 Active Pull Requests
90 Active Issues
Excluding merges, 1 author has pushed 1 commit to main and 52 commits to all branches. On main, 7 files have changed and there have been 207 additions and 21 deletions.

45 Pull requests merged by 1 user

Merged #272 fix: render the view "Back" lands on after the popup is reopened (closes #268) 2026-08-14 06:14:10 +02:00

Merged #278 fix: carry EIP-1193 error codes through to the page (closes #274) 2026-08-12 13:47:34 +02:00

Merged #277 fix: a shared ticker no longer hides one of its two real tokens (closes #276) 2026-08-12 13:31:55 +02:00

Merged #273 test: drive the EIP-1193 dApp approval round trips in the browser (closes #183) 2026-08-12 13:23:58 +02:00

Merged #270 fix: judge the symbol a user sees, not the bytes a contract returns (closes #260) 2026-08-12 13:06:55 +02:00

Merged #256 test: containerized Firefox end-to-end harness (closes #184) 2026-08-12 12:20:15 +02:00

Merged #269 harden: verify the signed transaction against what the popup displayed (closes #216) 2026-08-12 12:15:26 +02:00

Merged #266 fix: filter the restored view stack against RESTORABLE_VIEWS (closes #224) 2026-08-12 12:07:49 +02:00

Merged #264 fix: one wording for a rejected password on every screen (closes #172) 2026-08-12 12:03:41 +02:00

Merged #267 test: close the empty-array hole in the e2e unstubbed-request guard (closes #187) 2026-08-12 11:50:39 +02:00

Merged #258 test: drive ConfirmTx in the e2e suite, gate assertion included (closes #238) 2026-08-12 11:35:21 +02:00

Merged #243 fix: explain a rejected dust threshold instead of snapping back silently (closes #233) 2026-08-12 11:29:10 +02:00

Merged #205 harden: verify all approval fields and make failed signing retryable (closes #174) 2026-08-12 11:21:03 +02:00

Merged #240 feat: remove an address from an HD wallet, behind a confirmation (closes #162) 2026-08-12 11:16:30 +02:00

Merged #257 fix: filter a fake ETH token from the balance list too (closes #235) 2026-08-12 11:10:39 +02:00

Merged #249 test: cover every verify-build failure mode from make check (closes #227) 2026-08-12 11:05:09 +02:00

Merged #201 fix: WaitTx timeout no longer overwrites a rendered success screen (closes #155) 2026-08-12 10:58:36 +02:00

Merged #248 fix: wipe the exported private key from the DOM on leaving the screen (closes #221) 2026-08-12 10:54:37 +02:00

Merged #247 fix: explain a stored non-master xprv wallet instead of throwing at signing time (closes #234) 2026-08-12 10:41:49 +02:00

Merged #244 fix: treat an unreported holders_count as unknown, not as zero holders (closes #230) 2026-08-12 10:34:46 +02:00

Merged #206 fix: run libsodium on WebAssembly under the extension CSP (closes #182) 2026-08-12 10:30:16 +02:00

Merged #241 docs: describe the bundled token list by selection criterion, not count (closes #239) 2026-08-12 10:20:41 +02:00

Merged #197 fix: count the network fee in the confirm-screen balance check (closes #154) 2026-08-11 15:41:38 +02:00

Merged #208 fix: drive background refresh and phishing update from alarms (closes #158) 2026-08-11 15:38:29 +02:00

Merged #226 fix: add a Settings toggle for known-symbol spoof verification (closes #176) 2026-08-11 15:38:06 +02:00

Merged #214 fix: move the UTC Timestamps checkbox into the Display well (closes #212) 2026-08-11 15:34:17 +02:00

Merged #232 fix: enforce the base58 checksum and reject non-master extended keys (closes #210) 2026-08-11 15:31:51 +02:00

Merged #225 fix: NUL-delimit verify-build's dist walk so no path escapes the check (closes #223) 2026-08-11 15:26:45 +02:00

Merged #215 feat: password-gated recovery phrase display for HD wallets (closes #161) 2026-08-11 15:25:18 +02:00

Merged #228 fix: honour a dust threshold of 0 and compare addresses case-insensitively (closes #179) 2026-08-11 15:16:49 +02:00

Merged #209 test: known-answer coverage for HD derivation and the vault (closes #159) 2026-08-11 15:06:36 +02:00

Merged #204 chore: repo policy compliance sweep — test rerun, npx, frozen lockfile, docs (closes #166) 2026-08-11 14:57:52 +02:00

Merged #196 fix: one transaction history row per value movement (closes #177) 2026-08-11 14:56:31 +02:00

Merged #203 fix: correct verify-build diagnostics and close its vacuous passes (closes #180) 2026-08-11 14:55:07 +02:00

Merged #200 fix: derive hasWallet from the wallet list on load (closes #195) 2026-08-11 14:51:23 +02:00

Merged #217 docs: correct three README claims contradicted by the code (closes #213) 2026-08-11 14:41:16 +02:00

Merged #202 docs: rebuild the README Screen Map from the code (closes #164) 2026-08-11 14:31:46 +02:00

Merged #199 docs: correct docs/README.md external services and remove competitor names (closes #163) 2026-08-11 14:25:58 +02:00

Merged #194 fix: repair wallet state on delete (closes #156) 2026-08-11 14:23:07 +02:00

Merged #192 docs: rewrite TODO.md workflow for the branch-per-issue model on next 2026-08-11 14:15:06 +02:00

Merged #178 build: assert DEBUG is off in every emitted bundle as a post-build check (closes #170) 2026-08-10 16:15:23 +02:00

Merged #171 security: decrypt and sign dApp approvals in the popup (closes #157) 2026-08-10 15:59:30 +02:00

Merged #175 test: cover the address-poisoning filters in transactions.js (closes #160) 2026-08-10 15:53:16 +02:00

Merged #185 test: containerized Chrome end-to-end harness that drives the real popup (closes #181) 2026-08-10 15:49:33 +02:00

Merged #169 security: make DEBUG a build-time flag defaulting to off (closes #149) 2026-08-09 16:19:09 +02:00

8 Pull requests proposed by 1 user

48 Issues closed from 1 user

Closed #268 fix: Back after reopening the popup lands on a blank screen, because goBack() never re-renders 2026-08-14 06:14:10 +02:00

Closed #274 fix: EIP-1193 error codes never reach the page — a dApp cannot detect a user rejection 2026-08-12 13:47:34 +02:00

Closed #276 fix: seven bundled tokens are filtered as spoofs of their own duplicate symbol 2026-08-12 13:31:56 +02:00

Closed #220 blocked: no Actions runner is picking up jobs — every CI run sits queued forever 2026-08-12 13:28:47 +02:00

Closed #183 test: drive the EIP-1193 dApp approval round trips in the browser harness 2026-08-12 13:23:58 +02:00

Closed #260 fix: a whitespace-padded symbol bypasses the spoof filter but still displays as the real one 2026-08-12 13:06:55 +02:00

Closed #184 test: containerized Firefox end-to-end harness (geckodriver, MV2 temporary add-on) 2026-08-12 12:20:15 +02:00

Closed #216 harden: approval verification compares against the dApp's request, not against what the popup displayed 2026-08-12 12:15:26 +02:00

Closed #224 fix: the restored viewStack can contain views the popup may not reopen onto, giving a dead-end screen 2026-08-12 12:07:49 +02:00

Closed #172 fix: "Wrong password." is a sentence fragment and diverges from the other password prompts 2026-08-12 12:03:41 +02:00

Closed #187 test: an empty-array POST body escapes the e2e unstubbed-request guard 2026-08-12 11:50:39 +02:00

Closed #238 test: ConfirmTx has no automated coverage at all — the screen that decides what gets signed 2026-08-12 11:35:21 +02:00

Closed #233 fix: the dust threshold field rejects input silently, snapping back with no explanation 2026-08-12 11:29:10 +02:00

Closed #174 harden: approvalVerify does not compare chainId, nonce or fee fields; failed signing leaves an unretryable button 2026-08-12 11:21:03 +02:00

Closed #162 feat: delete an address from an HD wallet (with confirmation) 2026-08-12 11:16:30 +02:00

Closed #235 fix: a fake token impersonating ETH is filtered from history and send, but still shows in the balance list 2026-08-12 11:10:39 +02:00

Closed #227 test: verify-build's failure modes are only ever proven by hand — make the battery a committed target 2026-08-12 11:05:09 +02:00

Closed #155 fix: WaitTx 60s timeout overwrites an already-rendered success screen 2026-08-12 10:58:36 +02:00

Closed #221 fix: leaving the private-key export screen leaves the private key in the DOM for the life of the popup 2026-08-12 10:54:37 +02:00

Closed #234 fix: an already-imported non-master xprv wallet will throw at signing time with no explanation 2026-08-12 10:41:50 +02:00

Closed #230 fix: an omitted holders_count is coerced to 0, so a legitimate token gets filtered as spam 2026-08-12 10:34:46 +02:00

Closed #182 fix: libsodium WASM is refused by the extension CSP on every popup load, silently falling back to asm.js 2026-08-12 10:30:17 +02:00

Closed #239 docs: the bundled token list is described as "top 250" in four places and "roughly 500" in another; it is 512 2026-08-12 10:20:41 +02:00

Closed #154 fix: gas fee is excluded from the insufficient-balance check, so max-value ETH sends fail at broadcast 2026-08-11 15:41:38 +02:00

Closed #158 fix: MV3 service worker termination kills the background refresh and the 24h phishing list update 2026-08-11 15:38:29 +02:00

Closed #176 fix: known-symbol spoof verification has no off switch, contradicting the README's user-configurable promise 2026-08-11 15:38:06 +02:00

Closed #212 fix: the UTC Timestamps checkbox sits inside the Token Spam Protection well 2026-08-11 15:34:17 +02:00

Closed #210 fix: isValidXprv accepts a mistyped extended key and silently imports a different wallet 2026-08-11 15:31:51 +02:00

Closed #223 fix: verify-build's dist walk is line-delimited, so a path with trailing whitespace escapes the unlisted-bundle check 2026-08-11 15:26:45 +02:00

Closed #161 feat: show wallet's recovery phrase (requires password) 2026-08-11 15:25:18 +02:00

Closed #179 fix: a dust threshold of 0 silently becomes 100,000 gwei, and isSpoofedSymbol is case-sensitive on the contract address 2026-08-11 15:16:49 +02:00

Closed #159 test: cover wallet.js key derivation and vault.js encryption — currently zero tests on the crypto core 2026-08-11 15:06:36 +02:00

Closed #166 chore: repo policy compliance sweep — test rerun pattern, yarn/npx, frozen lockfile, undocumented targets 2026-08-11 14:57:52 +02:00

Closed #177 fix: every plain ERC-20 transfer produces two rows in transaction history 2026-08-11 14:56:31 +02:00

Closed #180 fix: verify-build diagnostic overstates the failure, and two robustness gaps in the same script 2026-08-11 14:55:07 +02:00

Closed #195 fix: loadState reads hasWallet from storage without reconciling it against wallets.length 2026-08-11 14:51:24 +02:00

Closed #213 docs: three README.md claims are contradicted by the shipped code 2026-08-11 14:41:16 +02:00

Closed #164 docs: README Screen Map omits three shipped screens and misdescribes four flows 2026-08-11 14:31:46 +02:00

Closed #163 docs: docs/README.md names competitors and contradicts the code on external services 2026-08-11 14:25:58 +02:00

Closed #156 fix: deleting the last wallet leaves hasWallet true, resets selection unconditionally, and skips the active-address broadcast 2026-08-11 14:23:07 +02:00

Closed #189 TOP PRIORITY: consolidate all open PRs onto one next branch, one PR 2026-08-10 16:16:18 +02:00

Closed #170 build: assert DEBUG is off in every emitted bundle as a post-build check 2026-08-10 16:15:23 +02:00

Closed #157 security: the user's plaintext password crosses the extension messaging boundary during dApp approvals 2026-08-10 15:59:31 +02:00

Closed #160 test: the entire address-poisoning defense in transactions.js is untested 2026-08-10 15:53:16 +02:00

Closed #181 test: containerized Chrome end-to-end harness that drives the real popup 2026-08-10 15:49:33 +02:00

Closed #151 fix: TransactionDetail crashes for every ERC-20 transfer — ReferenceError: addressDotHtml is not defined 2026-08-10 15:49:33 +02:00

Closed #150 fix: AddToken screen is unreachable — ReferenceError: showView is not defined 2026-08-10 15:49:33 +02:00

Closed #149 security: DEBUG hardcoded on — every generated recovery phrase is the public test phrase 2026-08-09 16:19:09 +02:00

90 Issues created by 1 user

Opened #149 security: DEBUG hardcoded on — every generated recovery phrase is the public test phrase 2026-08-09 03:41:35 +02:00

Opened #150 fix: AddToken screen is unreachable — ReferenceError: showView is not defined 2026-08-09 03:41:48 +02:00

Opened #151 fix: TransactionDetail crashes for every ERC-20 transfer — ReferenceError: addressDotHtml is not defined 2026-08-09 03:42:04 +02:00

Opened #152 build: add ESLint to script/lint — make check cannot currently catch undefined identifiers 2026-08-09 03:42:24 +02:00

Opened #153 fix: Firefox target is non-functional — Chrome callback APIs used against the promise-only browser namespace 2026-08-09 03:42:55 +02:00

Opened #154 fix: gas fee is excluded from the insufficient-balance check, so max-value ETH sends fail at broadcast 2026-08-09 03:43:09 +02:00

Opened #155 fix: WaitTx 60s timeout overwrites an already-rendered success screen 2026-08-09 03:43:32 +02:00

Opened #156 fix: deleting the last wallet leaves hasWallet true, resets selection unconditionally, and skips the active-address broadcast 2026-08-09 03:43:48 +02:00

Opened #157 security: the user's plaintext password crosses the extension messaging boundary during dApp approvals 2026-08-09 03:44:09 +02:00

Opened #158 fix: MV3 service worker termination kills the background refresh and the 24h phishing list update 2026-08-09 03:44:26 +02:00

Opened #159 test: cover wallet.js key derivation and vault.js encryption — currently zero tests on the crypto core 2026-08-09 03:44:54 +02:00

Opened #160 test: the entire address-poisoning defense in transactions.js is untested 2026-08-09 03:45:13 +02:00

Opened #161 feat: show wallet's recovery phrase (requires password) 2026-08-09 03:45:38 +02:00

Opened #162 feat: delete an address from an HD wallet (with confirmation) 2026-08-09 03:45:57 +02:00

Opened #163 docs: docs/README.md names competitors and contradicts the code on external services 2026-08-09 03:46:30 +02:00

Opened #164 docs: README Screen Map omits three shipped screens and misdescribes four flows 2026-08-09 03:46:51 +02:00

Opened #165 decision: Sepolia support contradicts "Non-Goals for 1.0", and isMetaMask names a competitor in shipped code 2026-08-09 03:47:31 +02:00

Opened #166 chore: repo policy compliance sweep — test rerun pattern, yarn/npx, frozen lockfile, undocumented targets 2026-08-09 03:47:55 +02:00

Opened #167 chore: prune 24 stale remote feature branches 2026-08-09 03:48:20 +02:00

Opened #168 chore: remove dead exports and de-duplicate copy-pasted view helpers 2026-08-09 03:48:42 +02:00

Opened #170 build: assert DEBUG is off in every emitted bundle as a post-build check 2026-08-09 04:08:04 +02:00

Opened #172 fix: "Wrong password." is a sentence fragment and diverges from the other password prompts 2026-08-09 04:53:47 +02:00

Opened #173 decision: no browser in the agent environment, so several 1.0.0 items cannot have their DoD verified 2026-08-09 04:54:11 +02:00

Opened #174 harden: approvalVerify does not compare chainId, nonce or fee fields; failed signing leaves an unretryable button 2026-08-09 05:02:55 +02:00

Opened #176 fix: known-symbol spoof verification has no off switch, contradicting the README's user-configurable promise 2026-08-09 07:07:55 +02:00

Opened #177 fix: every plain ERC-20 transfer produces two rows in transaction history 2026-08-09 07:08:12 +02:00

Opened #179 fix: a dust threshold of 0 silently becomes 100,000 gwei, and isSpoofedSymbol is case-sensitive on the contract address 2026-08-09 07:08:34 +02:00

Opened #180 fix: verify-build diagnostic overstates the failure, and two robustness gaps in the same script 2026-08-09 07:21:04 +02:00

Opened #181 test: containerized Chrome end-to-end harness that drives the real popup 2026-08-09 16:10:05 +02:00

Opened #182 fix: libsodium WASM is refused by the extension CSP on every popup load, silently falling back to asm.js 2026-08-09 16:10:35 +02:00

Opened #183 test: drive the EIP-1193 dApp approval round trips in the browser harness 2026-08-09 16:15:49 +02:00

Opened #184 test: containerized Firefox end-to-end harness (geckodriver, MV2 temporary add-on) 2026-08-09 16:27:58 +02:00

Opened #186 decision: agent commits are landing under three different author identities, including yours 2026-08-09 18:31:19 +02:00

Opened #187 test: an empty-array POST body escapes the e2e unstubbed-request guard 2026-08-09 18:45:47 +02:00

Opened #188 test: assert the DoD items from #150 and #151 that the harness does not yet cover 2026-08-09 18:46:04 +02:00

Opened #189 TOP PRIORITY: consolidate all open PRs onto one next branch, one PR 2026-08-10 14:30:42 +02:00

Opened #191 docs: TODO.md describes the old branch-from-main workflow and its Status/Next Step are stale 2026-08-10 16:16:38 +02:00

Opened #193 decision: RULES.md "Build & Workflow" still says merge to main, contradicting the branch-per-issue-onto-next model 2026-08-11 14:15:31 +02:00

Opened #195 fix: loadState reads hasWallet from storage without reconciling it against wallets.length 2026-08-11 14:19:15 +02:00

Opened #198 feat: "send max" affordance — emptying an ETH account now requires manual arithmetic 2026-08-11 14:22:57 +02:00

Opened #207 decision: a dApp-supplied gas limit is silently dropped, so the popup always re-estimates 2026-08-11 14:28:48 +02:00

Opened #210 fix: isValidXprv accepts a mistyped extended key and silently imports a different wallet 2026-08-11 14:32:45 +02:00

Opened #211 decision: RULES.md states three things the code contradicts 2026-08-11 14:33:49 +02:00

Opened #212 fix: the UTC Timestamps checkbox sits inside the Token Spam Protection well 2026-08-11 14:33:54 +02:00

Opened #213 docs: three README.md claims are contradicted by the shipped code 2026-08-11 14:34:06 +02:00

Opened #216 harden: approval verification compares against the dApp's request, not against what the popup displayed 2026-08-11 14:40:20 +02:00

Opened #218 test: popup reload mid-refresh can fail the e2e run with "loadHomeTxs failed: Failed to fetch" 2026-08-11 14:40:59 +02:00

Opened #219 decision: the phishing blocklist URL embeds a competitor's org name, and its documented upstream no longer exists 2026-08-11 14:41:30 +02:00

Opened #220 blocked: no Actions runner is picking up jobs — every CI run sits queued forever 2026-08-11 14:45:42 +02:00

Opened #221 fix: leaving the private-key export screen leaves the private key in the DOM for the life of the popup 2026-08-11 14:49:25 +02:00

Opened #222 decision: the per-unit TODO.md entry makes every merge invalidate every open PR 2026-08-11 14:54:59 +02:00

Opened #223 fix: verify-build's dist walk is line-delimited, so a path with trailing whitespace escapes the unlisted-bundle check 2026-08-11 14:55:25 +02:00

Opened #224 fix: the restored viewStack can contain views the popup may not reopen onto, giving a dead-end screen 2026-08-11 15:06:25 +02:00

Opened #227 test: verify-build's failure modes are only ever proven by hand — make the battery a committed target 2026-08-11 15:08:53 +02:00

Opened #229 test: the Settings view has no browser coverage, so a wrong element id takes the whole screen down undetected 2026-08-11 15:09:37 +02:00

Opened #230 fix: an omitted holders_count is coerced to 0, so a legitimate token gets filtered as spam 2026-08-11 15:10:47 +02:00

Opened #231 decision: what should the confirm screen quote as the network fee — estimate, reserve, or both? 2026-08-11 15:11:40 +02:00

Opened #233 fix: the dust threshold field rejects input silently, snapping back with no explanation 2026-08-11 15:16:57 +02:00

Opened #234 fix: an already-imported non-master xprv wallet will throw at signing time with no explanation 2026-08-11 15:18:05 +02:00

Opened #235 fix: a fake token impersonating ETH is filtered from history and send, but still shows in the balance list 2026-08-11 15:20:53 +02:00

Opened #236 harden: an oversized phishing delta erases the previously stored one, dropping to vendored-only coverage for up to 24h 2026-08-11 15:23:32 +02:00

Opened #237 chore: script/test-e2e emits DEP0205 module.register() deprecation warning 2026-08-11 15:24:16 +02:00

Opened #238 test: ConfirmTx has no automated coverage at all — the screen that decides what gets signed 2026-08-11 15:36:18 +02:00

Opened #239 docs: the bundled token list is described as "top 250" in four places and "roughly 500" in another; it is 512 2026-08-11 15:38:18 +02:00

Opened #242 tokenList.js header comment says "511 tokens"; the array has 512 2026-08-12 10:19:51 +02:00

Opened #245 harden: connectedSites is never cleared for a removed address or wallet 2026-08-12 10:25:15 +02:00

Opened #246 harden: decimals || "18" collapses absent and zero if a backend ever sends numeric 0 2026-08-12 10:26:40 +02:00

Opened #250 fix: a contract deployment shows a blank recipient on the wait and approval screens 2026-08-12 10:32:37 +02:00

Opened #251 harden: parseHoldersCount partial-parses a malformed count into a reported low count, hiding the token 2026-08-12 10:35:02 +02:00

Opened #252 fix: flash messages longer than one line wrap and shift the layout, defeating the reserved-space policy 2026-08-12 10:36:17 +02:00

Opened #253 test: the private-key export screen has no e2e coverage, unlike the recovery-phrase screen 2026-08-12 10:39:41 +02:00

Opened #254 test: the defective-wallet UI gates have no coverage — all six can be deleted with the suite still green 2026-08-12 10:42:40 +02:00

Opened #255 decision: a defective xprv wallet is told to use other software, but we hold the only key and will not export it 2026-08-12 10:42:54 +02:00

Opened #259 build: nothing automatic ever runs the e2e suites, so every browser-level guarantee is manual-only 2026-08-12 10:56:28 +02:00

Opened #260 fix: a whitespace-padded symbol bypasses the spoof filter but still displays as the real one 2026-08-12 10:56:51 +02:00

Opened #261 fix: an address holding only unpriced tokens reports its total as $0.00 2026-08-12 10:57:29 +02:00

Opened #262 fix: an approval claimed when its window closes is orphaned, leaving the dApp promise unsettled forever 2026-08-12 11:00:04 +02:00

Opened #263 chore: script/bootstrap can report success while leaving playwright-core unlinked 2026-08-12 11:29:42 +02:00

Opened #265 fix: the empty-password message diverges on the private key export screen 2026-08-12 11:32:31 +02:00

Opened #268 fix: Back after reopening the popup lands on a blank screen, because goBack() never re-renders 2026-08-12 11:43:39 +02:00

Opened #271 fix: two concurrent dApp transactions are populated with the same nonce, and the second fails terminally 2026-08-12 12:04:57 +02:00

Opened #274 fix: EIP-1193 error codes never reach the page — a dApp cannot detect a user rejection 2026-08-12 13:05:38 +02:00

Opened #275 fix: approving a site connection races the popup teardown and can be recorded as a rejection 2026-08-12 13:05:50 +02:00

Opened #276 fix: seven bundled tokens are filtered as spoofs of their own duplicate symbol 2026-08-12 13:07:15 +02:00

Opened #279 fix: an unsupported method is reported to the page with no EIP-1193 code (4200) 2026-08-12 13:37:15 +02:00

Opened #280 fix: a throw inside handleRpc hangs the dApp's promise forever with no error 2026-08-12 13:47:51 +02:00

Opened #283 Uniswap V2_SWAP_EXACT_OUT (command 0x09) is decoded by a function nothing calls 2026-08-14 06:08:15 +02:00

Opened #285 docs: README still documents the EIP-1193 code loss that #274 fixed 2026-08-14 06:15:48 +02:00

Opened #287 flake: the Chrome e2e dApp signing prompt loses its page about one run in three under load 2026-08-14 06:23:01 +02:00

Opened #290 test: make test-e2e is flaky under host load — "the extension opened no approval window within 30000ms" 2026-08-14 06:26:15 +02:00