v1.1.1
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.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects