A WoW addon for Midnight retail (12.x) and WoW Forever (interface 16001). You build single-purpose bars, each holding one or a few spells, and stack them in a fixed layer order inside one movable frame.
The addon handles layout only. It borrows the frames from Blizzard's Cooldown Manager, and Blizzard decides when each one shows. Because of Midnight's secret-value rules, the addon never reads combat state itself.
Full design: Bar Stack — WoW Addon Spec.md
Clone or copy this repo into World of Warcraft/_retail_/Interface/AddOns/BarStack. The folder name has to match BarStack.toc.
- Add the spells you want in Blizzard's Cooldown Manager (Options › Gameplay Enhancements).
- Type
/bs(or click the addon compartment button) to open the config window. - Click New to create a bar, then set its visibility mode and click Add spell.
- Drag bars in the list to reorder them. The top of the list is the top layer.
- Open Edit Mode to drag the stack around the screen.
Other commands:
/bs checkshows which APIs and storage backends work on this client. Run it after a relog to see which saved settings survived.- Export / Import in the config window copies a profile as a string.
Version 0.1.0 has not been tested in game yet. The two spikes from the spec (persistence on Forever, frame borrowing in combat) still need checking on a live client. Use /bs check for that.
Things that differ from the spec:
- No LibEditMode, LibSerialize or LibDeflate. Blizzard's
EventRegistryEdit Mode callbacks andC_EncodingUtildo the same jobs, so nothing extra is bundled. - The Edit Mode layout-store backend is not built yet. Which keys are safe to write is still an open question. Settings are saved through SavedVariables, CVar chunks and the export string.
- Per-widget glow and text options are not included. Blizzard's frames draw their own glow and text.
luajit tests/run.lua tests the storage, normalization, import and rank-grouping logic using stubbed WoW APIs.