Skip to content

GLP Ultra v3.1.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 07 Aug 01:31
· 58 commits to main since this release

GLP Ultra v3.1.0

Watcher, recovery, diagnostics, context-menu actions, a Firefox build — and a fix for silent
data loss that affected every extension user.

Fixed — settings, mutes, blocks, tags, and hidden threads reset on every reload

In the extension build only, every stored value came back as its default after a page load, with
no error anywhere. The engine is written against Tampermonkey semantics: it serializes before
every GM_setValue and parses after every GM_getValue. The MV3 shim parsed on read as well, so
the engine parsed an already-parsed object, threw, and fell back to defaults inside its own
catch. The shim now returns exactly what was stored, and the runtime harness reloads the page
and asserts that both a setting and the mute list survive.

Upgrading does not recover values lost before this release — they were never written back.

Added

  • Thread watcher. Watch a thread and it is polled through the shared rate-limited fetch
    queue, walking to its last page before counting posts so an unread delta means new replies
    rather than a new page. The digest shows unread counts, last-checked age, and failed-check
    state; hidden tabs pause background checks by default; the toolbar badge shows the unread
    total.
  • Recovery shelf. One surface listing hidden threads, muted users, blocked users, and the
    filters currently hiding things — each restorable on its own, from any route. Hidden threads
    now remember their titles.
  • Diagnostics panel. Route, active features, settings changed from defaults, per-feature
    worst-run timings, fetch queue state, recorded errors, and selector health, with a Copy button.
    Selector health reports whether each registry surface is carried by its primary selector or a
    fallback — the early warning for site drift.
  • Context-menu actions. Hide this thread, Mute this user, Tag this user, Preview this image,
    Export this thread. Each reports why nothing happened instead of failing quietly.
  • Update notices. After a version change, the settings a build added are named, computed by
    diffing the stored payload against the defaults.
  • Firefox build. npm run package:firefox produces the Gecko variant. Everything but the
    manifest is identical to the Chrome build.

Also in this release: thread export to Markdown / HTML / JSON with a media manifest, mute match
modes (exact, contains, regex), private notes on tagged users, a local trust overlay, full data
backup and restore, media privacy mode with click-to-load embeds, X/Twitter embed normalization,
and hover image previews.

Also fixed

  • mainNav's primary selector .topnav.topnav_main matches neither captured GLP page, so that
    surface had been resolving through fallbacks all along; .mainpagenavlinks is the primary now.
    The thread route no longer expects a site-wide main nav it does not have.
  • The image lightbox added a document click listener on every init and never removed one, so
    re-enabling the feature stacked another copy.

Verification

npm run verify — syntax and policy gates, selector registry against the real captured GLP
pages, both builds, structural manifest checks for Chrome and Firefox, and 83 runtime checks
driving the unpacked extension in Chromium against those captures.

Firefox is gated structurally only: the runtime harness drives Chromium, and Firefox cannot load
a temporary MV3 add-on from the command line without further tooling.

Install

Artifacts are unsigned by design.

  • Chrome / Edge / Brave: download glp-ultra-v3.1.0.zip, unzip, then chrome://extensions

    Developer mode > Load unpacked > pick the unzipped folder.

  • Firefox: download glp-ultra-firefox-v3.1.0.zip, unzip, then about:debugging >
    This Firefox > Load Temporary Add-on > pick manifest.json. Grant the host permission from the
    add-on's permissions tab if you want the network-level ad blocking.
  • Userscript: install glp-ultra.user.js in Tampermonkey or Violentmonkey. The popup,
    options page, and network-level ad blocking are extension-only.