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 tochangelog.md,changelog.old, andchangelog_historical.old.[x]TODO(03_medium-ops-docs-routine+org): Adjust TODO standard to wrap status boxes inbacktickto prevent CurseForge page meltdowns.[x]TODO(03_medium-ops-docs-routine+refactor): Migrate multi-line rationale commentary to-- ## Discussionfooter in each file.[x]TODO(03_medium-ops-docs-routine+refactor): Update TODO list to meetSYS_REF_DefaultReadme.mdgrep 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 missingOnSpellbookShowusingC_SpellBook.*Midnight APIs and newAttachSSButtonhelper. OldSpellBookFrame/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 onBlizzard_Collectionsload.OnToysFrameShowstubbed — iteration pending in-game testing.[x]TODO(03_medium-integration-feature-competent+lua+wow): Mount journal hook installed onBlizzard_Collectionsload.OnMountJournalShowstubbed — iteration pending in-game testing.[?]TODO(03_medium-integration-research-proficient+lua+wow): Audit whetherCollectionsMicroButton/Blizzard_Collectionsaddon load order affects Toys and Mounts frame hook timing. Determine if a single deferredADDON_LOADEDhandler 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 inSuggesterFrame_GetContext. Replaced character-class pattern with two explicit alternatives:/ss macro (.-)$and/ss m%s(.-)$.[x]FixADDON_LOADEDhandler:if addonName == "SpeakinSpell"was always-true (file-scope constant), causingRegisterAllEvents()to fire for every addon that loaded. Fixed toif 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 tocollectgarbage/GetAddOnMemoryUsagebeing called during AceConfig render. Replace with a lazy, on-demand approach.[x]TODO(02_high-ux-feature-competent+lua+wow): Add a Run Diagnosticsexecutebutton togeneraloptions.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 existingGetAddonMemoryUsedString()output plus any new collectors behind this single button rather than inline on render.[x]TODO(03_medium-perf-research-proficient+lua): Investigate whetherUpdateAddOnMemoryUsage()must be called immediately beforeGetAddOnMemoryUsage()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): RemoveDisableAnnouncementsfield. Data migration via patcherFixOld_20601_DisableAnnouncements: setsFrequency = 0for any entry whereDisableAnnouncements = truewas set, preserving user intent. GUI toggle removed fromcurrentmessages.lua. Backend check removed fromAllowSpeakForSpell. Purge guard updated.[x]TODO(04_low-core-docs-routine+lua): Add standardised section heading blocks to all major backend.luafiles.[x]TODO(04_low-core-docs-routine+lua):funcnameaudit — flagged and added missing declarations inGetActiveEventTable,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 incurrentmessages.luainto 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 existingEventTypeFilterSelectcategory 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 throughL[]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): RemoveDisableAnnouncementstoggle fromcurrentmessages.luaGUI 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 allDisableAnnouncementsreferences inspeech.luaanddata.lua. Confirm 0% chance gate produces identical behaviour before removing the field. Add a one-time data migration in the patcher toniloutDisableAnnouncements = trueentries and set their first message chance to 0% if not already, to preserve user intent.[ ]TODO(04_low-i18n-cleanup-routine+lua): RemoveDisableAnnouncements-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),FilterChangedis now set on bothCreateNewandMessageSettingsGUI states, andRefreshAllFramesis called if the GUI is loaded.[x]TODO(03_medium-ui-feature-competent+lua+wow): Implement autocomplete prompter for editboxes.SuggesterFramepopup 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.

