Listener Continued

RETAIL - Quick update of the original Listener project for Midnight and on.
Back to Files

v1.1.1

File nameListener-v1.1.1.zip
Uploader
TildemancerTildemancer
Uploaded
Oct 12, 2026
Downloads
372
Size
247.2 KB
Flavors
Retail
File ID
9149062
Type
R
Release
Supported game versions
  • 12.1.5

What's new

Fixed companion text emotes getting past the NPC filter [Tildemancer] - 2026-10-12

Add NPC speech filter and Snooper support for NPC targets [Tildemancer] - 2026-09-15

Revert to addon/ subfolder layout for CurseForge packaging; grant forgepush write access for GitHub Releases [Tildemancer] - 2026-09-15

Point package.yaml at the correct CurseForge project [Tildemancer] - 2026-09-15

Flatten repo layout and fix self text-emote filtering [Tildemancer] - 2026-09-15
- Move addon/* up to repo root so the repo layout matches the installed
  addon folder 1:1 (Listener.toc, src/, ui/, etc. at top level, alongside
  the existing libs/, sounds/, texture/). This lets the live WoW AddOns
  folder be a direct git checkout of this repo instead of a hand-copied
  export. package.yaml's export mapping is updated to match.
- OnChatMsgTextEmote: standard text emotes (e.g. /hug) weren't always
  reporting the sender as our own canonical name, so they fell through to
  the "unrecognized player" path in the chat filter and got dimmed even
  though the emote was our own. Since guid already tells us for certain
  when it's our own emote, force sender to Main.FullName("player") in
  that case instead of trusting whatever string the event/filter chain
  handed back.
- init.lua/Listener.toc: fall back to a plain "dev" version instead of
  printing the raw "@@addon_version@@" placeholder when running from a
  checkout that never went through the forgepush release packager.
- Add .githooks/(post-checkout|post-merge|update-version.sh): opt-in local
  hooks (git config core.hooksPath .githooks) that stamp the working
  copy's Listener.toc with `git describe` on every checkout/pull, so a
  git-tracked install shows a real version in-game without needing a
  tagged release build. This only touches the working tree (marked
  skip-worktree), the committed placeholder is untouched so the existing
  forgepush/CurseForge tag pipeline keeps working as before.

Add files via upload [Tildemancer] - 2026-06-30
TRP changed how possessives (i.e. 's), were handled sometime in midnight

added a helper function. this asks whether the message has been stripped by trp:

local function GetTRPOwnershipEmotePrefix( lineID )
    if lineID == nil then return nil end

    local trp = _G.TRP3_API
    if not trp or not trp.chat or not trp.chat.getOwnershipNameID then return nil end

    if trp.chat.getOwnershipNameID() == lineID then
        return "'s "
    end
end

if it does/has, it changes it back in listener's frame using

local trpEmotePrefix = originalEmotePrefix or GetTRPOwnershipEmotePrefix( a11 )
if event == "EMOTE" and trpEmotePrefix and message:sub(1, #trpEmotePrefix) ~= trpEmotePrefix then
    message = trpEmotePrefix .. message
end
Update dmtags.lua [Tildemancer] - 2026-06-26
trying to guard from a taint i got in delves

it scans every frame, now it shouldn't
Update dmtags.lua [Tildemancer] - 2026-06-26
Trying to wrap so it stops tainting things
Update dmtags.lua [Tildemancer] - 2026-06-26
dmtags.lua line 120 called UnitName(unit) before unit was assigned

moved the check after "local unit = frame:GetAttribute("unit")" and guarded it as "if unit and canaccessvalue(UnitName(unit)) then"
ui [Tildemancer] - 2026-06-25
ui/ListenerFrame.lua

Display NPC speakers using their NPC names instead of player names.
Show custom NPC icons and colors.
Prevent NPC names from being rendered as clickable player links.
Improve display of anonymous emotes.
Use stored NPC metadata when rendering chat history.

This mod has no related projects