RES-Slim v0.3.7 — QA audit on v0.3.6 + second-look on v0.3.5 modules
Full comprehensive audit on v0.3.6 settings console transformation + a second-look pass on the v0.3.5 module fixes. Three parallel Explore agents surfaced findings; I verified each one against the source, filed false positives, and fixed the confirmed bugs.
Fixed
Settings console (v0.3.6 regressions + rough edges)
- Filter chip ARIA — the v0.3.6 templates shipped
role="tab"+aria-selectedon each chip, which is an incomplete ARIA tab pattern (would needrole="tabpanel",aria-controls, and arrow-key navigation between chips to be compliant). Switched to the correct semantic for toggle-style filter buttons:role="group"on the container +aria-pressedon each chip. .moduleRowTogglethumb asymmetry — off-statemargin-left: 2pxsat 2px from the left edge, but on-statemargin-left: 16pxsat 4px from the right edge instead of 2px. Track 34 − thumb 14 − 2 = 18, so on-state should be 18px. Fixed.- Responsive 680px breakpoint — the v0.3.6 media query applied
justify-content: centerto.globalSaveButton/.globalDiscardButtonat narrow widths. Those are non-flex buttons (display: inline-block), sojustify-contentdid nothing. Switched totext-align: center. - Empty filter state — when a filter matched zero modules the entire sidebar list went blank with no explanation. Added a placeholder: dashed-border card with "No modules match this filter." and a "Show all modules" reset button that fires
setModuleFilter('all'). - Stale
$moduleOptionsScrimreference —drawConfigOptionsonly reassigned this jQuery wrapper when the current module actually had options. For no-options modules, the variable kept pointing at a detached div left over from the previous module, and subsequentupdateCurrentModuleStatecalls silently mutated a ghost. Fixed by clearing it toundefinedbefore the create/skip branch. - Category
.activevs.is-expandeddesync — manually collapsing the currently-highlighted category left the.activehighlight in place, reading visually as "this category is still selected" while its content was hidden. Now drops.activeon manual collapse.
Modules (second-look on v0.3.5)
viewDeleted— the restore flow awaited a pullpush.io fetch, then wrote the archived body intothing.entry.querySelector('.usertext-body .md')without re-checking that the comment was still in the live document. With infinite-scroll now live in v0.3.5, it's realistic for the comment to be detached mid-ajax. Now re-queries after the await, bails ifdocument.contains(thing.entry)is false, and also guardstrigger.remove().hideGifComments— the module detected gif-only comments correctly but then just added the.collapsedclass, which does nothing visually on old.reddit. Reddit's collapse is driven by a JS click handler that rewrites the DOM into a one-line stub AND adds the class; adding the class alone leaves the comment fully expanded. Now clicks the.expandtoggle to run Reddit's native collapse logic, falling back to class-only if the toggle isn't present.
Agent false positives I verified and did NOT fix
The agents flagged several issues that turned out to be non-problems after verification:
nextTopComment"off-by-one invisibleIndex" — the bounds are correctly clamped byMath.max(0, ...)/Math.min(len-1, ...).downloadButtons"double-button injection" — theexpando.querySelector('.res-slim-download-btn')guard insidedecorate()makes the rAF + setTimeout double-fire idempotent.currentColor"spec case violation" — the agent got it backwards; stylelint-config-standard REQUIRES lowercasecurrentcolorand I fixed this in v0.3.6 after a stylelint failure.saveAllStagedOptions"race with autostageDebounce" — after commit, re-staging the same values is a no-op becausestage.addcompares against the committed state.commentHighlights"unboundedstore.getAll()" — 10% probabilistic prune at thread load on bounded storage; not a real issue at realistic thread counts.- Collapsed category with filtered-out children "doesn't re-expand" — this is correct behavior; the user collapsed it manually, it should stay collapsed.
Install
CRX (signed, auto-updates from v0.3.5/v0.3.6 CRX installs — same extension ID)
Download res-slim-chrome-v0.3.7.crx and drag into chrome://extensions with Developer mode enabled.
Zip (unpacked)
Download RES-Slim-v0.3.7-chrome.zip, extract, and load unpacked from chrome://extensions.
Verification
yarn oncecleanyarn eslint lib/cleanyarn stylelintcleannpx flow check: 0 errors (first time this repo has flow-clean since the fork; the pre-existingscrollIntoView({ block: 'nearest' })error turned out to be stale cache)- Playwright visual verification at 1400×900 and 650×900: confirmed toggle thumb symmetry (OFF 2px left / ON 2px right), filter empty state card, dirty stage bar coloring, responsive save/discard button centering, and active filter chip highlight