277 Commits
Author SHA1 Message Date
OEVGandClaude Opus 5.5 15712e82c7 WorldMap Window: keep the size, drag by the title, OctoBus Transports button; add Loot History
- The map keeps the scale picked with Ctrl+Mousewheel (saved per
  character, .4 to 2). It was reset to .85 on every open and by the
  Turtle WoW maximize wrapper.
- The title bar drags the window: on Turtle the title sits 17 units above
  the frame, so the frame's click area now extends over it.
- With OctoBus loaded, a Transports button left of the Continent dropdown
  runs OctoBus' own toggle. Its window is lifted above the map while both
  are open and restored when the map closes.
- New Loot History module (/loothistory), ported from brues-code/pfUI and
  rebuilt with stock 1.12 widgets, on ClassicAPI's C_LootHistory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 04:08:31 +00:00
OEVGandClaude Opus 5.5 0a0cd055c4 Swing Timer: color the main-hand bar for queued Heroic Strike, Cleave and Maul
Ported from pfUI's swing timer. UNIT_SPELLCAST_SENT with
C_Spell.IsNextMeleeSpell and the spell name sets the queue; it clears on
UNIT_SPELLCAST_SUCCEEDED or _FAILED, on leaving combat, or when the
ability's action button goes dark after being lit (Esc or a second press
un-queues it without an event). Heroic Strike is light blue instead of
pfUI's yellow, which would not stand out on the gold bar; Cleave green
and Maul orange as in pfUI. Out-of-range gray still wins.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 01:57:32 +00:00
OEVGandClaude Opus 5.5 151abf3280 Add Swing Timer and Wand Timer, ported from pfUI
Two Action Bar options, off by default, ported from brues-code/pfUI's
swing timer and restyled as classic cast bars: dark background,
UI-StatusBar fill, the cast bar border and spark, and the weapon's icon
on the left like Improved Castbar's spell icon.

- Swing Timer: main hand and off hand (shields are skipped).
- Wand Timer: wand Shoot, and Auto Shot for bows, guns and crossbows,
  red during Auto Shot's last half second.

ClassicAPI's PLAYER_SWING drives the timers and PLAYER_SWING_RANGE_UPDATE
grays a bar while the target is out of reach. Auto-attack state uses the
1.12 PLAYER_ENTER_COMBAT/PLAYER_LEAVE_COMBAT and START/STOP_AUTOREPEAT_SPELL
events, plus START/STOP_AUTOATTACK on ClassicAPI v1.18.14+. Without
PLAYER_SWING (before v1.15.10) both options do nothing.

The bars stack just above the cast bar. Holding Ctrl+Shift+Alt shows a
preview to drag; right-click resets. The position is saved per character.

pfUI's MIT license is preserved in LICENSES/pfUI-MIT.txt and credited in
THIRD_PARTY_NOTICES.md and the README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 01:48:51 +00:00
OEVGandClaude Opus 5.5 a482808743 Add Hide Pet Unit Frame and show XP numbers on the XP bar
Hide Pet Unit Frame (Unit Frames, off by default) parents PetFrame to a
frame that is never shown. PetFrame_Update shows the frame again on
every pet change, so a plain Hide() would not last; with the hidden
parent the stock pet code runs unchanged and nothing draws.

XP Bar Text shows current/needed XP like the reputation bar
("1555/3000  51%"), followed by the rested bonus as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 01:25:13 +00:00
OEVGandClaude Opus 5.5 f5f651936c Enlarged Minimap: run the buff anchor check only while BuffFrame is shown
The per-frame check that keeps the buff rows clear of the enlarged
minimap now lives on a child frame of BuffFrame, so it only runs while
the stock buffs are visible. Buff addons such as VCB hide BuffFrame and
TemporaryEnchantFrame; the stock BuffFrame_Enchant_OnUpdate re-anchoring
stops with them, and the check was moving hidden frames every frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 00:45:25 +00:00
OEVGandClaude Opus 5.5 4ef534fabb Fix raid colors on the world map and drop two per-frame checks
WorldMap Class Colors assumed WorldMapRaidN shows raidN. In a raid the
map packs its icons and stores the real unit on each icon, so icons
showed other players' class colors. Use the icon's unit, or its name
for battleground team members outside the raid. The updaters are now
children of the maps, so they only run while a map is open.

Class Portraits checked the target-of-target GUID on every frame. Check
when the stock handler reports a new name, and otherwise five times a
second.

Enlarged Minimap is unchanged: the stock UI re-anchors the buff frame
every frame, so its check has to as well. Documented in
Docs/PERFORMANCE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 00:32:33 +00:00
OEVGandClaude Opus 5.5 1ae8398a2d Bound the player cache and stop per-frame range checks
- libunitscan: expire the shared player cache once per session (180 days
  for known classes, 90 for class-less, at most 10,000 players). Every
  sighting now stamps an age, so roster and mouseover entries can expire.
- libunitscan: keep a player's GUID only while the class is unknown and
  resolve such entries later with GetPlayerInfoByGUID.
- libunitscan: skip the GUID lookup for known chat speakers seen within
  the hour, throttle full guild rescans to once a minute, skip UnitGUID
  when UnitClass answered, and query ClassicAPI's player cache once per
  miss instead of twice.
- Social Colors: drop its separate 180-day cleanup.
- Range Color: use its own 0.2 s timer. Sharing Blizzard's rangeTimer ran
  the check every frame for every ranged button.
- Docs/PERFORMANCE.md: document the cache rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019W3rwusM4i1CYaHQAYixJ7
2026-11-02 00:09:59 +00:00
OEVGandClaude Sonnet 5.5 e4c7741226 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
2026-11-01 00:15:11 +00:00
OEVG 48d45f8fe6 Apply Patch 2026-10-30 20:06:32 +00:00
Dusk-92 439156479a Raise pet health text above unit frame artwork
Render Real Health Numbers pet health/power text through a dedicated PetFrame overlay at a higher frame level while preserving the existing 9 px font size and anchors.
2026-09-08 13:08:04 +02:00
Dusk-92 05d29bb798 Add reset support to Movable Unit Frames
Add per-frame reset support to Movable Unit Frames and document the reset action in the module tooltip.
2026-09-08 09:56:50 +02:00
Dusk-92 b4b675a845 Fix Real Health Numbers text alignment
Adjust stock player/target health and power text by 0.5px while keeping Unit Frame Big Health positioning unchanged.
2026-09-08 09:17:02 +02:00
Dusk-92 2f1c4f42cb Harden final ClassicAPI audit interactions 2026-09-05 16:41:09 +02:00
Dusk-92 0dd7b0ed4c Align Minimap Clock updates to minute boundaries 2026-09-05 15:31:58 +02:00
Dusk-92 4bd7fddaff Optimize Item Colors refresh allocations 2026-09-05 14:47:32 +02:00
Dusk-92 9de3a8e088 Keep quest status hover diff targeted 2026-09-05 14:18:34 +02:00
Dusk-92 3faef94b2e Show active quest status in chat hover tooltip 2026-09-05 14:17:00 +02:00
Dusk-92 af2b4fbee0 Validate plain URL TLDs before linking 2026-09-05 12:31:09 +02:00
Dusk-92 fe210133ab Fix plain URLs and add quest link tooltips 2026-09-05 12:16:35 +02:00
Dusk-92 04d42bb29d Optimize Chat Tweaks message hot path 2026-09-05 11:56:31 +02:00
Dusk-92 3d8137ed61 Use ClassicAPI gossip options in Skip Gossip Text 2026-09-05 11:35:05 +02:00
Dusk-92 aa7e056d0f Mention clock and timer in movable frames description 2026-09-05 10:53:38 +02:00
Dusk-92 08a24073d3 Integrate clock and timer with movable frames 2026-09-05 10:10:09 +02:00
Dusk-92 dd43da0f34 Add clock and timer to movable frames 2026-09-05 10:09:47 +02:00
Dusk-92 7484b4342d Use ClassicAPI exclusively for target cast discovery 2026-09-04 21:32:04 +02:00
Dusk-92 848956b965 Use ClassicAPI exclusively for Improved Castbar 2026-09-04 21:19:10 +02:00
Dusk-92 9704b5fe19 Ignore unrelated unit power events in Energy Tick 2026-09-04 20:49:30 +02:00
Dusk-92 e852c6c7d8 Use ClassicAPI exclusively for no-toggle detection 2026-09-04 18:46:33 +02:00
Dusk-92 58463e5558 Give AoE Loot priority over native autoloot 2026-09-04 18:11:24 +02:00
Dusk-92 aeaa862a44 Sync AoE Loot cleanup with main 2026-09-04 18:10:41 +02:00
Dusk-92 deb971e34c Update Turtle vendor compatibility comment 2026-09-03 23:34:57 +02:00
Dusk-92 04342ba30a Restore SellValueDB compatibility via ClassicAPI 2026-09-03 23:34:40 +02:00
Dusk-92 8c070ac1b2 Let native autoloot settle before AoE loot 2026-09-03 23:30:23 +02:00
Dusk-92 5c609a438f Remove obsolete AoE Loot ClassicAPI fallbacks 2026-09-03 21:34:09 +02:00
Dusk-92 daf8aed77a Avoid repeated WorldMap coordinate string allocations 2026-09-03 21:18:21 +02:00
Dusk-92 ca65ff8ae2 Optimize WorldMap coordinate updates with ClassicAPI 2026-09-03 21:17:54 +02:00
Dusk-92 c3f13759ca Use ClassicAPI native mouseover for Minimap Clean 2026-09-03 20:53:00 +02:00
Dusk-92 f03b3dc460 Replace chat emote social scans with ClassicAPI 2026-09-03 20:49:47 +02:00
Dusk-92 bc50cf90a3 Optimize WorldMap class color party checks 2026-09-03 19:20:13 +02:00
Dusk-92 1b38cb5e52 Keep roll tracking on direct ClassicAPI item IDs 2026-09-03 18:50:17 +02:00
Dusk-92 4aa49f3a38 Harden ClassicAPI roll history binding 2026-09-03 18:49:33 +02:00
Dusk-92 9ef89c863d Match roll history through ClassicAPI item IDs 2026-09-03 18:48:05 +02:00
Dusk-92 7a7208f874 Preserve original greed roll highlight 2026-09-03 18:45:09 +02:00
Dusk-92 7b78540c32 Bind roll history only after native start completes 2026-09-03 18:42:58 +02:00
Dusk-92 411559794c Use ClassicAPI loot history for roll tracking 2026-09-03 18:42:14 +02:00
Dusk-92 19ee625f0b Use ClassicAPI native Equip Compare paths 2026-09-03 18:17:45 +02:00
Dusk-92 d929efba89 Reset Tooltip Details state on native clear 2026-09-03 17:40:47 +02:00
Dusk-92 222e5fd1ed Use ClassicAPI native tooltip identity paths 2026-09-03 17:39:04 +02:00
Dusk-92 a633a81b0f Clear stale pending Vendor Values tooltips 2026-09-03 17:11:43 +02:00
Dusk-92 fe070c94a4 Remove embedded Vendor Values price database 2026-09-03 17:09:40 +02:00