File Details
v0.2.4
- R
- Apr 17, 2026
- 61.48 KB
- 6
- 12.0.1
- Retail
File Name
GearPath-v0.2.4.zip
Supported Versions
- 12.0.1
GearPath
v0.2.4 (2026-04-17)
Full Changelog Previous Releases
- feat(addon): consume hero-talent-aware BiS data via central accessor
Introduces GearPath:GetBiSForCurrentSpec() as the single point of
truth for 'which BiS list is correct for this player right now?'
The companion app's new three-level schema — BiSData[class][spec][heroKey]
— breaks any caller that does the old two-level lookup; this commit
routes all four readers (PriorityEngine, BiSTab, PriorityTab,
VaultAdvisor) through the accessor instead of descending into BiSData
directly.
Resolution order inside the accessor:
1. Per-hero-talent list if the player has picked one and a list
exists (e.g. DEATHKNIGHT_Blood_Sanlayn)
2. 'any' fallback for the common case (38/40 specs)
3. nil if neither exists — readers render empty tab gracefully
Placing this logic in one spot lets a future item-level heroSpec
filter (for Survival Hunter's weapon split) plug in without touching
every reader again. - feat(companion): hero talent awareness in BiS scraper
Adds per-hero-talent support to the Icy Veins BiS scraper. Most specs
still ship a single BiS list per spec (keyed as any); specs where
Icy Veins publishes genuinely different lists per hero talent are
declared in heroTalentSplits and scraped once per hero.
Currently only DEATHKNIGHT_Blood is split (San'layn / Deathbringer).
Survival Hunter weapon-level tagging is deferred to a follow-up.
Data model:- SpecData.HeroKey identifies the list (any or hero talent name)
- ItemData.HeroSpec is available for per-item hero tagging (unused
in this PR, placeholder for future item-level filtering) - File naming: data/CLASS_Spec_HeroKey.json
Scraper: - expandScrapeTargets() fans out split specs into multiple targets
- Per-page fetch cached across targets for the same spec so we only
hit Icy Veins once per page even when producing multiple outputs - Table selection uses Icy Veins' own DOM contract: each BiS table
lives inpaired with a tab button
by matching id. Strict id-pairing fails
loudly if the markup changes rather than silently scraping wrong
data — confirmed necessary after an earlier positional approach
silently returned identical data for both Blood DK hero targets. - Trinket ranking tables inside <details class=trinket-dropdown>
are explicitly excluded from the fallback table enumeration
Generator: - Output is three-level: BiSData[class][spec][heroKey]
- One Lua table per (class, spec, hero) combination
- Empty heroKey in data files is normalised to any for backward
compatibility with pre-schema JSON files
Template: - Rewritten to use explicit / range variables
(Go templates do not scope $ to the innermost range, and the
earlier version crashed on <$.Class> when reaching outward)
Interactive editor: - Split specs appear as separate entries (e.g. Blood DK shows as
two rows: San'layn and Deathbringer)
Guide scraper (stat priority / gems / enchants) is intentionally
unchanged; hero talent support for guides is scoped to a separate
follow-up branch (feat/hero-talents-guides).

