AutoBlacklist-v1.1.0.zip
What's new
v1.1.0 (2026-10-18)
Minimap icon with pulse animation and icon picker, blacklisted players now hidden in party/raid/instance/guild chat, new pause/resume and remove commands, batched SavedVariables writes, and the report opener dropped: the addon is blocking-only.
Minimap icon (new)
- Minimap button via embedded LibDBIcon (no dependencies): tooltip with state, entry/phrase counts and last detection; left click opens the panel, right click a menu (panel / pause / hide).
- Pulse animation on every detection, coloured by signal (phrase = green, repeat = amber, crew = red, detector = blue). The library's button is never scaled: the pulse runs on a child frame.
- Icon picker in the panel (six icon names verified against icons that already work in the target client) plus a "Minimap icon" checkbox. State lives in
db.minimap(hide,minimapPos,icon). /autoblack statusself-test now pulses the icon in green as a direct animation check.
Panel
- New settings, previously editable only by hand in the SavedVariables: detection window (5/10/30/60 min), entry expiry (7/30/90 days / never) and "Don't re-list removed" (pardon: off / 6 / 24 / 72 h).
- Frame widened to 470x600, dropdowns 30% wider (text no longer clipped) and the minimap checkbox row re-laid out so it no longer fell outside the frame.
- Phrase manager (phase 1) fixes: overlapping columns, inline feedback for duplicates / too short / invalid Lua pattern, paging and per-row editing.
Detection and data
- Entry cap (500) and phrase cap (50) actually enforced, evicting the oldest entry.
- Lazy entry expiry, plus runtime state purge when a player is removed (their buffered messages used to re-list them instantly).
- Pardon on manual removal: a player you remove by hand is not auto-listed again during the pardon window, while messages matching your phrases stay hidden. Only an explicit removal creates a pardon.
- Blacklisted players are now hidden in party, raid, instance, guild and officer chat too (before, only channel/say/yell/whisper/emote were filtered, so a listed spammer who ended up in your group kept talking). Those events are hide-only: no detection runs there, and every event name was verified against addons that already work in the target client.
/autoblack statusnow proves it on the spot: it plants a throwaway entry, checks the filter hides it (by GUID and by Name-Realm) inCHAT_MSG_PARTY, and removes it again — no need to blacklist anyone to see the feature work. - SavedVariable churn cut: the hit counter is batched instead of written on every hidden message, and the recent-message buffer is always size-capped (its pruning used to depend on
windowbeing truthy). A malformedwindowvalue can no longer break detection.
Commands
/autoblack pause|resume(/autoblack pausar|reanudar) toggles protection from the chat, same as the minimap menu./autoblack remove <name>(/autoblack quitar <nombre>) removes a player by full or partial name, case-insensitive, and creates the usual pardon.
Fixes
- The semi-automatic report was dropped. Opening Blizzard's dialog was attempted (queued outside the chat filter, located by GUID) and it cannot be made reliable from a GUID: the client builds the report from a chat-line location (
PlayerLocation:CreateFromChatLineID, the only form BadBoy uses), and a GUID-only location passesCanReportPlayerwhileOpenReportPlayerDialogsilently opens nothing. Since reporting adds nothing blocking does not, the option, the command and the counters are gone rather than left half-working. The one-time report hookup is written down in the source comments. PREFIXwas a local in the minimap and the config file but not in the core, where it was hand-written in twelveprints: using it from a timer raised "attempt to concatenate global 'PREFIX' (a nil value)". It is now a real local, andcheckblocks.jsgained a cross-file rule that catches exactly this class of bug.- Two Lua syntax errors that broke the whole minimap file (
repeatused as a table key, anda:bwithout arguments), plus a hardenedcheckblocks.jsand a newchecksyntax.luagate.
Tooling
checksyntax.lua: real syntax check using Pandoc's embedded Lua interpreter (7 files, 0 errors). Optional for users, mandatory for development together withcheckblocks.js.
This mod has no additional files

