commit 827860a2e66f19fd6df39672da76ed2d26d11bb8
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 20:48:35 2026 +0200

    Fix `x and nil or y`, which can never yield nil
    
    Loot Council rows expanded but would not collapse. The toggle read
    
        state.selected = (state.selected == id) and nil or id
    
    and in Lua nil is falsy, so the `and` branch falls straight through to
    the `or`: the expression yields `id` whether or not the row was already
    open. A click trace showed it plainly -- `selected 250144 -> 250144` on
    every click after the first. Written long-hand now.
    
    The same trap was in ReadyCheck's test roster, where a "pending" entry
    was meant to become nil and instead stayed "pending", rendering as a
    ready state rather than as waiting.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 07e0704797953e34a648faedfa4149cb0d10d3e5
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 18:49:21 2026 +0200

    Trinkets: single-target/AoE tabs, and collapsible rows
    
    bloodmallet does publish 5-target trinket charts -- I checked one spec
    (Blood) that happens not to have them and wrongly concluded none did. 23
    of 31 simmed specs have both; the gaps are tanks and Fire.
    
    Fight style is a right-aligned control on the tab bar rather than a third
    and fourth tab, since it modifies both views rather than replacing them.
    A style with no data anywhere is not offered at all, and a spec simmed
    for only one style says so instead of reading as a data failure.
    
    The index cached a single ST-only table, so it now keys one index per
    style -- the orders differ enough that they cannot share a cache.
    
    Loot Council rows toggle on state read at click time rather than a flag
    captured at build time, and the expanded spec rows collapse the block
    too: with a long list open the header can be scrolled out of view. Rows
    now show +/- so it is visible that they collapse at all.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 737f8c5a5df0cfd526cd6befb70e92731f9ccafc
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 18:34:47 2026 +0200

    Register the 5-target trinket fight style
    
    bloodmallet's castingpatchwerk5 endpoint currently answers "No standard
    chart with these values found" -- the chart page renders but there is no
    data behind it. Registering the style anyway costs nothing, since one
    without data is skipped per spec, and means a re-scrape picks up AoE
    rankings the day they are published rather than needing a code change.
    
    Single target/AoE tabs in the trinket view are blocked on that data:
    building them now would show two identical lists.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 912633a55a97b7c877125a25fb500e1a9451a4d7
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 15:15:33 2026 +0200

    Security and performance pass
    
    Three findings, all fixed:
    
    - Teleports wrote secure button attributes with no InCombatLockdown
      guard. The identical Mythic+ code path guards it; this one did not, so
      opening Teleports during combat threw "action blocked".
    - Durability percentages arrive over the addon channel from other
      players and were displayed unvalidated. Now clamped to 0-100.
    - guildKeystones is keyed by sender name with no bound, so a large or
      hostile guild could grow it indefinitely between weekly wipes. Capped
      at 300 distinct senders; existing entries still update.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 401b57e857eccf339f8a69055099015b183addc7
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 15:12:55 2026 +0200

    Update README for 3.0.0
    
    Covers Mr. Yeeper, the Edit Mode migration, the rebuilt settings, the
    What's New notice and the jump counter, and refreshes the changelog
    pointer.
    
    Known gaps revised rather than deleted: the Mythic+ vault column is now
    sourced (M9 was wrong at 318), delve estimates stand, and the Utility
    Advisor gap now explains why it is empty -- Wowhead's Season 2 dungeon
    guides were unpublished at launch, and wrong dispel types are worse than
    no notes.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit 13e6f7efc3f84b19fb155202dd0c00db89f0866b
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 15:10:47 2026 +0200

    Take the interrupt tracker, M+ summary and utility advisor out of beta
    
    All three have run for a full season. The label was doing nothing except
    telling people not to rely on them.
    
    Historical changelog entries keep their BETA wording: they were accurate
    when written, and editing them would misrepresent what shipped.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit f2fd1fa00fc25e8f4c5d0f2e1e2572c15951d745
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 14:58:40 2026 +0200

    Use CurseForge automatic packaging instead of a GitHub Action
    
    CurseForge can watch the repository and package tagged commits itself,
    server-side, reading .pkgmeta and the TOC exactly as the standalone
    packager does. That removes the need for a workflow, an API key and a
    repository secret entirely -- the fewer places a credential exists, the
    fewer places it can leak from.
    
    Requires the repository to be public, which is CurseForge's constraint:
    it reads the source without credentials.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

commit d0b214f43251e85c114f02dfb1891c5e186f03eb
Author: vbaustad <vebjorn.baustad@gmail.com>
Date:   Mon Aug 10 14:31:22 2026 +0200

    Initial commit: YippYapp Helper 3.0.0
    
    Midnight Season 2 release. Notable in this version:
    
    - Mr. Yeeper: the dashboard advisor. Reads gear, crests, vault,
      keystones, raid lockouts and guild activity, decides which single
      fact is worth saying, and says it. Season- and socially-aware, so it
      will not point at Mythic+ before keystones are live, or tease about
      guild grouping when there is no guild.
    - Edit Mode: every movable frame positions through Blizzard's Edit
      Mode via LibEditMode, replacing per-frame unlock buttons that could
      not work from an immovable settings window.
    - Settings rebuilt on Blizzard's Settings API, one page. The ~1000-line
      hand-drawn panel it replaced is gone.
    - Season 2 data throughout: gear tracks, crest costs, dungeon and raid
      item levels, the new keystone pool.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

