- Warn once in chat when ShaguTweaks Debuff Timer draws on target debuffs. - Use STANDARD_TEXT_FONT for timers and stack counts. - Clean up comments and dead code; add .gitattributes and .gitignore. - Rewrite README (ClassicAPI version table, ShaguTweaks compatibility); move history to CHANGELOG.md. - Tests: 19 scenarios, no machine-specific paths. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019W3rwutyoLNHxXPycYWSMc
TargetFrameBuff
Shows up to 32 buffs and 16 debuffs on the default target frame of a 1.12 client (tested target: Turtle WoW 1.18.1). Buffs sit above the frame in rows of 5-11-11-5, debuffs below it in rows of 4-4-8.
With the optional ClassicAPI client mod it also adds countdown text, stack counts, debuff-type borders, a gold border on enemy buffs you can remove, optional cooldown sweeps, and accurate tooltips. Without ClassicAPI it behaves like the original: more icons, no timers.
Installation
- Copy the
TargetFrameBufffolder intoInterface/AddOns, replacing any older copy. - Restart the client (or
/reload). - Optional: install ClassicAPI.
ClassicAPI
| Version | What you get |
|---|---|
| none | 32 buffs and 16 debuffs, no timers, borders or sweeps |
| 1.17.x | Timers, stack counts, borders; auras are re-read every 0.5 s |
| 1.17.10+ | Event-driven updates (UNIT_AURA_DELTA), no polling |
| 1.17.11+ | Recommended. Fixes the reverse sweep briefly showing a bright icon just before an aura ends |
Harmful auras beyond the first 16 use free buff-row slots. ClassicAPI decides aura order and lists your own auras first.
Settings
/tfb opens the AddOn Options panel (or prints help if the client has none).
| Command | Action | Default |
|---|---|---|
/tfb timers [on|off] |
Countdown text | on |
/tfb highlight [on|off] |
Gold border on removable enemy buffs | on |
/tfb sweeps [on|off] |
Reverse cooldown sweeps | off |
/tfb size 6-20 |
Countdown font size | 9 |
/tfb warning 0-30 |
Seconds left at which text turns red | 5 |
/tfb reset |
Restore defaults |
Settings are saved and kept even while ClassicAPI is absent.
Compatibility with ShaguTweaks
Checked against the upstream ShaguTweaks source.
| ShaguTweaks option | Effect | What to do |
|---|---|---|
| Unit Frames > Debuff Timer | Conflict. Adds its own timer text, sweep and green stack count to debuffs 1-16, on top of ours. It ignores overflow debuffs in the buff row. | Disable it. TargetFrameBuff prints a warning in chat if it detects it. Alternatively use /tfb timers off and /tfb sweeps off. |
| Cooldown Numbers | No conflict found. It only hooks CooldownFrame_SetTimer; our sweeps use SetCooldown. |
Keep. |
| Dark UI Elements | Adds a dark border to every TargetFrameBuff* button. Ours draws above it, so the gold removable-buff border should stay visible. |
Not verified in-game. |
| Target Castbar | Positions the castbar from debuff 7 and 11 being shown. With the 4-4-8 layout it can sit over the second and third debuff rows. | Disable it or move the castbar if it overlaps. |
| Move Unit Frames | Buff and debuff buttons are children of TargetFrame, so they follow it. |
Keep. |
Notes
- Timings from ClassicAPI are best effort. Unobserved applications and some max-stack refreshes have unknown expiration; their timer and sweep stay hidden while the icon remains.
- This is not a live WoW test. See VALIDATION.md for what was simulated and what to check in-game, and CHANGELOG.md for history.
Development
Tests simulate the WoW API under Lua 5.1: pip install lupa, then python3 tests/test_addon.py.
Credits
Based on project-949. Original author lua@lumpn.de; modified.