promotional bannermobile promotional banner

WoWSims Exporter

The official addon for WoWSims (https://wowsims.com). Export and simulate your characters for WoW Classic and Forever.
Back to Files

v3.2.6

File nameWowSimsExporter-v3.2.6.zip
Uploader
coolmodicoolmodi
Uploaded
Oct 30, 2026
Downloads
14.8K
Size
199.8 KB
Flavors
ClassicMoP ClassicClassic TBCTitan Reforged ClassicForever
File ID
9373624
Type
R
Release
Supported game versions
  • 5.5.4
  • 5.5.3
  • 4.4.2
  • 3.80.2
  • 3.80.1
  • 2.5.6
  • 2.5.5
  • 1.60.1
  • 1.15.9
  • 1.15.8

What's new

WowSimsExporter

v3.2.6 (2026-10-29)

Full Changelog Previous Releases

  • chore: sync Forever talent table with wowsims/forever (#78)
    Co-authored-by: generalwrex 1731139+generalwrex@users.noreply.github.com

  • Merge pull request #71 from dodoels/feat/i18n-zhcn
    Add localization support (enUS + zhCN)

  • Offer wowsimscn.com next to the international site on zhCN
    On Forever with a zhCN client, the main tab shows two copyable links:
    the international sim (wowsims.com/forever) and the China mirror
    (wowsimscn.com). The mirror only serves its root, so no spec path is
    appended. Other clients/locales are unchanged.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Add localization support with enUS and zhCN
    Introduce a lightweight locale system (Locales/Locale.lua) with no new
    library dependency. All user-facing strings in the UI, options, chat
    messages and saved-data manager now go through Env.L, keyed by their
    English text, with a full Simplified Chinese (zhCN) translation.
    Unsupported-class message now lists localized class names.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Merge pull request #77 from wowsims/feat/forever-talent-marker
    feat: export the game flavor with each character

  • feat: export the game flavor instead of a talent tree marker
    Replace the Forever-only "talentTrees" key with "flavor", set by every flavor:
    era, sod, tbc, wrath, cata, mists or forever. A sim can now tell which client
    an export came from. The Forever sim uses it to apply talent strings only from
    Forever exports. The existing "version" key is the addon release, the same on
    every client, so it can't do this. The sod, tbc, wotlk, cata and mop addon
    importers read top-level keys one by one, so the new key is ignored there.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • feat: mark Forever talent strings as built from the Forever sim's trees
    Forever exports now carry "talentTrees": "forever". The Forever sim drops
    imported talent strings because an Era/SoD export has the same shape but
    indexes different trees; the marker lets it apply only strings this flavor
    built from its own tree order. Other flavors don't set the field, so their
    exports are unchanged.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Merge pull request #76 from wowsims/fix/forever-guards
    fix: harden Forever talents and version guards found by comparing with forever-beta

  • test: load files like the real client and cover missing Forever talent APIs
    The snapshot harness now loads a file when the client recognises none of its
    AllowLoadGameType values, as the game does. The classic clients don't know
    camelot, so their snapshots load the Forever files and exercise the IS_FOREVER
    guard; removing it now fails all six classic snapshots. The Forever snapshot
    gains exports through C_ClassTalents and with no talent API at all.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • fix: guard the remaining version-specific files by flavor
    ClassicTrees.lua, Glyphs.lua and Cata/Reforge.lua relied only on their
    AllowLoadGameType line. A client that recognises none of the listed game types
    loads the file anyway, and ClassicTrees.lua calls GetNumTalentTabs on
    SPELLS_CHANGED. Return early like the other files under Flavors/.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • fix: keep the Forever export working when talents can't be read
    GetForeverTalentRanks called C_SpecializationInfo.GetCombatConfigIDForSpecGroup
    unguarded. Only the test mock defines it, so on a client without it the spec
    lookup raised an error and /wse export produced no gear. Read the config through
    C_ClassTalents.GetActiveConfigID first, fall back to the spec group lookup, and
    return nil (empty talents) when neither exists.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Merge pull request #73 from wowsims/feat/wow-forever-support
    feat: add WoW Forever support

  • Merge pull request #75 from wowsims/refactor/flavor-modules
    refactor: describe each game version as a registered flavor

  • ci: run the export snapshots before packaging a release
    A tag pushed on a commit whose export differs from tools/test/snapshots
    now fails the release job before the packager uploads anything.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • fix: make MoP inspect profession guessing handle gaps and conflicts
    Inspecting a MoP player with no shared profession data guesses their
    professions from gear. It had three bugs, all predating this PR:

    • An empty ring, hand, wrist, legs, back or shoulder slot crashed the
      inspect export (method call on a nil item).
    • Jewelcrafting was never detected: the gem check compared the item's
      whole gem table with gem IDs, and ipairs stopped at the first empty
      slot. It now checks each gem of every equipped item.
    • More than two guessed professions called error(), aborting the export.
      It now returns no professions, since at least one guess is wrong.
      The snapshot test gains two inspect scenarios: "gaps" (empty head and
      ring slots, a Jewelcrafting gem; guesses Enchanting and Jewelcrafting)
      and "conflict" (three guesses; exports none). The existing inspect
      export is unchanged.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • test: cover MoP's fourth druid specialization
    The spec matrix only tried specializations 1-3, so the MoP restoration
    druid entry (spec ID 105) was never checked. On MoP the matrix now tries
    every specialization a class has; the snapshot gains one DRUID 4 line.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • refactor: drop dead MoP spec checks and the copied slot table

    • MoP matches specs by specialization ID, so the 34 AddSpec check
      functions were never called (and the druid ones were misleading).
      They now pass nil, and AddSpec documents checkFunc as optional.
    • EquipmentSpec:GetItemInSlot(slotId) looks items up from EquipmentSpec's
      own layout, replacing the hard-coded slot table copied into
      Flavors/Mists/Items.lua.
      Export snapshots are unchanged.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • test: keep the Forever snapshot stable across talent table syncs
    The fake Forever client hard-coded the first talent ID of each tree,
    copied from the generated table. When the daily sync regenerated that
    table, the Forever snapshot would stop matching, and since the sync PR is
    opened and merged with the workflow token, no Tests run would catch it
    before the next unrelated PR failed.

    • snapshots.js reads the first-of-tree IDs from the generated block in
      Flavors/Forever/Talents.lua and passes them to the mock
    • The Forever talents workflow runs the snapshot test before it opens and
      merges the sync PR
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • chore: update the Addon Studio project file for the new layout
    The .wowproj listed files that no longer exist (UI.lua under
    ExportStructures, per-version TOCs, Shared.lua, extras.lua, Misc.lua) and
    missed most of the addon. It now lists the TOC, embeds.xml and every file
    the TOC loads, in load order, plus the AceComm, AceHook and LibParse
    libraries embeds.xml loads and folders for the new directories.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • fix: correct Cata restoration and holy spec entries

    • Restoration shaman was reported as spec "enhancement"
    • Restoration druid was reported as "balance" and linked to
      druid/Restoration; the sim's page is druid/restoration
    • Holy paladin was reported as "protection"
      Only these three lines of the Cata snapshot change.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • refactor: describe each game version as a registered flavor
    Each Flavors/<Version>/Flavor.lua now calls Env.RegisterFlavor with
    everything that differs for that version: sim URL, classes, item fields,
    extra events, character pane button anchor, inspect support, and hooks for
    talents, spec detection, glyphs, professions, the bag export filter and
    per-item extras (runes, reforges, upgrades, tinkers). Shared code reads
    Env.Flavor instead of checking which client it runs on.

    • Split Core/Shared.lua into Core/{Flavor,Util,Tooltip,Professions,
      Items,Spec}.lua, and move version-specific helpers next to their flavor
      (SoD runes, MoP upgrades/tinkers/profession inference, Forever talents)
    • Move ExportStructures/Misc.lua into Core/Professions.lua,
      Talents/ClassicTrees.lua, Talents/Glyphs.lua and Flavors/Mists/Talents.lua
    • ItemSpec, EquipmentSpec, Character, UI and WowSimsExporter no longer
      branch on the game version
    • Document the structure and the snapshot test in the README
      Export snapshots for all seven game versions are unchanged.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • refactor: move files into Core, Talents and Flavors folders
    Pure renames, no content changes, so history follows the code:

    • Shared.lua -> Core/Shared.lua
    • extras.lua -> Talents/ClassicTrees.lua
    • Conditional_<Version>.lua -> Flavors/<Version>/Flavor.lua
    • CataReforgeDetection.lua -> Flavors/Cata/Reforge.lua
      The TOC load order is unchanged; export snapshots are unchanged.
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • test: snapshot every game version's export against a fake client
    tools/test/snapshots.js loads the addon's files in TOC order (honouring
    AllowLoadGameType) into fengari with a fake client per game version
    (tools/test/wow_mock.lua), runs login, player export, bag export, MoP
    inspect and a class x talent tree spec matrix, and compares the result
    with tools/test/snapshots/<flavor>.txt. Each fake client only defines the
    APIs that client has. A new Tests workflow runs it on every PR.
    Moves the Forever talent test into the same tools/test package.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Merge remote-tracking branch 'origin/main' into feat/wow-forever-support

    Conflicts:

    WowSimsExporter.toc

  • Merge pull request #74 from wowsims/chore/update-interface-versions
    chore: add current Era, TBC Anniversary and Titan interface numbers

  • chore: add current Era, TBC Anniversary and Titan interface numbers
    Live builds per Blizzard's version service: Classic Era 1.15.9 (11509),
    TBC Anniversary 2.5.6 (20506), Titan Reforged 3.80.2 (38002). Older
    numbers are kept for clients that haven't updated.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • ci: merge Forever talent syncs and watch client interface numbers

    • Forever talents workflow merges its own sync PR once the preset test
      has passed on the regenerated table; releases still need a tag
    • Add tools/update_interface_versions.py and a daily Interface versions
      workflow: reads each supported flavor's live build from Blizzard's
      version service and opens a PR (for review) adding new interface
      numbers to the TOC
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • test: check Forever talent export against wowsims/forever presets

    • Add tools/forever_talents_test: replays every talent string from the
      sim's spec presets and saved builds, plus a maxed build per class,
      through Conditional_Forever.lua under fengari with mocked C_Traits data
    • Record the source wowsims/forever commit in the generated table, and
      leave the file untouched when the table itself hasn't changed
    • Add a Forever talents workflow: runs the test on PRs, and daily
      regenerates the table and opens a PR when the sim's trees change
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • fix: address review findings for WoW Forever support

    • Debounce auto-save so the save runs after the last change event, with
      up-to-date talent data, instead of dropping events within the throttle
    • Skip uncached items in the bag export filter instead of erroring on a
      nil item level
    • Count talent ranks granted without spending points (currentRank)
    • Fail the talent generator if a class doesn't have exactly three trees
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • feat: add WoW Forever support
    WoW Forever runs on the retail client, so the addon did not load there and
    relied on classic-only APIs. wowsims.com/forever's addon importer already
    links to this addon and accepts the Classic Era export format.

    • Detect Forever via WOW_PROJECT_CAMELOT and add interface 16001
    • Add Conditional_Forever.lua: sim link, classes, spec detection, and a
      C_Traits-based talent export in the sim's positional string format
    • Generate the talent definition ID table from wowsims/forever trees with
      tools/gen_forever_talents.py
    • Use GetProfessions/GetProfessionInfo and C_Item fallbacks on Forever
    • Export random_suffix items, no glyphs, and register trait events
    • Skip events the client doesn't know; fall back to Settings.OpenToCategory
    • Move table.contains and TableMaxValIndex into Shared.lua
      Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
  • Merge pull request #72 from wowsims/fix/disable-wowi-release
    ci: disable WoWInterface upload and bump checkout to v4

  • ci: disable WoWInterface upload and bump checkout to v4
    Every release since v3.2.0 has failed because the WoWInterface upload
    errors with curl HTTP/2 PROTOCOL_ERROR (likely a stale WI_API_KEY), which
    makes the packager exit 1 even though CurseForge, Wago and GitHub uploads
    succeed. Comment out WOWI_API_TOKEN until the token is regenerated.
    Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • Merge pull request #69 from timfennis/fix/mop-inspect-button
    fix: restore MoP inspect button

  • Merge pull request #67 from kwyatt/fix/tbc-sim-links
    TBC: Fix: include class name in wowsims.com links

  • fix: restore MoP inspect button

  • fix: include class name in TBC wowsims.com links
    Env.AddSpec URL suffixes for TBC were missing the class segment, so
    generated links (e.g. shaman elemental) pointed to
    wowsims.com/tbc/elemental instead of wowsims.com/tbc/shaman/elemental.
    Prepend the class to every spec's URL suffix.

  • Merge pull request #66 from MR-Valdez/main
    fix TBC button location, tied to pvp char tab - THANK YOU!

  • fix TBC button location, tied to pvp char tab

  • new checkbox text was cutoff, fixed width of checkbox

  • put button back to og style and place

  • Added Show Character Pane Button option
    adjusted placement and size of open button
    changed open button to be the wowsims icon.

  • Merge pull request #65 from Adal4/main
    Added category for 5.5.4

  • Added category for 5.5.4
    The PTR shows us that MoP 5.5.4 will have the same addon categorization system as Retail.
    Source:
    https://warcraft.wiki.gg/wiki/TOC\_format#Category
    https://warcraft.wiki.gg/wiki/Addon\_Categories#Development\_Tools

  • Merge pull request #63 from xeropresence/unusedfix
    Update CreateEquipmentSpec to exclude version

  • Update CreateEquipmentSpec to exclude version
    Remove version from EquipmentSpec initialization.

    It is included in the player details section

  • Merge pull request #61 from wowsims/fix-release
    Update Wago project ID

  • readded wowinterface

  • changed wago project id and deleted wowinterface release

  • Merge pull request #58 from wowsims/fix-release
    Fix release action

  • Merge branch 'poly/tbc' into fix-release

  • update release action with the correct token variable name

  • Merge pull request #57 from wowsims/poly/tbc
    TBC support

  • Update Shared.lua

  • tbc doesnt have glyphs

  • tbc support

  • Merge pull request #56 from Adal4/main
    TOC unification

  • TOC unification

  • Merge pull request #55 from Poli93/patch-1
    fix typo

  • typo

  • Merge pull request #52 from Polynomix/korean-locale
    synapse korean locale

  • more url ref changes

  • changed site url

  • changed synapse parsing for korean locale

  • toc bump

  • Merge pull request #50 from Bezerck/main
    Add id to export json

  • only call unitguid once

  • Update Character.lua to add Id

  • Merge pull request #1 from wowsims/main
    merge latest changes

  • Merge pull request #48 from Polynomix/main
    Infer professions from gear when the target does not have the addon

  • Infer professions from gear when the target does not have the addon

  • Merge pull request #46 from Polynomix/main
    Fix profession field missing when the inspected target does not have the addon

  • fix profession field missing when the inspected target does not have the addon

  • Merge pull request #45 from Polynomix/main
    Added missing librairies

  • added missing librairies

  • Merge pull request #41 from Polynomix/main
    Inspect export

  • clean up

  • Merge remote-tracking branch 'wowsims/main'

  • Merge pull request #43 from Adal4/main
    Bump interface versions

  • async inspect professions

  • spec detection

  • revert hide bag button

  • Bump interface versions

  • fix separators being 2 characters sometimes

  • Merge pull request #42 from wowsims/kg/era-support
    Support classic era

  • support classic era

  • Fixed inspecting party and raid members

  • hide export bag button

  • Added button to the inspect frame to export the inspected target

  • Merge pull request #40 from Polynomix/main
    Fixed a lua error due to some information not being available in the …

  • Fixed a lua error due to some information not being available in the early stage of the game loading

  • Merge pull request #38 from wowsims/profession-names
    Use C_TradeSkillUI for localized profession names (Fixes #37)

  • Use C_TradeSkillUI for localized profession names (Fixes #37)

  • Merge pull request #36 from wowsims/profession-names
    Use GlobalStrings for localized profession names

  • Use GlobalStrings for localized profession names

  • Merge pull request #34 from wowsims/local-saves
    add local saves support to be used by external apps

  • add local saves support to be used by external apps

  • Added entry to dropdown menu, remove export bag button

  • Added inspect button on inspected characters frame

  • Merge pull request #32 from Polynomix/inspect
    inspect export features

  • inspect export features

  • Working on being able to get inspected characters information, this branch will be deleted upon completion

  • Thanks to Poly for updating the addon to properly work and load, thank you very much!
    removed prime from glyph entry for mop
    adjusted author names for credits, if i missed anyone let me know!

  • Merge pull request #31 from Polynomix/main
    Updated for MoP classic by Polynomix

  • add pandaren faction detetction

  • pr feedback

  • pr feedback

  • added hand tinker parsing + fix itemSpec field name

  • added upgrade level tooltip parsing

  • Updated for MoP classic

  • Update release.yml

  • Merge pull request #29 from wowsims/sod-phase-7
    Allow getting shoulder "rune" spell

  • Remove version from title since it causes issues with packaging

  • Bump interface

  • Merge branch 'Adal4-main'

  • Export Soul Engraving spell IDs from shoulder items in bags

  • Add BigWigs packager release folder to gitignore

  • Allow getting shoulder "rune" spell

  • Bump interface

  • Bump interface

  • Added WowUp and WowInterface bigwigs packager workflow support

  • Merge pull request #26 from wowsims/fix/button-alignment-non-cata
    Fix button alignment & LUA error

  • Fix button alignment

  • Merge pull request #25 from wowsims/reforge_improvements
    Reforge improvements

  • Ignore gems in reforge detection (Fixes #16)

  • Load dummy enchant item on login, fixes incorrect reforges on cold boot

  • Merge pull request #22 from wowsims/feature/add-addon-version-to-export
    Add addon version to export options

  • Merge pull request #23 from wowsims/feature/add-character-panel-button
    Add button on character panel

  • Fix button positioning

  • Add button on character panel

  • Add close on Escape

  • Remove floating version v

  • Add addon version to export options

  • Merge pull request #21 from wowsims/kg/ring-rune-support
    Remap itemEnchantmentID to the corresponding Spell ID for ring runes

  • remap itemEnchantmentID to the corresponding Spell ID for ring runes

  • Merge pull request #19 from wowsims/hotfix/nullable-gems
    [FIX] Nullable gems in previous index

  • Fix comment typo

  • remove isGem function

  • Change to loop

  • Fill previous gems

  • Merge pull request #18 from wowsims/tharre/fix-mage-talent-export
    Fix mage talent exports being broken

  • Fix mage talent exports being broken
    There's a "talent" at index 21 that doesn't exist, but GetNumTalents()
    considers there to be 22 talents, because there's a valid index after it
    at 22.
    Fixes #17.

  • Merge pull request #15 from wowsims/sockets
    Fix socket bonus + non-english stat matching in reforge detection

  • Remove duplicate v from toc

  • Don't load embedded deps in development

  • Match long-form stats in locales where number appears in the middle

  • Update README.md

  • Merge pull request #13 from wowsims/packager
    Setup BigWigs packager

  • Merge pull request #12 from raethkcj/main
    Ignore enchants when calculating current stats

  • Setup BigWigs packager

This mod has no additional files