20 KiB
🧩 ShaguTweaks — ClassicAPI
A lightweight fork of ShaguTweaks for Turtle WoW-like servers, focused on stability, compatibility and performance while keeping the original ShaguTweaks experience.
This is an English-only customization of Dusk/ShaguTweaks-ClassicAPI, based on ShaguTweaks, for the Vanilla client environment with ClassicAPI.
This fork requires ClassicAPI and targets Turtle WoW-like server/client environments.
Version 3.8.1. What changed in each update: see the changelog.
Upgrading to 3.7: the modules of the separate ShaguTweaks Extras ClassicAPI addon are now built into ShaguTweaks. Disable or delete
ShaguTweaks-extrasafter updating, otherwise its older copies replace the built-in ones. Your on/off settings carry over. Raid Frames, Bag Item Click, Bag Search Bar and Auction Alt-Buy were not merged. See Docs/EXTRAS_MERGE.md for where each module went and why some were left out.
🔌 Requirements
- ClassicAPI — required. Install both the DLL and its bundled
!!!ClassicAPIaddon, and restart the client after a DLL update. v1.18.10 or newer is required (it includes a crash fix for addons that restyle nameplates). The addon checks the loaded DLL version and core APIs before enabling tweaks. The integration was last reviewed against v1.18.13; see Docs/CLASSICAPI_UPDATES.md. - SuperWoW — optional / recommended. Only used as an additional fallback for some cast/GUID information.
- ShaguTweaks Extras ClassicAPI — no longer needed. Its modules are built in since 3.7 (see Docs/EXTRAS_MERGE.md). Disable or remove it; while it is enabled, its copies replace the built-in ones.
ClassicAPI is the main API layer. Use its Auto Dismount, Auto Stand and Auto Cancel Form settings; ShaguTweaks' duplicate Auto Dismount option was removed in 3.8.1. See the migration guide.
📦 Installation
- Install ClassicAPI.
- Optionally install SuperWoW.
- Rename the addon folder to
ShaguTweaks. - Copy it to
World of Warcraft\Interface\AddOns\ShaguTweaks. - Restart the game.
Settings: Esc → Advanced Options.
Reduced Actionbar Size automatically enables movement for all bars; there is no separate movement checkbox. Hold Ctrl+Shift+Alt to show labeled markers for the main, extra, pet, stance, experience and reputation bars. Drag a marker to move its bar; right-click it with those keys held to reset it. Dropping within 12 UI units of a neighbouring bar's original relative position snaps into alignment, preserving default spacing and insets. Main-bar snapping to action bars instead uses visible button edges and native button spacing, excluding unused artwork space. Positions are saved per character, and attached movable bars are pinned in place when moving their owner. Ordinary action-button clicks and drags remain unchanged when locked.
XP and reputation movement is included with Reduced Actionbar Size. The progress bars have move markers even when the native bars are hidden. Moving a progress bar does not make Reduced Actionbar stack its action bars at that detached location. Movement uses an empty drag outline and applies the real position once on release; current ClassicAPI uses modifier events without idle polling.
Use the Search field to filter by option name, description, category or slider label. Search ignores case and includes options inside collapsed categories. Click X to clear it; checkbox and slider changes are retained while filtering.
✨ What's different in this fork
Unit frames
- Hide Player Portrait (off): hides only the player's portrait image, including a class-icon portrait, without hiding the name, health or power bar. The surrounding portrait artwork remains.
- Hide Player Name (off): hides the detached name piece only while Standalone Player Frame is enabled. It has no effect on the ordinary grouped player frame.
- Standalone Player Frame (off): detaches the existing Blizzard portrait, name, health and power into four independently movable pieces. Hold Ctrl+Shift+Alt and drag a piece; right-click with those keys held to reset only that piece. Positions are stored per character. Existing bars, updates, numeric overlays, textures and click actions are retained. With Unit Frame Big Health for Player, the power bar matches the enlarged health bar's width and height. This option handles its own movement even when Movable Unit Frames is off; the ordinary player-frame mover yields to it. Disabling the option and reloading restores the grouped frame while keeping detached positions for later use.
The standalone bars use clean rounded Blizzard border outlines, following the active UI palette. The name has a separate class-colored fill using the health texture, including with Big Health enabled. The portrait keeps one level badge on the left; the resting/combat icon covers its level number while active. ClassicAPI's portrait mask is used for the status glow when available; it is feature-detected.
- Modern Class Colors: optional palette for all nine Vanilla classes, including blue shamans. Listed directly below Unit Frame Class Colors.
- Modern textures: class-tinted health artwork and precolored rage, energy and focus artwork. Mana uses the light-blue rectangular retail fill on every supported frame, including the druid's separate mana bar in bear/cat forms.
- Real Health Numbers: an independent module. Percentage on the left and current health on the right, inset 4 pixels; power numbers remain centered. It uses direct values when available and a lazy Vanilla health estimator for percentage-only targets, so unknown absolute target health stays percentage-only.
- Number styling: health, percentage and power numbers copy the corresponding character name's font, size and shadow. Gold is the default; White Unit Frame Numbers under Unit Frames switches the numbers to white independently of Modern Class Colors.
- Unit Frame Big Health for Player and Unit Frame Big Health for Target independently enlarge their respective health bars. Both are presentation-only and no longer forces numeric health/power text. With it, the resting pulse is limited to the portrait, and the full status artwork is restored outside resting or in combat.
- Movable Unit Frames: Player, Target, Party, Minimap, Buffs, Debuffs and Weapon Buffs share one mover and alignment grid. Hold Ctrl+Shift+Alt to drag; right-click while unlocked to reset.
- Hide Pet Unit Frame: hides the pet frame below the player frame for pet classes. The stock pet code keeps running, so nothing breaks when the pet is summoned, dismissed or dies.
Loss of Control Alert and Totem Timers (both off by default; they need ClassicAPI)
- Loss of Control Alert (Interface): a large icon, the name of the effect and a countdown above the middle of the screen when you are stunned, feared, confused, charmed, silenced, pacified, disarmed, rooted or locked out of a spell school after an interrupt. If several apply, the most disabling one is shown. Hold Ctrl+Shift+Alt to show a preview and drag it, right-click to reset (like the Swing Timer). Uses ClassicAPI's
C_LossOfControl. A classic tooltip panel and icon rim follow the default, Darkened or Golden UI palette; the timer fill retains its effect-type color. - Totem Timers (Interface, Shaman only): one icon per totem you have out (Fire, Earth, Water, Air) with the time left, turning yellow at 10 seconds and red at 5. Left-click an icon to target the totem; hover for its tooltip. Hold Ctrl+Shift+Alt to show four preview icons and drag them, right-click to reset. Uses ClassicAPI's
GetTotemInfoandPLAYER_TOTEM_UPDATE.
Cast-bar movement is always available (no checkbox): hold Ctrl+Shift+Alt, drag the marker that appears over the cast bar, right-click to reset. When you drag it, the swing bars stay where they are. The position is saved per character and survives other addons re-anchoring the bar; the Swing Timer, Wand Timer and Improved Castbar icon follow it. Enemy Castbars (the target's cast bar) works the same way: its marker appears even without a target, and the saved spot is an offset from the target frame, so the bar follows the frame.
Swing Timer and Wand Timer
- Swing Timer: main-hand and off-hand swing timers styled like the classic cast bar, with the weapon's icon on the left. They sit just above the cast bar until you move them; hold Ctrl+Shift+Alt to drag each bar (main hand, off hand and the ranged/wand bar) on its own, and right-click a bar to put just that one back.
- Wand Timer: the time until your next wand shot in the same style. It also times Auto Shot for bows, guns and crossbows, turning red during the last half second, when moving would cancel the shot.
- The timers follow the server's real attack timers through ClassicAPI's
PLAYER_SWINGevent, including parry haste and on-next-swing abilities. A bar turns gray while the target is out of reach. - The main-hand bar shows a queued Heroic Strike in light blue and Cleave in green (warriors), and Maul in orange (druids).
- Ported from brues-code/pfUI's swing timer. Requires ClassicAPI v1.15.10 or newer.
Tooltips, items and action bars
- Tooltip Details: restored guild ranks and leader marker; optional modern class colors and health texture. NPC interaction and tooltip-clear handling prevent cached colors leaking between tooltips.
- Item Rarity Borders cover merchant, quest, mail (including every TurtleMail attachment), both sides of trade, crafting and loot frames in every UI mode. Item Rarity Glows add an independent glow using the same shared rarity engine. Loot Quality colors the loot window itself and does not enable mail or trade borders.
- Range Color: self/rangeless spells no longer use a misleading legacy fallback; invalid friendly/hostile target checks and stale red/no-mana tint are handled. No additional AoE-specific exceptions have been added. The range check runs five times a second instead of every frame.
- XP Bar Text: hovering the experience bar shows current and needed XP like the reputation bar (
1555/3000), then the percentage and the rested bonus. - WorldMap Class Colors: raid members on the world map and battlefield minimap show their own class color.
- WorldMap Window: the map keeps the size you pick with Ctrl+Mousewheel (saved per character), and the title bar drags the window as well. With OctoBus installed, a Transports button left of the Continent dropdown shows or hides its transport timers.
- Loot History:
/loothistorylists recent group-loot rolls with the winner of each item; click an item for everyone's need, greed or pass and their rolls. Ported from brues-code/pfUI. Requires ClassicAPI.
Built-in Extras modules — full list of where each one went and what was left out: Docs/EXTRAS_MERGE.md
- The modules of Dusk's ShaguTweaks Extras ClassicAPI are part of this addon, each under the matching category: Action Bar, Chat & Social, Loot, Minimap & World Map, Tooltip & Items and Unit Frames, plus two new categories, Macro and Merchant.
- They keep their names, so your saved on/off choices carry over.
- Left out: Raid Frames; Bag Item Click and Bag Search Bar, which Bagshui already covers; and Auction Alt-Buy, which aux already does (Alt+click a row to buy out or cancel).
Performance and stability
- Reduced per-frame work, tooltip scans and repeated UI updates.
- Bounded player cache: the shared player cache expires old entries and holds at most 10,000 players, so the saved variables file no longer grows without limit. See Docs/PERFORMANCE.md.
- Event-driven target castbars where possible.
- Safer GUID-based handling for same-name enemies.
- Safer hooks and fewer destructive global overrides.
- English-only loading: only English data and translations are included, avoiding unused locale allocations.
- Better Turtle WoW-like server compatibility for custom items, spells and UI changes, plus various stability fixes across legacy ShaguTweaks modules.
🔷 ClassicAPI integration
ClassicAPI backs casts, auras, items and unit data: native cooldown support, filtered unit events, corrected chat identity/payload handling, and reduced duplicate player-cache records when native persistence is already enabled. Older fallbacks are retained for clients without the newer features.
Modules that use ClassicAPI directly:
- Range Color
- AoE Loot
- Chat Tweaks
- Equip Compare
- Free Slot Count
- Improved Castbar
- Item Rarity Borders
- Item Rarity Glows
- Loot History
- Movable Unit Frames
- Real Health Numbers
- No Toggle Auto-Attack
- Sell Junk
- Skip Gossip Text
- Swing Timer
- Wand Timer
- Loss of Control Alert
- Totem Timers
- Enemy Castbars
- Tooltip Details
- WorldMap Window
- Buy Em All
- Macro Icons and Macro Tweaks
- MiniMap Framerate & Latency
- Reagent Counter
- Reveal World Map
- Show Bags and Show Micro Menu
Other modules can also benefit indirectly from ClassicAPI through shared ShaguTweaks libraries and caches. Per-version notes are in Docs/CLASSICAPI_UPDATES.md.
⚙️ Modules
Names match the in-game options list. Modules marked (off) are disabled until you enable them.
Action Bar
- Auto Stance (enters a required stance/form; distinct from ClassicAPI Auto Cancel Form)
- Range Color (off)
- Cooldown Numbers
- Hide Gryphons (off)
- Improved Castbar (off)
- Cast-bar movement is built in: hold Ctrl+Shift+Alt to drag it, right-click to reset (no checkbox)
- Swing Timer (off)
- Wand Timer (off)
- No Toggle Auto-Attack
- Reduced Actionbar Size (off)
- Show Bags (off)
- Show Micro Menu (off)
- Reagent Counter (off)
- Hide Macro Text (off)
- Mouseover Right (off)
- Mouseover Right 2 (off)
- Center Vertical Actionbar (off)
- Floating Actionbar (off)
- Dragonflight Gryphons (off)
Unit Frames
- Unit Frame Big Health for Player (off)
- Unit Frame Big Health for Target (off)
- Unit Frame Class Colors (off)
- Modern Class Colors (off)
- Unit Frame Class Portraits (off)
- Unit Frame Energy & Mana Tick (off)
- Hide Pet Unit Frame (off)
- Unit Frame Abbreviated Names (off)
- Movable Unit Frames
- Real Health Numbers (off)
- White Unit Frame Numbers (off)
- Enemy Castbars
Nameplate addons
Nameplate Scale, Class Colors and Castbar were removed in 3.8 because enabling them alongside another nameplate addon can cause conflicts. See the migration guide for BlizzNameplatesPlus, UnitPlates and ShaguPlates alternatives.
Tooltip & Items
- Equip Compare
- Free Slot Count
- Item Rarity Borders
- Item Rarity Glows (off)
- Sell Junk
- Tooltip Details
- Vendor Values
- Metric Range
- Cursor Tooltip (off)
- Hide Combat Tooltip (off)
Chat & Social
- Blue Shaman Class Colors (off)
- Chat Tweaks
- Chat Levels (off)
- Chat Spam Filter (off)
- Social Colors
- Chat Timestamps (off)
- Enable Text Shadow (off)
- Center Text Input Box (off)
- Block NPC Spam (off)
- World Chat Hider (off)
Minimap & World Map
- Minimap Clean (off)
- MiniMap Clock
- MiniMap Square (off)
- MiniMap Tweaks
- Enlarged Minimap (off)
- Hide Tracking Icon
- WorldMap Class Colors
- WorldMap Coordinates
- WorldMap Window
- Reveal World Map
- MiniMap Framerate & Latency (off)
Loot
- AoE Loot (off)
- Improved Roll Frames (off)
- Loot Cursor
- Loot History (
/loothistory) - Loot Quality (off)
Macro
- Macro Icons
- Macro Tweaks
Merchant
- Buy Em All
Interface
- Darkened UI (off)
- Golden UI (off): gold borders, tooltips and dialogs like the WoW Forever client. Darkened UI and Golden UI also recolor the borders of ShaguDPS, Bagshui, Outfitter, SoulstoneTracker, OctoBus, RollFor and VCB, and of addon minimap buttons; Golden UI retains the default text colors. TrinketMenu keeps its own styling in every UI mode.
Golden and Darkened UI keep the original NPC quest/gossip parchment, including its torn edges, while styling the outer frame. No stationery overlay is used on those panels.
When Unit Frame Big Health for Target is disabled, Golden UI's NPC target name header uses an opaque native window-title texture matching the map/quest titles. Player targets and your own player frame retain their native/class-colored backgrounds. The header updates when switching targets.
- Hide Errors (off)
- Smaller Error Frame (off)
- Loss of Control Alert (off)
- Totem Timers (off, Shaman)
- XP Bar Text (current/needed XP, percentage and rested bonus on hover)
General
- Super WoW Compatibility
- Turtle WoW Compatibility
- Skip Gossip Text (off)
🧹 Removed / integrated modules
The following original ShaguTweaks modules are not included as standalone modules because their functionality is either integrated elsewhere or no longer required:
- Chat Links → integrated into Chat Tweaks
- Movable Unit Frames Extended → integrated into Movable Unit Frames
- ShaguTweaks Extras ClassicAPI → its modules are built in, except Raid Frames, Bag Item Click, Bag Search Bar and Auction Alt-Buy
📜 Project identity & licensing
This is an independent community project. Compatibility with World of Warcraft, Turtle WoW-like environments, ClassicAPI, SuperWoW, or other referenced projects does not imply affiliation, endorsement, sponsorship, or ownership by their respective rights holders or maintainers.
World of Warcraft and Blizzard Entertainment names, marks, and game assets remain the property of their respective rights holders.
For detailed provenance and licensing information, see:
- CHANGELOG.md
- THIRD_PARTY_NOTICES.md
- PROJECT_IDENTITY.md
- Docs/ASSET_PROVENANCE.md
- Docs/MODERN_MANA.md
- Docs/PERFORMANCE.md — player cache limits and other performance notes
- Docs/UPSTREAM_README.md — the Dusk fork's README, kept for reference
- LICENSES/
🙏 Credits
Original addon and modules by Shagu.
Additional maintenance and Turtle WoW work by paokkerkir.
ClassicAPI compatibility fork maintained by Dusk-92.
Special thanks to Sandrea for providing AoELoot, adapted here as the AoE Loot module.
Special thanks to Jesper_92 for reporting issues that helped improve the addon.
Additional code and ideas from pfUI and zUI.
Extras modules from Dusk-92's ShaguTweaks-Extras-ClassicAPI, a fork of paokkerkir's ShaguTweaks-extras (MIT, Shagu).
Swing Timer, Wand Timer and Loot History ported from brues-code/pfUI (MIT, Shagu and contributors).
Extended Movable Unit Frames support and several of the Extras modules adapted from TokensWorth/ShaguTweaks-mods, originally released under MIT by GryllsAddons. See THIRD_PARTY_NOTICES.md.
Released under the original MIT License.