promotional bannermobile promotional banner

GearPath

Ranks content sources by how many BiS upgrades they contain for your spec

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 in
      paired 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).