Skip to content

0.3.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 17:45
· 10 commits to main since this release
f03d2f3

HandMeDowns

0.3.0 (2026-08-19)

Full Changelog Previous Releases

  • feat(pawn): compare items using secondary priorities from Pawn (#2)
    • Unify current-character priority with alts, add secondary-stat tie-breaking
      The current character was previously special-cased: it was always checked
      first and won automatically if the item was any upgrade for it, before alts
      were ever considered. Fold it into the same level-then-avg-ilvl priority
      list used for alts instead, and walk that single list to find the best
      recipient - if the current character comes first, the tooltip recommends
      keeping the item, exactly like it would recommend an alt.
      Upgrade decisions were also item-level-only, so two comparable items of
      equal ilvl were never distinguished even when one clearly suited a
      character's spec better. Add a tiered secondary-stat priority table per
      spec (sourced from Wowhead's per-spec stat-priority guides for patch 12.1
      "Midnight", documented in docs/DATA_SOURCES.md alongside the existing
      weapon-table sourcing method) and a single CompareItemsForCharacter
      comparator - item level first, secondary stats only on an exact tie - reused
      by both "what does this character already have" and "is this hovered item
      better." This also fixes same-ilvl items dangling false recommendations
      against each other for the same slot.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
    • Delegate secondary-stat tie-breaking to Pawn instead of a hardcoded table
      The hand-transcribed SpecSecondaryStatPriority table (sourced from Wowhead
      guides) needed manual re-transcription every patch and only ever encoded
      rough tiers, not real weights. Pawn already does this exact calculation for
      a living, and exposes it through genuine global functions other addons are
      meant to call - confirmed by reading Pawn's actual source directly (a
      fetch-and-summarize tool hallucinated fake function bodies on the first
      attempt, so everything here was re-verified against the raw files) and by
      its own ArkInventory-rule integration using the same functions.
      CompareItemStatsForCharacter now resolves a Pawn scale for the character
      (mapping our global spec ID to Pawn's local 1-4 spec index via the existing
      SpecsByClass ordering) and compares both items' Pawn scores directly - no
      more tiers, since Pawn's score is already a weighted scalar. Every call is
      defensive: type-checked before calling, pcall-wrapped, and the return type
      validated, so a missing Pawn install, a renamed function, or an internal
      Pawn error all degrade silently to "no opinion" (item level only), exactly
      like today's unknown-spec fallback. Nothing else in the recommendation flow
      changes - same priority sort, same equip/eligibility checks.
      Pawn is a new optional dependency. docs/DATA_SOURCES.md documents the exact
      functions relied on, the Pawn version verified against (2.13.16), and how
      to re-verify them if a future Pawn update changes shape.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

    Co-authored-by: Claude Sonnet 5 noreply@anthropic.com