Skip to content

v2026.08.25.2

Choose a tag to compare

@github-actions github-actions released this 25 Aug 19:29
· 3 commits to main since this release

Gloom's Build Barn

v2026.08.25.2 (2026-08-25)

Full Changelog Previous Releases

  • Docked first open: label widths measured once, and no second chance
    Reported: with GBB docked, the first Talents open draws the panel and the boss
    icons but no text — switch labels, strip header, footer, the dock button's
    caption. Close and reopen and it fills in.
    ⚠️ ONE HALF IS DIAGNOSED, THE OTHER IS NOT, and they are fixed differently.
    DIAGNOSED — the switch labels. makeSwitch sized each label button from
    GetStringWidth() ONCE at build. On a cold open the bundled TTF has not been laid
    out yet and that returns 0, so the button collapsed to 2px and the label, which
    is SetAllPoints to it, had nowhere to draw. Permanent, because the width was
    never revisited.
    The screenshots carry the proof and it is positional, not just missing text: in
    the broken shot both toggle tracks sit ~45px further left than in the working
    one — exactly a collapsed label width, since everything after s.left anchors off
    it. Measuring moved into refresh(), which every Render calls, and a ZERO
    MEASUREMENT IS DISCARDED rather than applied, so a cold frame keeps a placeholder
    and looks approximately right until the real number arrives.
    This predates the icon work — git blame puts it in the original publish commit.
    NOT DIAGNOSED — the strip header, footer and dock caption. Same trigger, no
    confirmed mechanism: they are written by Render()/ApplyDockLayout into a frame
    that on a cold docked open is built, laid out, shown and rendered inside one
    tick while Blizzard_PlayerSpells is still loading. Covered with one deferred
    re-render on show, which is safe because Render() is idempotent — it recomputes
    from state and writes what a warm open would.
    That is a mitigation, not an explanation, and it is labelled as one in the code.
    If it comes back the next report needs evidence, which was impossible to collect:
    GBB.debug was a plain local reset to false every load, so by the time you can
    type /gbb debug the first open has already happened. It now persists in
    SavedVariables, and both the measurement and the deferred render log.