Skip to content

Releases: mk418/HelloGear

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 02:11

HelloGear

v0.1.0 (2026-07-25)

Full Changelog Previous Releases

  • Add release packaging
    Same shape as the sibling addons: a tag matching v* triggers the BigWigs
    packager, which builds the zip, generates a changelog from the commits
    since the last tag, creates a GitHub Release, and uploads to CurseForge
    when CF_API_KEY is present in repo secrets.
    The workflow checks the tag against the TOC's version before packaging.
    The TOC carries a literal version rather than @Project-Version@ so a copy
    loaded straight from a checkout shows a real number in game, which means
    it can drift from the tag - better to fail than to publish a zip whose
    in-game version is wrong.
    .pkgmeta keeps the dev-only material out of the zip: the headless test
    harnesses, the lint config, the docs, and the CurseForge project image.
    Icon.png ships because the TOC's IconTexture points at it, and LICENSE
    ships because the MIT terms ask for the notice to travel with copies.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Add the CurseForge project ID
    Placed as the siblings do, after Category.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Group the panel buttons by what they act on
    Undress moves up beside Equip, where it belongs: both act on the character
    right now. That leaves three pairs, each row doing one kind of thing -
    Equip/Undress on the character, Save/New set on sets, From/To bank on the
    bank - instead of an arbitrary split between a top row and a footer.
    New set comes up from the footer to fill the second row, which keeps the
    row count and so leaves the list exactly the height it was.
    The buttons also fit now: two at 83 plus a gap came to 170 in a 164-wide
    column and overhung into the scrollbar. Halving the column gives 80.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Add an undress button
    Takes everything off into your bags. The swap engine already knows how to
    empty a slot, so this is all of them at once and inherits the bag-space
    check and the retry loop rather than reimplementing either - gear stays on
    if there's nowhere to put it, and it says so.
    Sits beside New set in the footer, which shortens to fit; its tooltip
    carries what the longer label used to say. Also /hg undress.
    Deliberately not undoable. Recording it as a set's restore would mean
    silently overwriting one, which is worse than making the user equip a set
    to dress again.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Make every icon searchable by name
    Your dump came back as 1106 bare file IDs, so IconNames.lua maps them,
    generated from the community listfile (verified-listfile.csv) and filtered
    to exactly those - 49KB rather than the megabyte the full retail listfile
    would cost for no gain. Load is a table constructor; nothing is built until
    the picker first opens.
    Matching now happens on a form with every separator stripped. Names arrive
    from three places and none of them agree on spelling -
    spell_shadow_shadowbolt from the table, Chromatic Boots from an item,
    Shadow Bolt from a spell - and nobody types them consistently either, so
    "shadow bolt", "shadow_bolt" and "SHADOW BOLT" all find the same icons.
    Runtime naming from gear and spells stays: it needs no shipped data and
    covers whatever a later patch adds before the table is regenerated.
    test_iconsearch.lua runs the search key against the real shipped table.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Add /hg dumpicons to capture the client's icon list
    Groundwork for making every icon searchable. There is no API turning a
    file ID into a name, so the mapping has to be generated offline from the
    community listfile - and filtered to the icons this client actually has,
    or it means shipping tens of thousands of retail entries for a Classic
    addon.
    /hg dumpicons writes the raw list to saved variables; a reload puts it on
    disk where it can be read and turned into a table. Needed once, and again
    only if a patch adds icons - file IDs are stable, so an out-of-date table
    misses new icons rather than going wrong.
    The picker already looks for ns.IconNames when naming an icon, so the
    generated file drops straight in with no further wiring.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Widen icon search to everything with a name
    Search covered twenty icons because this client reports its macro icons as
    bare file IDs, which carry no name to match against - so only the set's own
    gear, named from the items themselves, was searchable.
    Everything else whose icon can be named now is: the rest of your gear,
    whatever's in your bags and the bank when it's open, and every spell you
    know. An icon shared with one of those is searchable by that thing's name,
    which is what you'd type looking for it anyway. The spellbook call differs
    across clients and neither form is guaranteed, so a miss there just means
    fewer names.
    The rest stay browsable but unsearchable. Covering them would need a file
    ID to name database shipped with the addon; the tooltip says as much
    rather than leaving the ceiling unexplained.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Make icon search work, and tidy the picker's placement
    Search asked the wrong client call first. There are two: the indexed one
    yields texture paths, whose last segment is a name, and the table-filling
    one yields bare file IDs, which carry nothing to match against. The
    table-filling call was tried first and returned successfully, so the
    indexed one was never reached and almost nothing had a name to search.
    Now the indexed call goes first and is only kept if it really does hand
    back strings.
    The header says what's actually searchable rather than leaving a box that
    quietly covers a fraction of the grid and reads as broken - the count of
    icons and, when they differ, how many have names. If none do, it says so
    and the box is disabled. SetEnabled also becomes Enable/Disable, which are
    the methods that certainly exist on an EditBox here.
    The picker sat further from the options panel than intended: both frames
    draw their borders inside their bounds, so the visible gap was the offset
    plus both insets. Offset accounts for that now.
    Closing the character sheet closes the picker, as does dismissing the
    options popout it hangs off - it belonged to that popout, and leaving it
    floating alone was debris.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Show sets with gear you don't have in red
    A set whose items aren't on you or in your bags now reads red in both the
    panel list and the quick menu, and its tooltip marks the offending slots
    rather than making you compare the list against your bags by eye.
    Anything the bank is holding is marked (bank) instead of (missing). Both
    are red - either way it isn't going on right now - but one of them tells
    you where to go. That distinction only exists while the bank window is
    open, since the client won't report its contents otherwise, and the
    tooltip degrades to "missing" when it can't ask.
    The lookup reduces to an item-and-suffix key so a set's slots are table
    lookups rather than a scan, and both lists build the inventory index once
    for the whole list instead of once per set. Eight cases cover it: worn and
    carried gear not counting, a re-enchant not counting, a different random
    suffix counting, and the bank distinction appearing and disappearing with
    the window.
    Also fixes the icon picker opening on top of the options panel that
    launched it - it sits beside it now - and drops "Use a set item", which
    the set's own icons coming first already covers.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Move sets to and from the bank
    The client only reports bank contents while the bank window is open, which
    shapes the feature: this can't be something equipping reaches for on its
    own, since the moment you want a set is the moment you're nowhere near a
    bank. So it's two explicit actions - buttons on the panel and /hg bank
    get|put - both disabled with an explanation unless the window is up.
    From bank moves the set's gear into your bags, skipping anything already
    on you or already carried. To bank moves it out of your bags and leaves
    worn gear alone; stripping a set off to put it away is what unequipping is
    for, and doing it implicitly would be a nasty surprise.
    The move loop follows the swap engine: recompute from the world each pass,
    move what can be moved, wait for the locks, go again. It gives up if the
    bank window closes underneath it.
    A swap that can't find something now says how many of the missing pieces
    are in the bank, when the bank is open to be asked.
    Four scenarios cover it against a simulated bank - withdrawing, skipping
    what you already have, depositing without stripping worn gear, and the
    window being shut.
    Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
  • Drop the key bindings
    ...
Read more