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