Documentation
34. v0.16.2 — Watchlist read-only fix
- Created
- Sep 20, 2026
- Updated
- Sep 20, 2026
Release candidate prepared 2026-09-20. This patch release fixes a watchlist that opened locked on a new browser and stayed locked. Browsers already in that state repair themselves on the next visit. Follows v0.16.1.
Fixed
-
A new browser opened the watchlist read-only and could never write to it. The panel showed "Watchlist persistence is read-only because migration could not be verified", and nothing in it could be added, removed, renamed, or reordered. Reloading did not help: once a browser reached that state it stayed there on every later visit, and clearing the site's data was the only way out.
The app keeps watchlists in a browser database and, while that storage is still new, also writes a backup copy to the older storage it replaced. It then reads the backup back and compares it with what it saved; a mismatch means the move cannot be trusted, so writing is switched off rather than risking the list. The starter watchlist every new browser gets left each row's asset class unstated, and reading the backup filled that value in, so the saved copy and the copy read back were never identical and the check could not pass. Nothing was lost or corrupted — the comparison was wrong, not the data.
A browser that is already locked recovers by itself the next time the page loads, keeping the watchlist it had. There is nothing to clear and nothing to re-add.
Watchlists carried over from an earlier version were never affected; only browsers that started from the built-in starter list were.
Verification
- The complete automated suite (388 files / 3,330 tests), TypeScript, the zero-warning ESLint baseline, and the optimized production build (128/128 static pages) passed on the release-preparation tree.
- The fix is covered by four new regression tests. Three of them fail on v0.16.1: the first run on a new browser, the repair of a browser already locked, and the first edit made after that repair. The fourth checks that the genuinely unsafe failures — damaged saved data — still lock the list, so the repair cannot be over-applied.
- Checked in a real browser, on optimized production builds of both versions: a profile locked by the v0.16.1 build loads unlocked on this one, keeps the watchlist it had, accepts edits that survive a reload, and shows live prices throughout.
Next steps
Back to the release list.
Next: Release Notes