File Details
1.1.0
- R
- Apr 15, 2026
- 2.03 MB
- 17
- 12.0.1+2
- MoP Classic + 2
File Name
DragonShout-1.1.0.zip
Supported Versions
- 12.0.1
- 5.5.3
- 2.5.5
Dragon Shout
1.1.0 (2026-04-15)
Full Changelog Previous Releases
- chore(master): release 1.1.0 (#1)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> - chore: add CurseForge and Wago project IDs to TOC
- docs: add MIT license
- docs: add logo to README header
- feat: add per-type Solo/Group/Raid channel selection (#5) (#6)
- fix: wrap long debug print lines to pass luacheck W631 (#4)
- chore: add 400x400 logo and 64x64 TGA icon (#3)
- chore: add issue templates, PR template, CODEOWNERS, FUNDING, and label/project docs (#2)
- refactor: rename CCListener to AuraListener
- feat: add debug suite, fix playerGUID nil bug, fix test throttle, update CC templates
- Fix ns.playerGUID always nil: register PLAYER_LOGIN fallback in Lifecycle.Initialize
- Fix test buttons silently throttled: add noThrottle param to Announcer.Announce
- Add /ds debug toggle and enhanced /ds status with GUID, version, debug state
- Add Debug Settings section in Options (debug toggle, print status, clear throttle)
- Add Announcer.ClearThrottle() public API; wipe throttle via options or /ds clear
- Add debug traces throughout all listeners and announcer guard paths
- Update ccOnYou template defaults to per-type strings (Silenced/Stunned/etc.)
- Add schema migration v2 for ccOnYou template format upgrade
- Remove dead C_ChatInfo.SendChatMessage branch (always fell through to SendChatMessage)
- Fix ApplyTemplate: nil tokens now emit empty string, not literal in chat
- Fix AnnounceCustom: only fires when player is source or dest of the CC event
- refactor: convert Options tabs to Section card layout
Replace flat header layout (W.CreateHeader + widgets directly in parent)
with Section card layout (W.CreateSection with widgets in section.content)
across all 7 DragonShout_Options tabs.- GeneralTab: Core Settings + Testing sections
- InterruptsTab: Interrupts section
- CCAppliedTab: CC Applied section
- CCOnYouTab: CC on You + CC Types + Per-Type Templates sections
- DispelsTab: Dispels section
- CustomSpellsTab: Custom Spells section
- ProfilesTab: Current Profile + Profile Actions sections
Also adds local ipairs = ipairs cache in CCOnYouTab, CustomSpellsTab,
and ProfilesTab; uses ipairs in RefreshProfileWidgets widget loop.
- refactor: merge CC tables, remove AuraListener
- feat: per-CC-type template overrides and custom spell token help text
- Add ccOnYou.typeTemplates sub-table (silence/polymorph/stun/disorient/fear/root) - empty string falls back to global template
- Announcer.Announce() accepts optional 4th ccType param; resolves typeTemplates[ccType] override when non-empty
- CCListener and AuraListener pass ccType to Announce for ccOnYou
- CCOnYouTab: new Per-Type Templates section with one TextInput per type
- CustomSpellsTab: token help description (, , )
- feat: add and template tokens for CC announcements
- CCListener: add CC_TYPE_LABEL table (Silenced/Stunned/Polymorphed/etc.)
and GetPlayerCCDuration() helper (Retail via C_UnitAuras, Classic via
UnitDebuff). Pass and tokens in ccOnYou and ccApplied
announce calls. Fix ccOnYou/ccApplied/AnnounceCustom control flow: use
inverted conditions instead of bare returns so AnnounceCustom always runs. - AuraListener: pass duration from addedAuras (Retail) and UnitDebuff pos5
(Classic) into AnnounceIfCC. Add token via CC_TYPE_LABEL. Guard
durationStr against zero-duration auras (permanent silences). - Config: update ccOnYou default template to include and .
- enUS.lua: update template and tooltip locale keys; add Silenced/Stunned/
Polymorphed/Disoriented/Feared/Rooted locale strings for future UI use. - CCOnYouTab: update template tooltip to list , , .
- CCListener: add CC_TYPE_LABEL table (Silenced/Stunned/Polymorphed/etc.)
- chore: set ignore = dirty on all submodules
- chore: initialize git submodules
- fix: correct CLEU dispatching, AuraListener robustness, and options degradation
- Fix SPELL_INTERRUPT/SPELL_AURA_APPLIED/SPELL_DISPEL: remove shared
fixed-position destructure from CombatLogListener; each handler now
calls select(12, CombatLogGetCurrentEventInfo()) for its own suffix
fields. Fixes auraType=nil bug that silently disabled all CC detection
via CLEU - Fix InterruptListener: SPELL_INTERRUPT has no extraSpellName field;
resolve interrupted spell name from extraSpellId via GetSpellName()
helper (C_Spell.GetSpellName on Retail, GetSpellInfo on Classic) - Fix AuraListener Retail: handle updateInfo.isFullUpdate with full
debuff scan via C_UnitAuras.GetAuraDataByIndex - Fix AuraListener Classic: replace 0.5s debounce with absent-to-present
CC tracking via announcedCCs table; prevents re-announcing active CCs
on every UNIT_AURA fire - Fix Lifecycle: remove PLAYER_LOGIN event registration that accumulated
handlers on every addon re-enable - Fix Announcer: tonumber(entry.spellId) guards against string/number
mismatch in custom spell matching - Fix DragonShout_Options/Core.lua: replace error() with graceful print
and sentinel ns tables; use direct GetLocale for ns.L - Initialize git submodules (Ace3, LibDataBroker-1.1, LibDBIcon-1.0, DragonWidgets)
- Fix SPELL_INTERRUPT/SPELL_AURA_APPLIED/SPELL_DISPEL: remove shared
- feat: initial DragonShout addon scaffold
Full Ace3-based combat announcer addon.- Interrupt, CC, dispel, and custom spell announcements
- Per-category channel selection and message templates
- Throttle per spell, minimap icon, slash commands
- LoadOnDemand options UI with DragonWidgets
- Supports Retail, MoP Classic, TBC Anniversary

