lightweight tag bc409aa645758bf0868b72e814f8432909cbc987 v2026.06.12
Author:	github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Date:	Fri Jun 12 17:23:14 2026 +0000

commit bc409aa645758bf0868b72e814f8432909cbc987
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Date:   Fri Jun 12 17:23:14 2026 +0000

    data: update builds v2026.06.12

commit 4802ffc8d9f57147517b6f32816e391d138bfb63
Author: BAThomp24 <bathomp24@gmail.com>
Date:   Fri Jun 12 13:22:46 2026 -0400

    ci: release on push to main + fix release zip file list
    
    Adds a push-to-main trigger so code changes ship the same day instead
    of waiting for the next cron-driven data update. Matches zugzug-keys'
    release flow.
    
    Also fixes the release zip manifest, which was both stale and
    incomplete:
    - Removed Minimap.lua (deleted in fcd39ad)
    - Added Settings.lua, LevelingData.lua, Leveling.lua (required by TOC)
    
    Without this fix the next cron would have either errored on the missing
    file or produced a zip that loaded a broken addon for CurseForge users.
    
    The data-regen step is gated to only run on schedule + workflow_dispatch
    (no point regenerating Data.lua on every code push). Cron runs still
    skip the release if Data.lua didn't change.

commit a3300b78c3717382593f1b36f5375720af546091
Author: BAThomp24 <bathomp24@gmail.com>
Date:   Fri Jun 12 13:17:46 2026 -0400

    harden ApplySwaps + popup display, slim slash commands
    
    ApplySwaps / SwapsAlreadyApplied:
    - SwapsAlreadyApplied now stages purchases via PurchaseRank dry-runs
      instead of trusting canPurchaseRank (which lies — Blizzard reports
      true even when no class points are available). Falls through to a
      refund-stage retry, then RollbackConfig wipes the staging. Net effect:
      the popup only shows when at least one pick truly stages.
    - ApplySwaps refactored to two-phase: refund every drop with canRefundRank
      upfront, then purchase every reachable pick, then re-purchase orphan
      refunds we didn't end up needing. Avoids staging-order issues where
      PurchaseRank would refuse even when a refund had freed a point.
    
    Suggest popup:
    - Suppression state tracked by contentLabel so a confirmed "no swaps
      needed" doesn't re-prompt for the same dungeon until the player swaps
      spec (resets on ACTIVE_TALENT_GROUP_CHANGED).
    - Per-side alignment filter on swap rows: a pair where the drop is at
      rank 0 and the pick is at maxRanks is hidden entirely; mixed pairs
      collapse to "Take X" or "Drop Y" rows.
    - Only one action button at a time. Not-on-build → Apply Build only;
      on-build with swaps → Apply Swaps only.
    
    Slash commands:
    - Drop /zz dump's "debug" and "dumpswaps" aliases. They were misleading
      — sounded like toggles, weren't.

