Skip to content

Seasonal Updates

All seasonal data lives in one file: src/lib/presets/season-config.ts. That’s the only file you need to edit. Everything else (UI dropdowns, SimC line generation, combo counting) reads from it automatically.

After editing, run the validator:

Terminal window
pnpm season:validate
  1. Update CURRENT_SEASON — expansion name, season number, start date, max ilvl, SimC branch name
  2. Update GEAR_TRACKS — ilvl ranges + bonusId for each track
  3. Update SOCKET_BONUS_ID — the bonus_id that adds an extra socket
  4. Update GEM_PRESETS — current-season gems with correct id and names
  5. Update ENCHANT_PRESETS — current-season enchants with correct id, slot, names
  6. Rebuild items.db — run pnpm build:item-db
  7. Update SimC binary — bundle the new SimC release for all platforms
  8. Run pnpm season:validate — must pass with 0 errors
  9. Test with a real export — paste your own /simc output and run a sim
  10. Tag a releasegit tag vX.Y.Z and push

These aren’t on gaming guide websites — get them from SimC source or Wowhead.

Option A — Wowhead XML (fastest):

  1. Find a known item from the new season on Wowhead
  2. Fetch its XML: https://www.wowhead.com/item=ITEM_ID&xml
  3. Look at the bonus_id field
  4. Repeat for different tracks
  5. The bonus_id that differs between tracks is the track marker

Option B — SimC item_data.inc:

  1. Check https://github.com/simulationcraft/simc/blob/BRANCH/engine/dbc/generated/item_data.inc
  2. Search for a known current-season item
  3. Compare bonus_ids across tracks

Option C — SimC community:

Same process as gear tracks. Do NOT assume it carries over between seasons — always verify.

From your own /simc export (fastest):

  • Gems: look for gem_id=NNNNN
  • Enchants: look for enchant_id=NNNNN

From Wowhead XML:

  • Search for the gem/enchant on Wowhead, fetch XML, read the ID

From SimC pull requests:

  • Season update PRs often list new IDs in the description

Check active branches at https://github.com/simulationcraft/simc/branches — usually the expansion name in lowercase (e.g., midnight).

OutputMeaning
✓ Myth: bonusId=XXXXXConfirmed value
✗ Hero track: bonusId is 0Blocking — must fix
⚠ SOCKET_BONUS_ID is 0Warning — socket feature disabled
✗ Gem "TODO" has id=0Blocking — placeholder not replaced
✗ Duplicate enchant idBlocking — copy-paste error

The validator exits with code 1 on any errors. GitHub Actions runs it before every release build.

  • 30–60 minutes if you have a character with current gear (use your own export for gem/enchant IDs)
  • 2–3 hours if starting from scratch with web research only

The hardest part is usually the gear track bonus_ids.