v2026.07.23.3
·
1462 commits
to main
since this release
Closing a modal in the config view closed the config view with it. Opening the add-bookmark modal from settings and pressing Esc dismissed both, landing you on the dashboard instead of back on the section you were reading. The inbox and health views were unaffected.
Fixes
- fix
Esccloses one layer at a time — every full-container view registers a globalEschandler that closes it, and the modal does not stop the key from propagating, so both handlers legitimately saw the same press: the modal closed itself and the view closed underneath it. The health and inbox handlers already guard against this (if (d.isModalOpen()) return;), but the config handler did not, despite a comment claiming it matched them. It now carries the same guards, soEscdismisses whatever is on top and only closes the view once nothing is above it. Also covers the tag cloud, an active search, and inline editing — the other three layers those views guard against (dashboard-config.js).
Notes
- Covered by
tests/config-escape-modal.spec.js, which asserts both directions: thatEscon an open modal leaves the config view up, and thatEscwith nothing layered still closes it. The second matters — without it the suite would pass just as well if the fix had simply stoppedEscfrom ever closing the view. - Test isolation, not user-facing —
tests/config-data-reset.spec.jsgenuinely emptied every page's bookmarks and never put them back. The e2e suite shares one data directory and has no seeding step, so every spec running after it saw a bookmark-less install: nineconfig-overviewtests failed on a batched run and passed individually, since a dashboard with no bookmarks has no broken links or duplicates to report. The test now snapshots the bookmarks and restores them in afinally, and asserts the restore took. dashboard-config.jsmoves tov2026-07-23-3so the corrected file is fetched rather than served from cache.