Skip to content

Add loot search and transmog outfit support#9

Merged
wowaddonmaker merged 44 commits into
mainfrom
loot-search
Apr 7, 2026
Merged

Add loot search and transmog outfit support#9
wowaddonmaker merged 44 commits into
mainfrom
loot-search

Conversation

@wowaddonmaker

Copy link
Copy Markdown
Owner

Summary

  • Search dungeon and raid loot by item name, slot, stats, boss, or instance with class/spec/difficulty filters
  • Transmog outfits searchable with click-to-equip, lock status overlay, and browse mode (vendor-only controls hidden)
  • EJ navigation guide walks through instance, boss, loot tab, and highlights the specific item
  • Result categories sort by best match score instead of fixed order
  • Clear button dismisses active navigation highlights
  • Version bumped to 1.5.0 with changelog and What's New updates

Test plan

  • Search a loot item, click it, verify EJ navigates to correct boss loot tab and highlights the item
  • Change class/spec and difficulty filters, verify EJ shows matching loot
  • Open transmog via search, verify vendor controls hidden and messages shown
  • Close and reopen transmog at a real vendor, verify everything restored
  • Search with multiple categories, verify best-match category appears first
  • Start a guide, verify clear button appears and dismisses highlights
  • Run /ef reset, verify filter resets to current spec / normal difficulty

Previously only hid the bar if the editBox had focus.
Now hides whenever the bar is visible, regardless of
focus state.
Saved transmog outfits appear as searchable entries in the
UI search bar. Click to equip via a temporary action slot
(PreClick places outfit, UseAction equips, PostClick cleans
up). Adds Transmogrification panel entry to open the full
wardrobe UI. Adds "tmog" as a keyword across all transmog
related entries. Outfits filter defaults to off, togglable
in the filter dropdown.
Find an empty slot fresh each click instead of caching one
at init. Skip class-restricted slot ranges (121-168). Verify
placement succeeded before firing UseAction. PostClick always
cleans up the slot so it recycles naturally. Falls back to
opening TransmogFrame if no slot is available.
Collection pins (mounts, toys, pets, outfits) are now stored
per-character. UI pins remain account-wide. Clicking a toy or
outfit on cooldown keeps results open instead of closing them.
Pinned outfit names and icons sync when outfits are renamed or
deleted mid-session.
Override-bind Enter to the selected result button when it is
an outfit or toy, then propagate the keypress so WoW's secure
input system clicks the button directly. This gives keyboard
navigation the same secure equip path as mouse clicks.
Show gray separator between all consecutive pinned items
using bottom-anchored logic. Reduce post-creation focus block
from 1 second to 2 frames so the search bar is clickable
almost immediately after login/reload.
Scans current-tier dungeons and raids via Encounter Journal
API and injects items as searchable entries. Results grouped
by slot then instance. Click opens EJ to boss, Shift+click
opens dressing room, hover shows item tooltip. Loot filter
in dropdown (default off). Includes stat keyword enrichment,
slot/source keyword generation, and EJ state save/restore.
Resolve EJ APIs after EncounterJournal_LoadUI (not file scope).
Match WhereLoot's API call order: SelectInstance, SelectEncounter,
SetDifficulty, SetSlotFilter, SetLootFilter per encounter.
Use Enum.ItemSlotFilterType.NoFilter instead of 0. Separate
loot keywords by type (slot, stat, source) for toggle-aware
scoring. Search by Slot only matches slot keywords, Search by
Stats only matches stat keywords. Multi-word queries assign
each word to its best keyword type.
Class list with hover-to-expand spec submenus. Spec selector
row shown under Loot filter with separator. Multi-spec scan
support in Database.lua. Known issues: hover detection and
submenu opening need debugging.
Spec flyout not yet functional (frame-level issues). DevLog
now auto-saves to EasyFindDevDB.lastOutput. All dev modules
updated to use DevLog. Frame inspector uses DevLog for quick
inspect output.
Root cause: BackdropTemplate intercepts mouse events at the
same frame level as child buttons. Fixed by using plain Frame
with manual background texture instead of BackdropTemplate
for the flyout panels. Buttons now receive OnEnter properly.
Added spec icons next to spec names in the sub-flyout.
Replaced text arrows with ForwardArrowIcon atlas.
Inset background textures inside border edges. Close spec
flyouts when search results hide. Remove debug print
statements from loot scan.
Hide flyouts and dropdown when a spec is selected. Green dot
on class rows indicates at least one spec from that class is
active. SyncFlyoutState updates both spec checkboxes and
class indicators.
Clicking a class row toggles all its specs on/off. Clicking
a spec toggles just that spec. Nothing closes until the user
clicks outside the menus. Loot re-scan deferred to next frame.
Prevent OnEditFocusLost from hiding results when mouse is
over spec/class flyouts or filter dropdown. Change class
active indicator from small dot to full row background tint.
Cache loot scan at login so spec/difficulty toggles are instant.
Replace multi-select spec system with single-select class/spec
dropdown matching the Encounter Journal UI. Add single-select
difficulty dropdown. Always search by name, slot, stats, and
source (remove toggle checkboxes). Scale filter dropdown with
font size. Extract shared radio button and popup styling.
Loot scoring: match query words against item name words
individually instead of only checking full-query prefix.
Fixes "bond of light" disappearing when typing "bond of".

Keyword scoring: require all query words to match at least
one keyword. Prevents common words like "of" from producing
false positives across unrelated entries.

Nav keyboard: propagate character keys to the game when no
selection is active and editbox is unfocused, fixing WASD
movement typing into the search bar after pressing Escape.

Result rows: reset tabText anchors on header tab render so
recycled rows don't inherit stale repBar anchors (100px
lost). Skip height expansion for single-line header tabs.

Also adds key-repeat support for dropdown/popup/map arrow
navigation and tightens spec-to-difficulty dropdown spacing.
Add step handlers for navigating the Encounter Journal:
ejInstance, ejBoss, ejLootTab, and ejLootItem. The item
handler strips inline color codes (|cAARRGGBB...|r) from
EJ loot text before name comparison.

Add prerequisite validation for EJ boss selection and
loot tab so the guide rewinds when the user clicks a
different boss or switches tabs mid-guide.

Add FastForwardSteps to advance through already-satisfied
steps immediately instead of waiting one per ticker tick.

Add /ef ejdump diagnostic for EJ ScrollBox inspection.
Add Database:SyncEJLootFilter() to set the EJ loot
filter from EasyFind's filter selection. Called on
filter change and before loot navigation so the target
item is visible in the EJ.

Strip color codes in the DirectOpen ejLootItem path.

Sort result category groups by best match score instead
of hardcoded order so the most relevant category (e.g.
Loot for slot searches) appears first.

Increase category separator from 1px to 1.5px and pool
from 2 to 6 for all category boundaries.
When opening the transmog window via search (not at a
vendor), hide Purchase Outfit Slot, Save Outfit, the
money frame, and the Situations tab. Disable right-click
on outfit name buttons (Change Name/Icon doesn't work
without a vendor). Show messages directing users to visit
a transmogrifier. All restored when the frame closes.
Display the transmog-outfit-spellFrame-active atlas
overlay on outfit icons that are locked. Add lock
status and usage hint to the outfit hover tooltip.

Lock toggling requires Blizzard's secure ActionButton
handler (ChangeDisplayedOutfit is protected), so the
tooltip directs users to the action bar or transmog
window for toggling.
SyncEJLootFilter now also calls EJ_SetDifficulty to
match EasyFind's lootDifficulty setting, so the EJ
shows loot for the correct difficulty when navigating.
Show the clear (X) button whenever a navigation guide
is active, not just when there is search text. Clicking
it clears both text and active highlights/arrows.
Expose Highlight:IsActive() for the visibility check
and notify the clear button on guide start/cancel.
Reset All Settings now resets lootFilter to current
spec, lootDifficulty to normal, and wipes all pinned
items (UI and map). Add GetEJDifficultyID helper for
setting EJ difficulty during loot navigation.
Move EJ difficulty resolution into Database:SetEJDifficulty
so both DirectOpen and Highlight ticker share one call site.
Use a per-step flag to avoid re-calling SetDifficulty every
0.1s tick while on the ejLootTab step.
Add 1.5.0 changelog covering loot search, transmog
outfits, browse mode, EJ filter sync, dynamic category
ordering, and related fixes. Update What's New popup
and README features list. Bump TOC version.
Add C_Item, SetOverrideBindingClick, ClearOverrideBindings
to luacheckrc. Move TransmogFrame to globals for field
writes. Remove unused variables and dead code. Add forward
declaration for LayoutSpecPopup.
@wowaddonmaker
wowaddonmaker merged commit 077d4f6 into main Apr 7, 2026
4 checks passed
@wowaddonmaker
wowaddonmaker deleted the loot-search branch July 10, 2026 00:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant