175 Commits

Author SHA1 Message Date
florian.berthold 6078989cb1 fix(login): defer downgrade popup, guard data, include CoA classes
lint / lint (push) Has been cancelled
Three fixes addressing the reported 'auras silently vanish on next save'
bug, plus collateral robustness in the same code path:

1. WeakAuras.lua PLAYER_LOGIN handler (~L1297-1308): the downgrade branch
   fired StaticPopup_Show('WEAKAURAS_CONFIRM_REPAIR', ...) synchronously
   inside the event handler. On the CoA reworked StaticPopup system this
   fires too early and silently fails to show the dialog, which means
   neither OnAccept nor OnCancel ever runs, so Private.Login() is never
   called. With no displays loaded, the next PLAYER_LOGOUT serializes an
   empty table over WeakAurasSaved and the user loses all their auras.
   Wrap the call in C_Timer.After(0, ...) so it fires after the event
   frame stack has unwound and the popup system is ready.

   This is the most likely root cause of the user report 'my auras don't
   save anymore' that surfaced on the PTR last week.

2. WeakAuras.lua WEAKAURAS_CONFIRM_REPAIR popup (~L2263-2277): OnShow and
   OnCancel both unconditionally dereferenced self.data.reason. If the
   popup is ever fired with nil or malformed data this throws and blocks
   Private.Login() from running via the OnCancel fallback. Guard with a
   nil check and default reason to 'unknown' (treated as the automatic /
   downgrade path, which is the safe default that still invokes Login).

3. Types.lua WeakAuras.class_types (~L1187): only populated from
   CLASS_SORT_ORDER, which on CoA contains only the 11 vanilla classes.
   The 21 custom CoA classes were silently missing from every class
   filter dropdown in the options UI. Add a fallback loop over
   LOCALIZED_CLASS_NAMES_MALE for anything CLASS_SORT_ORDER didn't
   already register, mirroring the pattern the spec builder uses at
   ~L3829.
2026-05-24 17:38:22 +02:00
NoM0Re 05f060140a 5.21.0
(cherry picked from commit 0b28c5780e55ac544c1acace487aad0a8d8faf28)
2026-02-16 11:43:44 -07:00
NoM0Re 1836ba84d8 (fix/WeakAuras): Resolve long-standing frame level overflow
Switches frame level assignment to depth-based ordering to avoid overflow
and ensure deterministic ordering. WeakAurasFrame now correctly lives on
FrameStrata MEDIUM without interfering with Blizzard UI elements.

(cherry picked from commit e92edf5700ad70587a71c3a403e5cc672dbc9e8e)
2026-02-16 11:38:32 -07:00
NoM0Re aca47d69fd (fix/WeakAuras) BandAid: Limit frame levels to prevent exceeding UI restrictions
#85
Implemented a hard cap for frame level assignments (max 126) across multiple modules, including WeakAuras core logic and AceGUI widget prototypes.

The WotLK engine utilizes a signed 8-bit integer for frame levels. Values exceeding 127 cause an overflow. Previously, many frames were inadvertently stacked at or beyond 128, which remained largely unnoticed but caused significant rendering overhead. This got introduced on WeakAuras 4.0 with nested groups, years ago. On newer Clients the FrameLevels are capped at 10000 which makes this system operate smoothly on those clients. A larger fix will be needed in the future.

This change prevents the renderer from becoming overwhelmed at maximum depth, particularly when Blizzard UI frames with SetTopLevel(true) are toggled. Capping the values at 126 ensures that there is always a 1-bit buffer before the overflow point, allowing high-priority frames to render smoothly without depth conflicts.

(cherry picked from commit 629a45095b10b801573b2cc84d64b6b5a6c1a890)
2026-02-16 11:37:02 -07:00
NoM0Re 7d4f92e3be remove STATICPOPUP_NUMDIALOGS
(cherry picked from commit 83481dad60e044ccdb1cc948571cf849b704f24e)
2026-02-16 11:36:43 -07:00
NoM0Re 1b5678af13 (feat/Prototypes) use WeakAurasMiniTalent in the Talent Known Trigger
(cherry picked from commit 0d025ff3813119b51a3d57157a18c47b96f9704a)
2026-02-16 08:29:16 -07:00
NoM0Re 2a85906a75 (fix/WeakAuras) encounterid load option checking wrong variable
(cherry picked from commit 9fb568d1f6465eed585c5661a93f67cf62f01227)
2026-02-16 08:22:58 -07:00
NoM0Re aaef2a5227 encounter drop inCombat check for now
(cherry picked from commit 8d4d397c6273f5d7b5088bd89a0cc3606f0e0a3c)
2026-02-16 08:22:45 -07:00
NoM0Re 205567502a 5.20.6
(cherry picked from commit eab1d48d6c69b02d61644eaaa837cbb2c4b021e8)
2026-02-16 08:20:31 -07:00
andrew6180 3eea13ff9e fix missing load events 2025-10-20 13:21:46 -07:00
andrew6180 64d20262db link to ascension discord. Move support link 2025-10-20 13:08:08 -07:00
andrew6180 290fb39f87 add manastorm load condition 2025-10-17 13:05:19 -07:00
andrew6180 0f04c2ba3b Add talent, spec, risk, and instance type load conditions 2025-10-17 12:20:04 -07:00
andrew6180 82fc7a582d remove awesomewotlk ref 2025-10-17 09:41:39 -07:00
NoM0Re 7c7fafe5a8 5.20.5 2025-10-09 21:17:44 +02:00
NoM0Re 6c6cb73fdd (feat/Encounter): Implement Encounter Trigger/Load Options via DBM, also fire ENCOUNTER_START/END and DBM Callback Events for Custom Triggers (#73) 2025-10-04 23:39:33 +02:00
NoM0Re 348bcce594 5.20.3 2025-09-13 18:02:26 +02:00
NoM0Re 2752f0a53c (feat/TTS) Add Text-to-speech via awesome_wotlk 2025-08-25 21:41:59 +02:00
NoM0Re 1dbea4dc29 (fix/load): wrap all zone-change events to ensure reliable aura loading 2025-08-19 16:43:14 +02:00
NoM0Re 727747ad1d 5.20.1 2025-08-06 01:44:29 +02:00
NoM0Re 97dd09f47b small changes 2025-07-22 17:08:22 +02:00
NoM0Re d6ae3e020b 5.20.0 2025-07-22 16:49:18 +02:00
NoM0Re fec17c0f2f small improvements 2025-06-28 16:13:24 +02:00
NoM0Re 758dfdce86 5.19.11 2025-06-09 01:19:48 +02:00
NoM0Re 0c528b2607 5.19.10-10-g7ac7dc8 2025-06-08 22:27:10 +02:00
NoM0Re bda851552d 5.19.10 2025-05-31 22:54:39 +02:00
NoM0Re 4d47aabcda (feature/LibGlow) add Proc Glow (#35) 2025-05-01 18:43:54 +02:00
NoM0Re a595ef2a4a 5.19.7 2025-04-04 09:55:04 +02:00
NoM0Re 6cdfcac1b1 5.19.6 2025-04-03 21:03:11 +02:00
NoM0Re 875da9fb0e Bossmod triggers show timers regardless of bossmod settings 2025-04-03 21:02:32 +02:00
NoM0Re 2e2d21e5f3 (fix/Prototypes) Class&Spec Load/Triggers
- Closes #37

Due to an error in the implementation of Class & Spec in Load Conditions and Triggers (Unit Characteristics, Power, Health, Class/Spec, BT2 actualSpec), the system now also applies Retail logic.

As a result of this issue, all data has been erased and must be reselected.
2025-03-31 20:12:10 +02:00
NoM0Re 3c574cb4a6 5.19.5
No new features this release, just fixes to some minor bugs.
2025-03-14 00:48:30 +01:00
NoM0Re 57b67eca07 add mounted load condition, add more wow api for load and organize it better 2025-03-03 13:55:49 +01:00
NoM0Re 07c14c2cae support more custom 3.3.5 server, fix all Spec/Talent Triggers
- Closes #26
2025-02-28 17:38:11 +01:00
NoM0Re b1c6b7d333 fix spec load, small fixes 2025-02-26 21:08:59 +01:00
NoM0Re c48ce524f8 from retail 2025-02-25 21:49:19 +01:00
NoM0Re 7c7869494e 5.19.3
Add methods to the states/allstates table that helps with creating,
updating or remove states in an optimized way

## Advantage of using this function instead of doing a states[key] = {
... }

- If already created, update existing state, and return true if any
value was changed, this can help reduce amount of resources an aura use

- Automatically `return true` when using these functions and any change
was made

## Examples

```Lua
function(states, event, ...)
    if event == "PLAYER_TARGET_CHANGED" then
        if UnitExists("target") then
            -- if state exists it's updated, not replaced
            -- show & changed fields can be skipped
            states:Update("", {
                    name = UnitName("target"),
                    duration = 5,
                    expirationTime = GetTime() + 5,
                    progressType = "timed",
                    autoHide = true
            })
        else
            -- wipe
            states:RemoveAll()
        end
    end
    -- no need to return true
end
```

with clones

```Lua
function(states, event, ...)
    local currentEssence = UnitPower("player", Enum.PowerType.Essence)
    local maxEssence = UnitPowerMax("player", Enum.PowerType.Essence)
    for i = 1, 6 do
        if i > maxEssence then
            states:Remove(i) -- wipe allstates[6]
        else
            local value = currentEssence >= i and 1 or 0
            local newState = {
                progressType = "static",
                value = value,
                total = 1
            }
            states:Update(i, newState)
        end
    end
    -- no need to return true
end
```
2025-02-24 22:10:45 +01:00
NoM0Re ae4241a045 (Prototypes) add Class and Specialization to Trigger/Load 2025-02-23 18:52:58 +01:00
NoM0Re ac56d8816a Version Bump to 5.19.2, Introduce Talent Widget in Load, Rework Talent Known Trigger 2025-02-23 01:21:25 +01:00
NoM0Re ff8c14f430 from retail 2025-02-19 19:16:56 +01:00
NoM0Re cfc26d8c99 Fix incorrect login message, rework LibGroupTalentsWrapper
The login message was triggered incorrectly due to the "Beta" tag in the version string. This has been fixed.

Almost completely removed due to impracticality with the 3.3.5a API.
When RAID_ROSTER_UPDATE or PARTY_MEMBERS_CHANGED fires, data is unavailable for ~1.5 seconds.
If these events fire again within that time, the timer needs to be restarted, leading to excessive code complexity and requiring handling for every edge case.
Instead, we now simply check if the unit has changed when the library fires its callback.
2025-02-19 01:45:04 +01:00
NoM0Re 7a27fdae47 from retail diffcheck complete 2025-02-15 18:09:04 +01:00
NoM0Re dbdfffbf67 from retail 2025-02-15 17:34:53 +01:00
NoM0Re 4c6277c667 from retail
diffchecked
2025-02-13 18:18:03 +01:00
NoM0Re a9b95ca09d from retail 2025-02-12 21:32:40 +01:00
NoM0Re f94aff6a9d from retail 2025-02-11 20:18:57 +01:00
NoM0Re 5d1ac74d27 Rework LibGroupTalents now also returns function returns additionally, add Spec Role triggers to load/generic/bt2, fix WeakAuras.GetRegion
- **WeakAuras.SpecForUnit(unit)** = Returns: `classFileName..spec`, `Dominant Tree`, `spent1`, `spent2`, `spent3`
- **WeakAuras.GetUnitRole(unit)** = Returns one of: `"melee"`, `"caster"`, `"healer"`, `"tank"`
- **WeakAuras.SpecRolePositionForUnit(unit)** = Returns: `Dominant Tree`, `spent1`, `spent2`, `spent3`
- **WeakAuras.CheckTalentForUnit(unit, talentId)** = Returns: `"Points spent"` in talent or `nil`
- **WeakAuras.CheckGlyphForUnit(unit, glyphId)** = Returns: `true` if the player has the glyph associated with `spellID` or `spellName`, we can only see the glyphs of players running `LibGroupTalents-1.0`
2025-02-11 00:12:30 +01:00
NoM0Re fb09181ee7 from retail 2025-01-28 20:40:12 +01:00
NoM0Re 8cc8d5ea62 from retail 2025-01-28 10:36:41 +01:00
NoM0Re a99f7bd323 prepare LibGroupTalents, fix broken rebase 2025-01-27 18:40:55 +01:00