lightweight tag ea175260ffc02a3394bdd1fd866f5120ce354305 12.0.006
Author:	GitHub <noreply@github.com>
Date:	Tue Nov 10 01:30:19 2026 -0800

commit b128708833ad0d28cc3160aa9f3a4676f607dfb5
Author: Aaron <your-github-email@example.com>
Date:   Tue Nov 10 09:48:20 2026 +1000

    Update LibSink
    
    LibSink-2.0 v12.0.3 -> v12.1.2. The Raid Warning sink now uses
    RaidWarningUtil.AddMessage when it exists (falls back to RaidNotice_AddMessage),
    and the TOC interface list adds 16001 (Forever) and the 12.1.x numbers.

commit b3f787509b4ca93965223b11f753adc01fecfaba
Author: Aaron <your-github-email@example.com>
Date:   Mon Nov 9 11:47:01 2026 +1000

    Use Death Recap to name the player's killer on retail/Forever
    
    The combat log is closed to addons in 12.0, so the killer was always recorded as
    'Unknown because of retail'. C_DeathRecap exposes sourceName as a readable string,
    so look it up after death (retrying briefly while the recap fills in) and fall back
    to the old placeholder if it is unavailable or the name is a secret value.
    
    Also call dgks:PlayerDeath instead of self:PlayerDeath: inside the event handler
    'self' is the event frame, which has no PlayerDeath method.

commit b3f787509b4ca93965223b11f753adc01fecfaba
Author: Aaron <your-github-email@example.com>
Date:   Mon Nov 9 11:47:01 2026 +1000

    Use Death Recap to name the player's killer on retail/Forever
    
    The combat log is closed to addons in 12.0, so the killer was always recorded as
    'Unknown because of retail'. C_DeathRecap exposes sourceName as a readable string,
    so look it up after death (retrying briefly while the recap fills in) and fall back
    to the old placeholder if it is unavailable or the name is a secret value.
    
    Also call dgks:PlayerDeath instead of self:PlayerDeath: inside the event handler
    'self' is the event frame, which has no PlayerDeath method.

commit 02ad29db1c1d9abbc9149332f173d8d689263cae
Author: Aaron <your-github-email@example.com>
Date:   Sun Nov 8 19:53:02 2026 +1000

    Ignore system chat messages whose text is a secret value
    
    CHAT_MSG_SYSTEM and CHAT_MSG_BG_SYSTEM_NEUTRAL payloads can be secret strings in
    restricted content. strmatch/comparison on them raises 'attempt to perform string
    conversion on a secret string value' from the duel message handler.

commit fba168aace5f3a0a4a27fce48f93e3291f49c538
Author: Aaron <your-github-email@example.com>
Date:   Sun Nov 8 11:51:24 2026 +1000

    Print killshot and multikill lines to chat when the chatbox option is on
    
    The 'Print killshots and deaths in chatbox' option only printed the player's own
    kill counts and deaths. The 'X killed Y!' line went only to the LibSink output,
    so it vanished when that output (e.g. Blizzard combat text) was not showing.
    Print it to chat too, unless the sink is already ChatFrame.

commit 3aa76420663ea196a4c5bc3920e97c621089f24d
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 17:53:54 2026 +1000

    Ignore PARTY_KILL events whose GUIDs are secret values
    
    In restricted content the attacker and target GUIDs arrive as secret values.
    Comparing them (attackerGUID == playerGUID) from addon code raises
    "attempt to compare local 'attackerGUID' (a secret string value, while
    execution tainted by 'dgks')" on every kill.
    
    The isSecret checks added in 92a5575 sit inside the debug block, which is
    stripped from release builds, so they never ran. Return early before the
    debug block when either GUID is secret.

commit a8f3463aa8dda2044cbe12f72391e3ab3edd485d
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 16:02:28 2026 +1000

    Fix death/duel-flee errors, version reply, sound packs, duel emote save
    
    - events:UNIT_DIED and events:CHAT_MSG_SYSTEM are called with the event
      frame as self, so self:PlayerDeath / self:PlayerLoss hit a nil method
      and errored when the player died or fled a duel. Call dgks: instead.
    - Version-check reply passed the unquoted global WHISPER (nil) as the
      distribution. Use the string "WHISPER".
    - The female and baby sound packs built their paths with "\female\\" and
      "\baby\\", where \f and \b are form-feed and backspace in Lua, so the
      files never loaded. soundPath already ends in a backslash; drop the
      leading one (sexy only worked by accident, changed for consistency).
    - The custom duel emote setter wrote to duelcustomemoteemote, so the
      setting never saved. Write to duelcustomemote.

commit 90ca222f3b3cc120133d193b3f8f2b0f9e73b8d6
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 15:29:47 2026 +1000

    Fix load error: move TargetCheck out of the debug block
    
    TargetCheck sat inside the dev-only debug block and had its own inner
    debug block. The packager does not nest these, so in release builds the
    inner end marker closed the outer block early, leaving a stray `end`
    ("dgks.lua:2005: '<eof>' expected near 'end'") and dropping TargetCheck,
    which events:PARTY_KILL calls.
    
    Move TargetCheck above the debug block, inner debug print unchanged.
    
    Fixes #3

commit b128708833ad0d28cc3160aa9f3a4676f607dfb5
Author: Aaron <your-github-email@example.com>
Date:   Tue Nov 10 09:48:20 2026 +1000

    Update LibSink
    
    LibSink-2.0 v12.0.3 -> v12.1.2. The Raid Warning sink now uses
    RaidWarningUtil.AddMessage when it exists (falls back to RaidNotice_AddMessage),
    and the TOC interface list adds 16001 (Forever) and the 12.1.x numbers.

commit d1a10e340c04b08c3baba2d54864407c917e5618
Author: Aaron <your-github-email@example.com>
Date:   Tue Nov 10 09:48:20 2026 +1000

    Update ACE
    
    AceDB-3.0 to MINOR 40 (Ace3 master ac3d122): recognise RP-PvP realms for
    WoW Forever, and drop the nil surname fallback (upstream: the nil surname
    bug has long since been fixed).

commit b3f787509b4ca93965223b11f753adc01fecfaba
Author: Aaron <your-github-email@example.com>
Date:   Mon Nov 9 11:47:01 2026 +1000

    Use Death Recap to name the player's killer on retail/Forever
    
    The combat log is closed to addons in 12.0, so the killer was always recorded as
    'Unknown because of retail'. C_DeathRecap exposes sourceName as a readable string,
    so look it up after death (retrying briefly while the recap fills in) and fall back
    to the old placeholder if it is unavailable or the name is a secret value.
    
    Also call dgks:PlayerDeath instead of self:PlayerDeath: inside the event handler
    'self' is the event frame, which has no PlayerDeath method.

commit 02ad29db1c1d9abbc9149332f173d8d689263cae
Author: Aaron <your-github-email@example.com>
Date:   Sun Nov 8 19:53:02 2026 +1000

    Ignore system chat messages whose text is a secret value
    
    CHAT_MSG_SYSTEM and CHAT_MSG_BG_SYSTEM_NEUTRAL payloads can be secret strings in
    restricted content. strmatch/comparison on them raises 'attempt to perform string
    conversion on a secret string value' from the duel message handler.

commit fba168aace5f3a0a4a27fce48f93e3291f49c538
Author: Aaron <your-github-email@example.com>
Date:   Sun Nov 8 11:51:24 2026 +1000

    Print killshot and multikill lines to chat when the chatbox option is on
    
    The 'Print killshots and deaths in chatbox' option only printed the player's own
    kill counts and deaths. The 'X killed Y!' line went only to the LibSink output,
    so it vanished when that output (e.g. Blizzard combat text) was not showing.
    Print it to chat too, unless the sink is already ChatFrame.

commit 3aa76420663ea196a4c5bc3920e97c621089f24d
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 17:53:54 2026 +1000

    Ignore PARTY_KILL events whose GUIDs are secret values
    
    In restricted content the attacker and target GUIDs arrive as secret values.
    Comparing them (attackerGUID == playerGUID) from addon code raises
    "attempt to compare local 'attackerGUID' (a secret string value, while
    execution tainted by 'dgks')" on every kill.
    
    The isSecret checks added in 92a5575 sit inside the debug block, which is
    stripped from release builds, so they never ran. Return early before the
    debug block when either GUID is secret.

commit a8f3463aa8dda2044cbe12f72391e3ab3edd485d
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 16:02:28 2026 +1000

    Fix death/duel-flee errors, version reply, sound packs, duel emote save
    
    - events:UNIT_DIED and events:CHAT_MSG_SYSTEM are called with the event
      frame as self, so self:PlayerDeath / self:PlayerLoss hit a nil method
      and errored when the player died or fled a duel. Call dgks: instead.
    - Version-check reply passed the unquoted global WHISPER (nil) as the
      distribution. Use the string "WHISPER".
    - The female and baby sound packs built their paths with "\female\\" and
      "\baby\\", where \f and \b are form-feed and backspace in Lua, so the
      files never loaded. soundPath already ends in a backslash; drop the
      leading one (sexy only worked by accident, changed for consistency).
    - The custom duel emote setter wrote to duelcustomemoteemote, so the
      setting never saved. Write to duelcustomemote.

commit 90ca222f3b3cc120133d193b3f8f2b0f9e73b8d6
Author: Aaron <your-github-email@example.com>
Date:   Sat Nov 7 15:29:47 2026 +1000

    Fix load error: move TargetCheck out of the debug block
    
    TargetCheck sat inside the dev-only debug block and had its own inner
    debug block. The packager does not nest these, so in release builds the
    inner end marker closed the outer block early, leaving a stray `end`
    ("dgks.lua:2005: '<eof>' expected near 'end'") and dropping TargetCheck,
    which events:PARTY_KILL calls.
    
    Move TargetCheck above the debug block, inner debug print unchanged.
    
    Fixes #3

commit 92a557525f9b79a0f579705335987283230ea0af
Author: Lance Inman <linman0x90@gmail.com>
Date:   Mon Oct 12 10:29:46 2026 -0700

    Secret checking and tag.

