Imagus Reborn MD v2026.8.20.2 (Chrome + Firefox)
·
24 commits
to mv3-version
since this release
Imagus Reborn MD v2026.8.20.2
Maintenance release: fixes from the 2026-08-27 external audit and the post-2d0c828 review, applied to both Chrome and Firefox builds. No new features, no known regressions (verified in Chrome).
- Imagus-Reborn-MD-unpacked-Chrome-v2026.8.2.zip — Chrome MV3 (src-mv3-overlay/): load unpacked, Developer Mode required.
- Imagus-Reborn-MD-unpacked-Firefox-v2026.8.2.zip — Firefox MV3 136+ (src-mv3-overlay-firefox/): �bout:debugging -> Load Temporary Add-on, then grant the optional userScripts permission when asked.
Fixed
- Gallery Save (BUG-07): the cell selector looked for [data-mdsrc] while cells carry data-md-src — the proven-URL map was always empty and Save fell back to unvalidated album URLs. Selector corrected, "what you see is what you save" restored.
- Validation OOM guard (BUG-02):
eadBodyCapped no longer buffers the whole response via �lob() when Content-Length is present — always streams through a capped reader loop, so a lying/chunked server cannot balloon the service worker's memory. - HEAD size filter (BUG-03): malformed Content-Length (NaN) no longer bypasses the min-size filter; falls back to the GET path.
- Settings robustness (BUG-04): excludedExtensions type-guarded against corrupted storage — a non-string value can no longer crash the filter queue.
- Referer-retry accounting (BUG-10): two parallel retries of the same URL no longer leave �ctiveRefererRetries stuck, which could keep the session alive forever.
- Gallery grid observer (BUG-12): the per-cell IntersectionObserver is now disconnected when the gallery hides or re-decorates — no detached-cell leaks.
- Page-fetch timeout (BUG-14): loadViaPageFetch / _downloadWithReferer now use AbortController + 30s timeout.
- Hotkey hygiene (BUG-17): synthetic (page-injected) key events can no longer trigger mass download (isTrusted guard).
- Filename hardening (BUG-19): sanitizeFilename now rejects Windows reserved names (CON/PRN/AUX/NUL/COM1-9/LPT1-9), strips trailing dots/spaces and enforces the 255-char limit.
- Settings export (BUG-23): backup/restore now includes grantUrls, sieve, sieveUpdateLast, sieveRepository — previously lost on export.
- Standalone Gallery Save session (post-2d0c828 P1): honest inish()/slot accounting — a cold resolve (select -> Save immediately) no longer kills its own session and cancels every item.
Verification
ode tools/md-unit-smoke.mjs — PASS (dedup contract, both trees)
ode tools/md-marker-check.mjs — PASS (5/5 marker sections in sync, both trees)
ode --check on all changed files — OK
- Manual Chrome smoke after the fixes — no errors, no lost functionality