Skip to content

GLP Ultra v3.4.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 07 Aug 05:13
· 41 commits to main since this release

GLP Ultra v3.4.0

SysAdminDoc/GLP_Userscript — the three drift items the 3.3.0 design pass left open, and four
defects the gates written for them found on their first run.

The gate that should have existed already

npm run shots rendered every surface in every theme and nothing ever read the result, which is
exactly how five surfaces stayed blue through ten palettes. The harness now paints each surface
under two deliberately opposite palettes, requires it to actually move, and checks its text
clears 4.5:1 on both. On its first run it caught a toolbar whose colours depended on which
optional features were switched on.

The build also rejects a custom property that references itself, in both the bare and the
var(--x, fallback) form — the fallback is not consulted, so both are cycles.

Fixed

  • Every semantic colour in the product was dead. 3.3.0 wrote --glpx-success /
    --glpx-warning / --glpx-danger as var() references to themselves. A cyclic custom
    property is invalid at computed-value time, so all 19 readers fell back to inherit and success,
    warning and error toasts, danger buttons and every state chip painted in the surrounding text
    colour. The border was still there, just the wrong colour, which is why nothing looked broken.
  • The settings footer was clipped off the bottom of the panel. At 900x700 it sat 207px past
    the panel's edge, and the panel clips its overflow, so Reset, Recovery, Diagnostics, Export,
    Import, Close and Save were all off screen with no scrollbar to reach them. The body reserved a
    hardcoded 88vh - 184px for chrome whose height depends on whether the footer wraps.
  • Touching any setting turned every quote border black. That setting's default is
    var(--glpx-accent), an <input type="color"> coerces what it cannot parse to #000000, and
    reading the panel back is what saves it — so an unrelated checkbox did the damage.
  • The thread toolbar changed colour depending on which features were on: two of them each shipped
    a full copy of its chrome, and whichever came last won.
  • One token, --glpx-border, had two definitions, so page content and product chrome drew
    different lines depending on which side of <body> the element was on.

Changed

  • The last five surfaces read the shared tokens — watch digest, tag picker, quick-search
    panel, lightbox, toast stack. The quick-search panel was #1a1a2e on #4a4a6a, a blue-purple
    box on all ten palettes. The ghost control every small button uses is named once and tinted
    with the accent, so a toolbar button belongs to its theme at rest, not only on hover.
  • The settings footer is grouped by job — destroy | inspect | move data — with a rule between
    each and daylight around Reset, which used to sit against Export in a row of seven.

Verification

npm run verify — 173 runtime checks driving the unpacked extension against the real captures,
plus the gates, both builds, and structural manifest checks. Thirteen of those are new
assertions on the settings panel, which previously had two.

A download that never arrives is now one failed check rather than an uncaught throw; two runs
died on a slow export and took the ~40 later checks with them. The chrome.storage mirror check
polls for its settled state instead of sleeping 1.5s and hoping.

Install

Artifacts are unsigned by design.

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

    Developer mode > Load unpacked > pick the unzipped folder.

  • Firefox: download glp-ultra-firefox-v3.4.0.zip, unzip, then about:debugging >
    This Firefox > Load Temporary Add-on > pick manifest.json.
  • Userscript: install glp-ultra.user.js in Tampermonkey or Violentmonkey.