GLP Ultra v3.2.0
GLP Ultra v3.2.0
SysAdminDoc/GLP_Userscript — one engine building the MV3 extension, the userscript, and the
Firefox variant.
Quote backlinks, a noise budget, media actions, accessibility controls, shareable packs, and
optional settings sync — plus six fixes, three of which were things the new features found.
Fixed
- A tab could come up styled with every feature dead. The shim reads
chrome.storageat
document_start; when the mirrored copy differed from localStorage it pushed the difference
straight into the engine, which began its feature run against a body the parser had not filled
yet and marked the run done. The real page was never touched — CSS injected, body flagged
active, no post numbers, no toolbar, no error anywhere. Startup now waits for the document. - Seven settings did nothing until the next page load. Back-to-top, both infinite scrolls, the
scroll progress bar, thread previews, quick search, and auto-refresh had no apply handler
because theirinitwould have stacked duplicates. Each now guards re-entry. - Unmuting your last muted user left their posts hidden until a reload. The mute pass returned
early on an empty list, skipping the cleanup that takes the class off. Switching the feature off
entirely had the same effect. Found by the noise budget disagreeing with itself. - Auto-refresh kept counting down in a background tab, stacking refreshes against the moment
the tab came back. - An image still loading was treated as chrome and skipped by the lightbox, the gallery, and the
new media actions:naturalWidthis 0 until an image loads, and the shared predicate
measured it during a document-idle pass.
Added
- Quote backlinks. GLP marks each post with a
reply<id>permalink and each quote with a
"Quoting:" footer, which is enough to reconstruct who answered whom — an edge the site only
exposes forward. A post now lists the replies that quoted it; hovering a chip shows an excerpt,
clicking scrolls to it and flashes it, and a quote whose target is on the same page gains an
in-page jump. - Noise budget. A toolbar chip counts what is being kept off the page — ads removed, muted and
blocked posts, keyword hits, image-only replies, hidden and pinned threads, collapsed quotes —
and opens a breakdown leading to the recovery shelf. Every figure but the ad count is read off
the live DOM, so it cannot drift from what is actually hidden. - Save / Open / Copy link on post images. Saving fetches the blob so the file keeps its real
name; a hotlinked third-party image cannot be fetched from a content script, so it falls back to
opening the image and says why. - Accessibility controls. Reduce Motion, High Contrast, and Larger Click Targets, emitted last
in the stylesheet on purpose — a theme that beats the motion or contrast setting is a bug. - Shareable packs. A theme pack carries the look, a filter pack carries mutes, blocks, and
keyword rules. Importing a filter pack adds — lists unioned, keywords merged — so a pack
someone else wrote can never delete your mutes. - Optional settings sync (off by default). Settings only, never the user lists, arbitrated by
a stamp so the most recent change wins.
Verification
npm run verify — syntax and policy gates, the selector registry against the real captured GLP
pages, both builds, structural manifest checks for Chrome and Firefox, and 136 runtime checks
(up from 83) driving the unpacked extension in Chromium against those captures.
New gates were bait-verified: reverting each fix makes its checks fail. One check was found
passing for the wrong reason — a missing element made both sides of a comparison -1 — and the
behaviour it claimed to cover is now recorded as unobservable here rather than left as
reassurance. Firefox remains gated structurally only.
Install
Artifacts are unsigned by design.
- Chrome / Edge / Brave: download
glp-ultra-v3.2.0.zip, unzip, thenchrome://extensionsDeveloper mode > Load unpacked > pick the unzipped folder.
- Firefox: download
glp-ultra-firefox-v3.2.0.zip, unzip, thenabout:debugging>
This Firefox > Load Temporary Add-on > pickmanifest.json. - Userscript: install
glp-ultra.user.jsin Tampermonkey or Violentmonkey. The popup, options
page, network-level ad blocking, and settings sync are extension-only.