promotional bannermobile promotional banner

SpeakinSpell: Reeee

You can say things in chat when casting any spell or ability. Configurable.

File Details

SpeakinSpell Reeee 2.0.6.zip

  • R
  • Apr 21, 2026
  • 695.48 KB
  • 32
  • 12.0.5+2
  • Retail

File Name

SpeakinSpell Reeee 2.0.6.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 12.0.0

Complete: 2.0.6 Kutjara.Wiya.Tijkitkji


Concern grouping: [OPS] = structure & organisation - [BACKEND] = speech.lua, wowevents.lua, data.lua, utils.lua, network.lua, spellbookManager.lua, SpeakinSpell.lua · [GUI] = SpeakinSpell_GUI/ module · [CONTENT] = locale strings, default speeches, i18n - [DEFAULTS] = SpeakinSpell_Defaults/ module - [PATCH] = SpeakinSpell_Patches/ module


[OPS] Project Maintenance

-- Behind-the-scenes work to keep update history properly documented and organized.

  • [x] TODO(03_medium-ops-docs-routine+org): Migrate changelog history to changelog.md, changelog.old, and changelog_historical.old.
  • [x] TODO(03_medium-ops-docs-routine+org): Adjust TODO standard to wrap status boxes in backtick to prevent CurseForge page meltdowns.
  • [x] TODO(03_medium-ops-docs-routine+refactor): Migrate multi-line rationale commentary to -- ## Discussion footer in each file.
  • [x] TODO(03_medium-ops-docs-routine+refactor): Update TODO list to meet SYS_REF_DefaultReadme.md grep standards.

Status: Complete.


[BACKEND] Spellbook Integration

-- Fixing addon buttons so they display correctly in your spellbook, and expanding the feature so you can link speeches directly to your Toys and Mounts.

  • [x] TODO(02_high-integration-bug-proficient+lua+wow): Restore spellbook button functionality. Implemented missing OnSpellbookShow using C_SpellBook.* Midnight APIs and new AttachSSButton helper. Old SpellBookFrame/BOOKTYPE_* code marked legacy. Requires in-game testing to confirm button parent path in Midnight build 120001.
  • [x] TODO(03_medium-integration-feature-competent+lua+wow): Toys frame hook installed on Blizzard_Collections load. OnToysFrameShow stubbed — iteration pending in-game testing.
  • [x] TODO(03_medium-integration-feature-competent+lua+wow): Mount journal hook installed on Blizzard_Collections load. OnMountJournalShow stubbed — iteration pending in-game testing.
  • [?] TODO(03_medium-integration-research-proficient+lua+wow): Audit whether CollectionsMicroButton / Blizzard_Collections addon load order affects Toys and Mounts frame hook timing. Determine if a single deferred ADDON_LOADED handler covers all three frames or if separate registrations are needed.

Status: OnSpellbookShow iteration, toys hook, mounts hook patched. Hook installation wired through revised ADDON_LOADED handler. Backend complete, awaiting in-game analytics to confirm PlayerSpellsFrame button parent path.


[BACKEND] Known Bugs & Core Fixes

-- Squashing major background bugs, specifically those related to automatic data cleanups and macro creation.

  • [x] TODO(01_critical-core-bug-proficient+lua+wow): Fix login and periodic purges not running properly (manual-press purge works as intended).
  • [x] TODO(03_medium-core-bug-competent+lua+wow): Fix channel use macro bridge creation checkbox failing. Functions as intended, but does not check.
  • [x] TODO(03_medium-core-bug-competent+lua+parsing): Fix /ss m[acro]* regex edge cases in SuggesterFrame_GetContext. Replaced character-class pattern with two explicit alternatives: /ss macro (.-)$ and /ss m%s(.-)$.
  • [x] Fix ADDON_LOADED handler: if addonName == "SpeakinSpell" was always-true (file-scope constant), causing RegisterAllEvents() to fire for every addon that loaded. Fixed to if name == "SpeakinSpell".

Status: Patched. NED nil guard added to PurgeStaleNewEventsDetected. Login purge and StartPurgeTicker deferred to PLAYER_ENTERING_WORLD via LoginPurgeDone flag. ADDON_LOADED handler corrected (RegisterAllEvents no longer fires for every addon; PLAYER_ENTERING_WORLD added to RegisterAllEvents). MacroBridge checkbox get fix patched. Regex patched. Testing complete, ready for release.


[BACKEND] Diagnostics & Memory

-- Fixing the frame drop that happens when you open the addon menu, and adding a handy "Run Diagnostics" button so you can easily copy-paste information for bug reports.

  • [x] TODO(02_high-perf-bug-competent+lua+wow): Remove the auto-updating memory use display from the GUI welcome/general panel. Current implementation causes a measurable frame drop on menu open due to collectgarbage / GetAddOnMemoryUsage being called during AceConfig render. Replace with a lazy, on-demand approach.
  • [x] TODO(02_high-ux-feature-competent+lua+wow): Add a Run Diagnostics execute button to generaloptions.lua. On click, this should gather and print to chat: addon memory usage (post-GC), SavedVariables file size estimate, current EventTable entry count, NewEventsDetected pool size, purge timer status, and combat/GUI lock status. Reuse and expose the existing GetAddonMemoryUsedString() output plus any new collectors behind this single button rather than inline on render.
  • [x] TODO(03_medium-perf-research-proficient+lua): Investigate whether UpdateAddOnMemoryUsage() must be called immediately before GetAddOnMemoryUsage() on every refresh, or whether a cached 60s interval (aligned with the purge timer) is sufficient for the on-demand button use case.
  • [ ] TODO(03_medium-ux-feature-competent+lua+wow): Consider adding a Copy to Clipboard or Print to Chat output option to the diagnostics result for easy paste into bug reports. Low priority until button is functional.

Status: Patched - live memory display removed from GUI render path; replaced with static instructional text. RunDiagnostics() implemented in utils.lua, execute button added to generaloptions.lua. Research question resolved: UpdateAddOnMemoryUsage() must be called immediately before GetAddOnMemoryUsage(); cached interval is insufficient. Testing complete, ready for release.


[BACKEND] Section Headings & Grep Navigation

-- Internal code cleanup and labeling to make the addon easier for current developer & future developers to maintain and navigate.

  • [x] TODO(03_medium-core-cleanup-routine+lua): Remove DisableAnnouncements field. Data migration via patcher FixOld_20601_DisableAnnouncements: sets Frequency = 0 for any entry where DisableAnnouncements = true was set, preserving user intent. GUI toggle removed from currentmessages.lua. Backend check removed from AllowSpeakForSpell. Purge guard updated.
  • [x] TODO(04_low-core-docs-routine+lua): Add standardised section heading blocks to all major backend .lua files.
  • [x] TODO(04_low-core-docs-routine+lua): funcname audit — flagged and added missing declarations in GetActiveEventTable, RecordNewEvent, ColorFilterText, SSButtonDown, Hook_NewSpellbookFrame.

Status: Heading block sets drafted for all seven major backend files. funcname audit complete; missing declarations flagged in GetActiveEventTable, RecordNewEvent, ColorFilterText, SSButtonDown, Hook_NewSpellbookFrame. In progress.


[BACKEND] Event Detection

-- Investigating new ways for the addon to recognize when classes like Warlocks, Death Knights, and Hunters summon their pets.

  • [?] TODO(03_medium-core-research-proficient+lua+wow): Consider SPELL_SUMMON handler implementation (Warlocks, DKs, Hunters, etc).

Status: SPELL_SUMMON appears in the combat log as CLEU subevent, so can handle with a branch. Keeping as [?] until in-game testing confirms srcName == UnitName("player") for all pet classes.


[GUI] Event List Segmentation

-- Organizing the massive "detected events" dropdown list into neat, easily readable tabs like Combat, Spells, and Chat.

  • [ ] TODO(02_high-ux-refactor-proficient+lua+wow): Split the monolithic detected-events dropdown in currentmessages.lua into discrete category tabs or filtered sub-groups. Proposed segments: Auras (gained, faded, applied to target, etc.), Spellcasting (UNIT_SPELLCAST_* family), Combat (damage, kill, death, res, etc.), Chat (whisper, guild, party ding, etc.), Zone/World (zone change, instance enter/exit, etc.), Other/Misc. Use the existing EventTypeFilterSelect category filter as a reference for grouping logic - this refactor should promote those filter categories to first-class UI sections rather than a dropdown afterthought.
  • [ ] TODO(03_medium-i18n-refactor-routine+lua): Ensure all new category heading strings added during segmentation are run through L[] and added to all locale files.

Status: Researched. Thought is guiInline groups within CurrentMessagesGUI tab rather than new full tabs (avoids AceConfig re-registration cost). Design notes drafted. Deferred to 2.0.7+, scope too large for 2.0.6 testing cycle.


[GUI] Remove "Disable This Event" Checkbox

-- Cleaning up menu clutter by removing a redundant checkbox, since you can already disable an event by setting its chance slider to 0%.

  • [ ] TODO(03_medium-ux-cleanup-routine+lua): Remove DisableAnnouncements toggle from currentmessages.lua GUI layout. The 0% chance slider already provides this function; the checkbox is redundant and adds visual noise.
  • [ ] TODO(03_medium-core-cleanup-routine+lua): Audit all DisableAnnouncements references in speech.lua and data.lua. Confirm 0% chance gate produces identical behaviour before removing the field. Add a one-time data migration in the patcher to nil out DisableAnnouncements = true entries and set their first message chance to 0% if not already, to preserve user intent.
  • [ ] TODO(04_low-i18n-cleanup-routine+lua): Remove DisableAnnouncements-related locale strings after GUI and backend removal is confirmed stable.

Status: Data migration function FixOld_20601_DisableAnnouncements added to patches.lua, sets Frequency=0 for any entry where DisableAnnouncements=true, preserving RisM's intent. GUI toggle removed from currentmessages.lua. AllowSpeakForSpell check removed from speech.lua. Purge guard in PurgeEmptyEventTableEntries updated. DisableAnnouncements removed from DEFAULTS.EventTableEntry. Locale string removal deferred until post-test confirmation. Still need to clean up GUI (residual checkbox stub still present).


[GUI] Known Bugs & Editbox UX Improvements

-- Upgrading the text boxes to automatically suggest spells and close brackets while you type, making writing your custom speeches much smoother.

  • [x] TODO(02_high-ui-bug-competent+lua+wow): Fix detected event list not repopulating after a purge. After any purge run (auto or manual), FilterChanged is now set on both CreateNew and MessageSettings GUI states, and RefreshAllFrames is called if the GUI is loaded.
  • [x] TODO(03_medium-ui-feature-competent+lua+wow): Implement autocomplete prompter for editboxes. SuggesterFrame popup triggers on < (substitutions) and /ss macro//ss m (macro names).
  • [x] TODO(04_low-ui-feature-routine+lua+wow): Add auto-close for <, [, (, and " in editboxes.
  • [x] TODO(04_low-ui-feature-competent+lua+wow): Add substring matching for spell suggestions.
  • [?] TODO(03_medium-ui-research-competent+lua+wow): Investigate re-enabling pet spellcast event types for the Midnight API.

Status: FilterChanged set on both GUI states and RefreshAllFrames called after any purge run. SuggesterFrame popup implemented; triggers on < (substitutions) and /ss macro / /ss m (macro names). OnChar auto-close hook added alongside OnTextChanged in CurrentMessagesGUI_OnGetSetSpeech; _ssHooked guard applied to both hooks to prevent stacking. SuggesterFrame_GetSuggestions uses entry:find(partial, 1, true) for substring matching. Pet spellcast held at [?] pending Midnight RegisterUnitEvent API confirmation. Awaiting in-game tests, will continue in 2.0.7 cycle.