Skip to content

v0.12.7 — senior-engineer refactor pass

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 22 May 22:11

No new modules — bug hunt + hardening + UX consistency pass across the v0.10–v0.12 modules shipped during the autonomous-loop sprint.

Highlights

  • New lib/utils/buttonStatus.js — shared flashStatus helper with WeakMap timer dedup. Consolidates 7 modules' inline setTimeout label-flips (cobaltDownloader, galleryZip, localCompanion, savedBackup, voteHistory, mediaArchiveManifest, commentTreeExport).
  • Lazy rateLimiter refill — interval now starts on first schedule() and stops when bucket is full + queue/active empty. Closes a per-page background-tick leak.
  • Granular arcticShift failures — distinguishes rate-limited / network / server-error / bad archive response / not in archive instead of folding into a flat "not in archive" label.
  • dragResize pointercancel + window-blur teardown — drag cleanup no longer leaks listeners when the tab loses focus or the OS steals the pointer.
  • userTagger Esc-close + single active popover — only one popover open at a time; Esc dismisses; deferred outside-click handler guards against teardown races.
  • botCollapse reveal-button now drives label off the live .collapsed class — stays in sync with reddit's native [-]/[+] toggle.
  • filterRules collapse-for-posts degrades to dim (posts have no native collapse on old.reddit). data-rsm-filter-hit is now space-separated and dedupes IDs.
  • redgifsLayoutFix per-Thing scoped observers — replaces the previous body-wide MutationObserver. Dramatically less work on busy listings.
  • IDB-promise reset on failurevoteHistory + mediaArchiveManifest no longer break permanently on a transient IndexedDB hiccup.
  • cobaltDownloader host mergeeligibleHosts() now merges defaults + custom list (was replacing). res.json() wrapped in try/catch.
  • galleryZip jszip retry — cached promise resets on rejection so a transient CDN failure doesn't permanently break the button.
  • commentTreeExport — dead includeAllChildren: false option branch removed.

Fixture hygiene

  • Privacy outbound-URL snapshot regenerated; regen helper at scripts/regen-privacy-snapshot.mjs for future use.
  • expectedHostCount bumped 86 → 88 (mastodon + threads from v0.11.11).
  • threads host permissions added to both chrome + firefox manifests.

Verification

  • 358/358 tests green.
  • Chrome + Firefox production builds clean.

Install

  • Chrome / Brave / Edge: Load unpacked from dist/chrome/ (recommended — Chromium 75+ rejects self-signed CRX with CRX_REQUIRED_PROOF_MISSING regardless). The .crx is provided for completeness and works in enterprise-policy installs.
  • Firefox: Load res-slim-firefox-v0.12.7.zip via about:debugging → "Load Temporary Add-on".

SHA-256 sums in SHA256SUMS-v0.12.7.txt.