Tidy README and review ClassicAPI v1.18.13 changes

- Debuff Timer: hide the native Cooldown's own countdown numbers so the
  countdownForCooldowns CVar cannot double the overlay text.
- README: merge the duplicated feature lists, match module names and
  default states to the in-game options, link the extra Docs, and state
  the recommended ClassicAPI version.
- Docs/CLASSICAPI_UPDATES.md: record the v1.17.7 to v1.18.13 review.
- .gitignore: ignore editor and merge leftovers.
- ShaguTweaks.toc: drop the Russian note from the English-only fork.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
This commit is contained in:
2026-11-01 00:15:11 +00:00
co-authored by Claude Sonnet 5.5
parent d705a9b221
commit e4c7741226
5 changed files with 136 additions and 75 deletions
+6
View File
@@ -1,4 +1,10 @@
*.bak
*.tmp
*.orig
*.rej
*.log
.DS_Store
Thumbs.db
desktop.ini
.vscode/
.idea/
+55 -4
View File
@@ -1,9 +1,14 @@
# ClassicAPI integration updates
These changes use newer ClassicAPI features while retaining older fallback paths.
ClassicAPI v1.17.6 was the latest release reviewed on 2026-10-24. Update both
ClassicAPI's DLL and its bundled `!!!ClassicAPI` addon together, following its
installation instructions; a DLL update needs a full client restart.
ClassicAPI v1.18.13 was the latest release reviewed on 2026-10-31 (the previous
review covered v1.17.6 on 2026-10-24). Update both ClassicAPI's DLL and its
bundled `!!!ClassicAPI` addon together, following its installation
instructions; a DLL update needs a full client restart.
The integration code below was written against v1.17.6. The v1.17.7 to v1.18.13
review found nothing that needed a rewrite; see
[Reviewed since v1.17.6](#reviewed-since-v1176).
## Changes
@@ -29,6 +34,50 @@ installation instructions; a DLL update needs a full client restart.
intact. With persistence off or native storage unavailable, the original Lua
cache behavior remains. The addon never enables native persistence itself.
## Reviewed since v1.17.6
156 ClassicAPI commits (v1.17.7 to v1.18.13) were read against the modules in
this addon.
**Changed here**
- **Debuff Timer:** the native `Cooldown` frame it creates now calls
`SetHideCountdownNumbers(true)` when available. ClassicAPI can draw its own
countdown numbers when the `countdownForCooldowns` CVar is `1` (default `0`),
which would have doubled the timer text this module draws itself.
**Worth knowing, no code change**
- **Nameplate crash fix (v1.18.10):** world-tick subscribers now run after the
UI draw. Before this, an addon that restyled a nameplate from
`NAME_PLATE_CREATED` or a `C_Timer` callback could crash the client. No
crash was traced to this addon, but v1.18.10 or newer is recommended for the
Nameplates modules.
- **Range Color:** since v1.18.0, `C_Spell.IsSpellInRange` returns `nil` for a
unit the spell cannot be cast at. The module already treats `nil` as "no
range to fail", so it needs nothing.
- **Cooldown Numbers:** action, bag and spellbook cooldowns are still 1.12
indicator Models, and `CooldownFrame_SetTimer` still serves them. The
module's hook is still required; the native countdown numbers do not replace
it.
- **Filtered unit events:** `RegisterUnitEvent` now also filters custom events
that ClassicAPI fires itself (v1.18.9). The vanilla events used here were
already filtered.
**Not adopted**
- `UNIT_POWER_UPDATE`, `UNIT_POWER_FREQUENT`, `UNIT_MAXPOWER` (v1.18.10): the
legacy `UNIT_MANA` / `UNIT_ENERGY` / `UNIT_RAGE` events still fire and the
overlays depend on their payloads. Switching would add a code path without a
measured gain.
- `UNIT_AURA_DELTA` and aura instance IDs (v1.17.10): the debuff library
refreshes on `UNIT_AURA` for the target and reads auras by index, so it does
not need change sets.
- `UNIT_TARGET`, `UnitFacing`, `wipe`, the `Cooldown` countdown formatter and
the other new APIs: no module here needs them.
Nothing from this review was tested in game.
## Measuring performance
On current ClassicAPI, the following prints ShaguTweaks' Lua memory in KiB:
@@ -66,8 +115,10 @@ no memory/FPS improvement is claimed without a live measurement.
## Primary references
- [ClassicAPI v1.18.13](https://github.com/brues-code/ClassicAPI/releases/tag/v1.18.13)
- [API reference (v1.18.13)](https://github.com/brues-code/ClassicAPI/blob/v1.18.13/docs/API.md)
- [ClassicAPI v1.17.6](https://github.com/brues-code/ClassicAPI/releases/tag/v1.17.6)
- [API reference](https://github.com/brues-code/ClassicAPI/blob/v1.17.6/docs/API.md)
- [Nameplate crash fix](https://github.com/brues-code/ClassicAPI/commit/4eb214f)
- [Native cooldown rendering](https://github.com/brues-code/ClassicAPI/commit/b83bb5b52b11ffd51dd59aa7465b1185222f2bd4)
- [Reliable chat payload](https://github.com/brues-code/ClassicAPI/commit/b5aed30a5db5ef033dd9a6619d8f74310787c4c9)
- [Native player-name lookup](https://github.com/brues-code/ClassicAPI/commit/c7bb90895f8802ba837833d5ad1f9acbe0afece4)
+69 -70
View File
@@ -1,32 +1,17 @@
# 🧩 ShaguTweaks — ClassicAPI
A lightweight fork of [ShaguTweaks](https://github.com/shagu/ShaguTweaks) for **Turtle WoW-like servers**.
A lightweight fork of [ShaguTweaks](https://github.com/shagu/ShaguTweaks) for **Turtle WoW-like servers**, focused on **stability, compatibility and performance** while keeping the original ShaguTweaks experience.
Focused on **stability, compatibility and performance** while keeping the original ShaguTweaks experience.
This is an English-only customization of [Dusk/ShaguTweaks-ClassicAPI](https://octowow.st/git/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**.
An English-only customization of [Dusk/ShaguTweaks-ClassicAPI](https://octowow.st/git/Dusk/ShaguTweaks-ClassicAPI), based on [ShaguTweaks](https://github.com/shagu/ShaguTweaks), for the Vanilla client environment with ClassicAPI.
## Features of this fork
- **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:** percentage on the left and current health on the right, inset 4 pixels. Power numbers remain centered. 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.
- **Movable Unit Frames:** hold **Ctrl+Shift+Alt** to drag; right-click while unlocked to reset.
- **Portrait resting glow:** with **Unit Frame Big Health**, the resting pulse is limited to the portrait. The full status artwork is restored outside resting or in combat.
- **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.
- **Range Color fixes:** 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.
- **English-only loading:** only English data and translations are included, avoiding unused locale allocations.
- **ClassicAPI integration:** 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.
## 🔌 Requirements
- **[ClassicAPI](https://github.com/brues-code/ClassicAPI) — required**
- **[SuperWoW](https://github.com/balakethelock/SuperWoW) — optional / recommended**
- **[ClassicAPI](https://github.com/brues-code/ClassicAPI) — required.** Install both the DLL and its bundled `!!!ClassicAPI` addon, and restart the client after a DLL update. v1.18.10 or newer is recommended (it includes a crash fix for addons that restyle nameplates). The integration was last reviewed against v1.18.13; see [Docs/CLASSICAPI_UPDATES.md](Docs/CLASSICAPI_UPDATES.md).
- **[SuperWoW](https://github.com/balakethelock/SuperWoW) — optional / recommended.** Only used as an additional fallback for some cast/GUID information.
ClassicAPI is the main API layer. SuperWoW is only used as an additional fallback for some cast/GUID information.
ClassicAPI is the main API layer.
## 📦 Installation
@@ -38,29 +23,44 @@ ClassicAPI is the main API layer. SuperWoW is only used as an additional fallbac
Settings: **Esc → Advanced Options**.
## ✨ Main changes
## ✨ What's different in this fork
**Unit frames**
- **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** is 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.
**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, trade, crafting and loot frames, and **Item Rarity Glows** add an independent glow using the same shared rarity engine.
- **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.
**Performance and stability**
- ClassicAPI-backed integration for casts, auras, items and unit data.
- Reduced per-frame work, tooltip scans and repeated UI updates.
- Event-driven target and nameplate castbars where possible.
- Safer GUID-based handling for same-name enemies.
- Better Turtle WoW-like server compatibility for custom items, spells and UI changes.
- Safer hooks and fewer destructive global overrides.
- Expanded Item Rarity Borders support for merchant, quest, mail, trade, crafting and loot frames.
- Added independent Item Rarity Glows using the shared item rarity engine.
- Expanded Movable Unit Frames to handle Player, Target, Party, Minimap, Buffs, Debuffs and Weapon Buffs through one shared Ctrl+Shift mover and alignment grid.
- Restored Real Health Numbers as an independent module, with direct values when available and a lazy Vanilla health estimator fallback for percentage-only targets.
- Unit Frame Big Health is presentation-only again and no longer forces numeric health/power text.
- Various stability fixes across legacy ShaguTweaks modules.
- **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.
## 🔷 Mods using ClassicAPI directly
## 🔷 ClassicAPI integration
- Actionbar Range Color
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
- Auto Dismount
- Chat Tweaks
- Equip Compare
- Free Slots
- Free Slot Count
- Improved Castbar
- Item Rarity Borders
- Item Rarity Glows
@@ -68,39 +68,42 @@ Settings: **Esc → Advanced Options**.
- Real Health Numbers
- Nameplate Class Colors
- Nameplate Castbar
- No Toggle
- No Toggle Auto-Attack
- Sell Junk
- Skip Gossip Text
- Enemy Target Castbar
- Enemy Castbars
- Tooltip Details
- WorldMap Window
Other modules can also benefit indirectly from ClassicAPI through shared ShaguTweaks libraries and caches.
Other modules can also benefit indirectly from ClassicAPI through shared ShaguTweaks libraries and caches. Per-version notes are in [Docs/CLASSICAPI_UPDATES.md](Docs/CLASSICAPI_UPDATES.md).
## ⚙️ Modules
Names match the in-game options list. Modules marked *(off)* are disabled until you enable them.
### Action Bar
- Auto Dismount
- Auto Stance
- Actionbar Range Color
- Range Color *(off)*
- Cooldown Numbers
- Hide Gryphons
- Improved Castbar
- Hide Gryphons *(off)*
- Improved Castbar *(off)*
- No Toggle Auto-Attack
- Reduced Actionbar
- Reduced Actionbar Size *(off)*
### Unit Frames
- Big Health
- Class Colors
- Class Portraits
- Energy & Mana Tick
- Health Colors
- Unit Frame Big Health *(off)*
- Unit Frame Class Colors *(off)*
- Modern Class Colors *(off)*
- Unit Frame Class Portraits *(off)*
- Unit Frame Energy & Mana Tick *(off)*
- Movable Unit Frames
- Real Health Numbers
- Enemy Target Castbar
- Target Debuff Timer
- Real Health Numbers *(off)*
- White Unit Frame Numbers *(off)*
- Enemy Castbars
- Debuff Timer
### Nameplates
@@ -111,28 +114,28 @@ Other modules can also benefit indirectly from ClassicAPI through shared ShaguTw
### Tooltip & Items
- Equip Compare
- Free Slots
- Free Slot Count
- Item Rarity Borders
- Item Rarity Glows
- Item Rarity Glows *(off)*
- Sell Junk
- Tooltip Details
- Vendor Values
### Chat & Social
- Blue Shaman Class Colors
- Blue Shaman Class Colors *(off)*
- Chat Tweaks
- Chat Levels
- Chat Spam Filter
- Chat Levels *(off)*
- Chat Spam Filter *(off)*
- Social Colors
### Minimap & World Map
- Clean Minimap
- Minimap Clock
- Minimap Square
- Minimap Tweaks
- Minimap Zoom
- Minimap Clean *(off)*
- MiniMap Clock
- MiniMap Square *(off)*
- MiniMap Tweaks
- Enlarged Minimap *(off)*
- Hide Tracking Icon
- WorldMap Class Colors
- WorldMap Coordinates
@@ -140,28 +143,22 @@ Other modules can also benefit indirectly from ClassicAPI through shared ShaguTw
### Loot
- AoE Loot
- Improved Roll Frames
- AoE Loot *(off)*
- Improved Roll Frames *(off)*
- Loot Cursor
### Interface
- Darkened UI
- Hide Errors
- Smaller Error Frame
- Darkened UI *(off)*
- Hide Errors *(off)*
- Smaller Error Frame *(off)*
- XP Bar Text
### General
- Super WoW Compatibility
- Turtle WoW Compatibility
- Skip Gossip Text
## 🔧 Compatibility
- ClassicAPI integration
- Turtle WoW-like server integration
- SuperWoW integration
- Skip Gossip Text *(off)*
## 🧹 Removed / integrated modules
@@ -181,7 +178,9 @@ For detailed provenance and licensing information, see:
- [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)
- [PROJECT_IDENTITY.md](PROJECT_IDENTITY.md)
- [Docs/ASSET_PROVENANCE.md](Docs/ASSET_PROVENANCE.md)
- [LICENSES/](LICENSES/)
- [Docs/MODERN_MANA.md](Docs/MODERN_MANA.md)
- [Docs/UPSTREAM_README.md](Docs/UPSTREAM_README.md) — the Dusk fork's README, kept for reference
- [LICENSES/](LICENSES)
## 🙏 Credits
-1
View File
@@ -2,7 +2,6 @@
## Title: |cffffcc00Shagu|cffffffffTweaks |cffcccccc[ClassicAPI]
## Author: Shagu
## Notes: A collection of tweaks and enhancements to the Default UI
## Notes-ruRU: Коллекция настроек и улучшений стандартного пользовательского интерфейса.
## Version: GIT
## Dependencies: !!!ClassicAPI
## SavedVariables: ShaguTweaks_player_cache, ShaguTweaks_social_cache
+6
View File
@@ -205,6 +205,12 @@ module.enable = function(self)
local frameType = API.nativecooldowns and "Cooldown" or "Model"
button.cd = CreateFrame(frameType, "TargetFrameDebuff"..i.."Cooldown", button, "CooldownFrameTemplate")
button.cd.noCooldownCount = true
-- The timer text is drawn by the overlay below. A native Cooldown
-- would otherwise add a second set of numbers when the
-- countdownForCooldowns CVar is turned on.
if type(button.cd.SetHideCountdownNumbers) == "function" then
button.cd:SetHideCountdownNumbers(true)
end
button.cd:SetAllPoints()
button.cd:SetScale(.6)
button.cd:SetAlpha(.8)