lightweight tag ccebdba60955efb70c164d9faa411eedc25d308c 12.0.007
Author:	GitHub <noreply@github.com>
Date:	Wed Nov 11 13:36:11 2026 -0800

commit 079438a7aa32f4254e4fed9f64a56147b8e43cf9
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Do not let a text output failure raise an error
    
    If the selected text output throws (seen with Blizzard's floating combat text on a 12.x-based client), the error surfaced to the player. The write is now protected: on failure the line is shown in the error frame and a one-time notice explains how to pick another output.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 079438a7aa32f4254e4fed9f64a56147b8e43cf9
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Do not let a text output failure raise an error
    
    If the selected text output throws (seen with Blizzard's floating combat text on a 12.x-based client), the error surfaced to the player. The write is now protected: on failure the line is shown in the error frame and a one-time notice explains how to pick another output.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 755d1b0e86807884fa3006e3245497554b365392
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Send kills to friends whose Battle.net app is listed before their game
    
    The Battle.net friend loop stopped ("break") at a friend's first game account that had no character. A friend who also has the Battle.net app or mobile app running often has that listed first, so their game character was never reached and they were never sent a kill. The loop now skips such accounts and keeps looking, and skips characters in another version of WoW.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9cb51ef510f780fe0ad66878284fb3bb6bb80f07
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Fix party and raid broadcasts stopping after the first zone change
    
    IsActiveBattlefieldArena() returns false, not nil, outside arenas, so "~= nil" marked the player as in an arena after any zone change. From then on kills were sent to INSTANCE_CHAT and never to PARTY or RAID. Arena/battleground state now comes from IsInInstance(), and is also refreshed on login and reload.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9cb51ef510f780fe0ad66878284fb3bb6bb80f07
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Fix party and raid broadcasts stopping after the first zone change
    
    IsActiveBattlefieldArena() returns false, not nil, outside arenas, so "~= nil" marked the player as in an arena after any zone change. From then on kills were sent to INSTANCE_CHAT and never to PARTY or RAID. Arena/battleground state now comes from IsInInstance(), and is also refreshed on login and reload.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 7b26757521332e27421a9cd316b0ba2c3ca5e08d
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Record each death once
    
    UNIT_DIED both scheduled the Death Recap lookup and still called PlayerDeath immediately, so every death was logged twice and the death streak rose by two. Deaths are now taken from PLAYER_DEAD, which fires once per death and needs no GUID comparison, and are recorded once when the recap lookup finishes.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9708f612946d0eb0d7f1f1eacb71f7af754cc671
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:48 2026 -0500

    Ignore malformed kill broadcasts instead of raising an error
    
    A broadcast whose multikill number was out of range or not a whole number, whose fields were not the expected types, or whose names contained "%", raised a Lua error in the receiver. Such messages are now ignored or made safe before use.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9708f612946d0eb0d7f1f1eacb71f7af754cc671
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:48 2026 -0500

    Ignore malformed kill broadcasts instead of raising an error
    
    A broadcast whose multikill number was out of range or not a whole number, whose fields were not the expected types, or whose names contained "%", raised a Lua error in the receiver. Such messages are now ignored or made safe before use.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 7d229c79665212c2f756b275b69096bfeb0a42ed
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:48 2026 -0500

    Do not announce a duel win as a multikill
    
    DuelTX sent the multikill counter left over from the last killshot, so a duel won shortly after a double kill was announced with the multikill sound and text. A duel now always carries 0.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 52d4ebbf9f7c73943eb6e415a1f7d37364529b78
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 16:54:45 2026 -0500

    Process your own kills locally instead of waiting for the broadcast to come back
    
    Sound, text and stats for your own kill only ran when your own addon message was delivered back to you. They now run as soon as the kill is detected; the broadcast is only for other players, and your own echo is recognised by its sender and ignored. A broadcast from another player is never added to your stats, even if it carries your name.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 079438a7aa32f4254e4fed9f64a56147b8e43cf9
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Do not let a text output failure raise an error
    
    If the selected text output throws (seen with Blizzard's floating combat text on a 12.x-based client), the error surfaced to the player. The write is now protected: on failure the line is shown in the error frame and a one-time notice explains how to pick another output.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 755d1b0e86807884fa3006e3245497554b365392
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Send kills to friends whose Battle.net app is listed before their game
    
    The Battle.net friend loop stopped ("break") at a friend's first game account that had no character. A friend who also has the Battle.net app or mobile app running often has that listed first, so their game character was never reached and they were never sent a kill. The loop now skips such accounts and keeps looking, and skips characters in another version of WoW.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9cb51ef510f780fe0ad66878284fb3bb6bb80f07
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Fix party and raid broadcasts stopping after the first zone change
    
    IsActiveBattlefieldArena() returns false, not nil, outside arenas, so "~= nil" marked the player as in an arena after any zone change. From then on kills were sent to INSTANCE_CHAT and never to PARTY or RAID. Arena/battleground state now comes from IsInInstance(), and is also refreshed on login and reload.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 7b26757521332e27421a9cd316b0ba2c3ca5e08d
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:49 2026 -0500

    Record each death once
    
    UNIT_DIED both scheduled the Death Recap lookup and still called PlayerDeath immediately, so every death was logged twice and the death streak rose by two. Deaths are now taken from PLAYER_DEAD, which fires once per death and needs no GUID comparison, and are recorded once when the recap lookup finishes.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 9708f612946d0eb0d7f1f1eacb71f7af754cc671
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:48 2026 -0500

    Ignore malformed kill broadcasts instead of raising an error
    
    A broadcast whose multikill number was out of range or not a whole number, whose fields were not the expected types, or whose names contained "%", raised a Lua error in the receiver. Such messages are now ignored or made safe before use.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 7d229c79665212c2f756b275b69096bfeb0a42ed
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 17:01:48 2026 -0500

    Do not announce a duel win as a multikill
    
    DuelTX sent the multikill counter left over from the last killshot, so a duel won shortly after a double kill was announced with the multikill sound and text. A duel now always carries 0.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 24bc82f75b2d24ce5f137b967b996eb3305ceb7f
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 16:54:46 2026 -0500

    Remove duplicate 50500 from the TOC Interface line
    
    The Interface line listed 50500 twice.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 67e567053368fe82939e7320b4fa7f134e57d9f3
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 16:54:46 2026 -0500

    Fix error when Rank 1 is set above the current streak
    
    The rank loop counted down to 0 and read ksrank[0], which does not exist, so a kill below the Rank 1 threshold raised "attempt to compare number with nil". The loop now stops at rank 1 and falls through to the existing default sound.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 166252601f38ccbc4a4c6444d5be6f6971c8a501
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 16:54:46 2026 -0500

    Do not credit party members' kills to you when the PvE option is on
    
    The condition "attacker is me and victim is a player, or PvE is on" was true for every kill by anyone in the group once the PvE option was on. The attacker must now be you in both cases.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

commit 52d4ebbf9f7c73943eb6e415a1f7d37364529b78
Author: pieopian <88107913+pieopian@users.noreply.github.com>
Date:   Tue Nov 10 16:54:45 2026 -0500

    Process your own kills locally instead of waiting for the broadcast to come back
    
    Sound, text and stats for your own kill only ran when your own addon message was delivered back to you. They now run as soon as the kill is detected; the broadcast is only for other players, and your own echo is recognised by its sender and ignored. A broadcast from another player is never added to your stats, even if it carries your name.
    
    Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

