Some tests left timers running when they ended, and --forceExit hid them.
- Six background test files leave an approval pending, so the background's
20-second timer ran forever. Each file now stubs that timer, as two blocks
in tests/backgroundApproval.test.js already did.
- Five popup test files show a flash message, and its timer outlived the
test. They now run on fake timers.
Both test scripts in package.json drop --forceExit.
Model: opus-5-5
A connection allowed without "Remember my choice for this site" lived in a module-level object in the background, so it ended the first time Chrome stopped the idle worker. Each such connection is now one item in the browser's session storage, which outlives the worker and is emptied when the browser closes, read and written through new wrappers in src/shared/browserApi.js. Removal in Settings, address switch, address removal and wallet removal still end it; Settings now waits for the removal before redrawing.
manifest/firefox.json now declares a minimum of Firefox 115.0, the first with session storage.
Judgement call: address and wallet removal still notify the background without waiting.
Model: opus-5-5