Releases: sgade/WarbandMeDowns
Releases · sgade/WarbandMeDowns
Release list
0.6.0
WarbandMeDowns
0.6.0 (2026-08-20)
Full Changelog Previous Releases
- feat(settings): add settings ui (#5)
Co-authored-by: Claude Sonnet 5 noreply@anthropic.com
0.5.0
WarbandMeDowns
0.5.0 (2026-08-20)
Full Changelog Previous Releases
- ci: add CurseForge deployment
- chore: add project icon
- refactor: rename project to WarbandMeDowns
- feat: make Pawn score authoritative over item level when installed (#4)
Item level alone can't distinguish a same-slot Intellect item from a
Strength one, so a higher-ilvl item with the wrong main stat could
outrank a lower-ilvl item with the right one. Now, when Pawn is
installed and a scale resolves for the character, its score decides
the comparison outright instead of only breaking exact item-level
ties. Item level remains the fallback when Pawn isn't installed, the
spec is unknown, or Pawn can't score one of the two items being
compared.- Pawn.lua: new Pawn.CompareItemValuesForScale is the authoritative
comparator; Pawn.GetPawnItemValue now memoizes per (scale, item)
since the removed early-break scans candidates more often. - Assignment.lua: CompareItemsForCharacter tries Pawn first; drop the
now-unsafe item-level sort/early-break in favor of a full scan for
the true best candidate; BuildUpgradeInfo's statOnlyUpgrade now also
covers Pawn picking a lower-ilvl item. - Tooltip.lua: new wording for "better stats despite lower item
level", distinct from the existing same-ilvl case. - docs/DATA_SOURCES.md: describe Pawn as authoritative, not a
tie-breaker.
Co-authored-by: Claude Sonnet 5 noreply@anthropic.com
- Pawn.lua: new Pawn.CompareItemValuesForScale is the authoritative
- ci: validate lua syntax
- chore(readme): update readme with screenshot
0.4.0
HandMeDowns
0.4.0 (2026-08-19)
Full Changelog Previous Releases
- feat: precompute a global warband assignment instead of per-hover recomputation (#3)
Replaces the per-tooltip-hover recomputation with a precomputed, lazily
refreshed global assignment engine. One pass over the whole warband settles,
per character and equipment slot, which item they should end up with -
letting a spare in one alt's bag cascade down to a lower-priority alt -
instead of asking "is this hovered item an upgrade?" from scratch every time.- Assignment.lua: the new engine. Every item falls into one of three
buckets (equipped = permanent floor, unsendable spare = floor, sendable
spare = movable pool); settling a (slot-class, target equip location)
pair is lazy and memoized per generation, so hovering many items of the
same slot-class only pays for it once. A dirty flag + debounced
out-of-combat background recompute keeps the engine warm, with hovering a
tooltip as the guaranteed synchronous fallback. - Tooltip.lua: lifecycle + GameTooltip hook, now with a "sell it" line for
items confirmed to be an upgrade for nobody. - Characters.lua: warband enumeration/eligibility, now memoized per
(character, classID, subclassID) instead of per item. Character priority
ordering moved to a standalone, swappable comparator
(CharacterPriorityComparator) as a marked extension point for a future
alternate ordering - only the existing default is implemented. - Data.lua / Pawn.lua: item taxonomy and Pawn integration, relocated with
unchanged bodies. - HandMeDowns.lua: trimmed to bootstrap + shared Util.
- HandMeDowns.toc, README.md, docs/DATA_SOURCES.md: updated load order and
behavior description; weapon/spec data and Pawn integration facts
untouched.
Co-authored-by: Claude Sonnet 5 noreply@anthropic.com
- Assignment.lua: the new engine. Every item falls into one of three
0.3.0
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 - Unify current-character priority with alts, add secondary-stat tie-breaking
0.2.0
HandMeDowns
0.2.0 (2026-08-18)
Full Changelog Previous Releases
- feat: narrow twink suggestions to spec-favored weapons and shields (#1)
CanCharacterEquipItem previously gated purely on class, so it would
suggest e.g. a Staff to an Enhancement Shaman or a Shield to a Fury
Warrior just because the class can technically equip those. It now
also checks the character's known specialization (via the optional
DataStore_Talents module) against a per-spec favored weapon/shield
table sourced from Blizzard's own ChrSpecialization game data, with
graceful fallback to the union of a class's specs when the spec isn't
known. Includes the new Midnight-era Devourer Demon Hunter spec.
Also invalidates the recommendation cache on PLAYER_SPECIALIZATION_CHANGED
and adds DataStore_Talents as an OptionalDeps entry in the .toc.
Co-authored-by: Claude Sonnet 5 noreply@anthropic.com
0.1.1
HandMeDowns
0.1.1 (2026-08-12)
Full Changelog Previous Releases
- Support WoW 12.1
Drop the 12.0.5 and 12.0.7 interface versions. No API changes in 12.1
affect the item, tooltip, or event APIs this addon uses.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Support WoW 12.0.7
- Add GitHub releases badge
0.1.0
HandMeDowns
0.1.0 (2026-05-28)
Full Changelog Previous Releases
- Merge branch 'vibe-coded'
- Consider weapon items as well
- Cache tooltip results
- Recognize shields
- Evaluate current character first
- Fix tooltip not shown
- Implement addon logic
Changed:
- Sort eligible alts by DataStore:GetCharacterLevel descending, then
DataStore:GetAverageItemLevel descending.
- Check equipped items, bags, and mail for equal-or-better item level before
recommending an alt.
- Treat missing comparable gear as an upgrade from item level 0.
- Keep required item level out of eligibility.
- Tighten tradable bind checks to BoE and account/warband-style binds.
- Use DataStore’s non-localized class token and WoW item class/subclass
constants for armor compatibility.
- Added DataStore_Characters to required dependencies.
- Updated README.md with usage behavior and requirements.
Validation:
- Ran luac -p HandMeDowns.lua successfully.
I referenced the current DataStore/DataStore module structure from GitHub
while aligning the calls: https://github.com/Thaoky/DataStore. - Update for WoW 12.0.5
0.0.4
HandMeDowns
0.0.4 (2025-09-08)
Full Changelog Previous Releases
- Catch "compare number with nil"
When you are very fast with your mouse, one of the two item levels can be nil for some reason,
and then the comparison fails.