File Details
TarballsDadabase-v0.4.0.zip
- R
- Feb 4, 2026
- 59.64 KB
- 14
- 12.0.1
- Retail
File Name
TarballsDadabase-0.4.0.zip
Supported Versions
- 12.0.1
All notable changes to Tarball's Dadabase will be documented in this file.
The format is based on Keep a Changelog.
- Custom prefix support per module (enable/disable, custom text input with 50 character limit)
- Visual divider separating auto-save settings from manual-save content editor
- Content Editor section clearly labeled with explicit save instructions
- Save Changes and Reset to Defaults buttons now contained within editor frame with divider line
- Buttons disabled until text changes are detected (clearer UX for what requires saving)
- Helper functions for dynamic tab positioning (CreateTabButton) and control state management (SetControlState)
- Consolidated SanitizeText utility function for input sanitization
- Simplified triggers UI by removing "Personal death" option (only wipe triggers remain)
- Combined trigger and group sections into single "Trigger on wipes in:" section
- Reduced randomized adjectives from 110 to 40 most fitting options
- Renamed "Saved Variables (legacy)" section to "Global Settings" for clarity
- Changed "Content" label to "Content Editor" to emphasize editor functionality
- Updated instructions text to explicitly mention "Save Changes" button
- Extracted sound options to SOUND_OPTIONS constant for easier maintenance
- Tab button positioning now uses dynamic helper function instead of hard-coded offsets
- Maximum global cooldown increased from 60 seconds to 600 seconds (10 minutes)
- Settings panel integration redesigned - Options > Addons > Tarball's Dadabase now shows a simple panel with a button to open the full configuration dialog
- Tab button positioning now uses absolute positioning for consistent layout regardless of display method
- Content entry max length reduced to 205 characters (from 255) to accommodate 50 character prefix without exceeding 255 char message limit
- Critical: Removed message splitting code that caused taint issues - content now limited to 205 chars to ensure prefix + content always fits in 255 char limit
- Critical: Added message length validation before sending to prevent Lua errors if content exceeds 255 characters (handles legacy data or manually edited SavedVariables)
- Removed dead code: 3 unused legacy functions (AddContent, RemoveContent, GetContent) - 43 lines removed
- Removed orphaned death trigger logic from Database.lua after PLAYER_DEAD event was removed
- Config panel toggle bug when switching between
/dadabasecommand and Options menu (now uses IsVisible() instead of IsShown()) - Config panel no longer attempts to embed in Settings window, preventing button overflow and display issues
- Custom prefix controls now properly gray out when "Enable prefix" is toggled off
- Manual commands now validate content exists and provide helpful error messages
- Simplified SendContent() function - removed all message splitting logic (120+ lines removed)
- All messages now sent directly without timers to avoid taint issues with protected functions
- Content length validation enforced at save time (205 char max per entry)
- Consolidated all sanitization logic into single DB:SanitizeText() function (DRY principle)
- Trigger logic simplified: module enabled + group match = triggers (no longer checks triggers.wipe)
- RefreshControls function reduced from 58 to 38 lines using SetControlState helper
- UpdatePrefixControls() function manages custom prefix control states based on prefix enabled flag
- Removed SetModuleTrigger() function (dead code, never called)
- Removed triggers from module defaultSettings (new installs don't need them)
- Triggers field preserved in existing SavedVariables for backward compatibility but no longer used
- Multiple content types (Dad Jokes, Demotivational, Guild Quotes)
- Global enable/disable toggle in Settings tab to override all module settings
- Red warning banner on module tabs when addon is globally disabled
- Statistics tracking showing content count and times told per module
- Statistics now increment for manual commands (
/dadabase say,/dadabase guild) - Sound effects with dropdown selection (15 short, punchy sound effects)
- Test button next to sound effect dropdown to preview selected sound
- About tab with usage instructions, GitHub link, and thank you message
- Tooltips on disabled controls explaining addon is globally disabled or module is disabled
- Clarifying help text for cooldown setting explaining its behavior
- Multi-line text editor for content management (one item per line)
- Save Changes button with visual feedback in configuration UI
- Save Changes button now disabled until content is actually edited
- Reset to Defaults button to clear all user customizations
- Dynamic prefixes for all content types with 108 randomized adjectives
- Dad Jokes: "And now, for a [adjective] dad joke: "
- Demotivational: "And now, for a [adjective] motivational quote: "
- Guild Quotes: "And now, for some [adjective] famous words from a friend: "
- Automatic grammar handling (a/an) based on adjective
- Flexible trigger system (wipes, personal death)
- Group targeting (raids, parties)
- 1100+ dad jokes and puns
- 60+ demotivational sayings
/dadabase onand/dadabase offcommands/dadabase saycommand for manual content sharing/dadabase guildcommand for guild chat/dadabase statuscommand with detailed information/dadabase debugcommand for troubleshooting- Migration system for existing SavedVariables data
- Rate limiting on manual commands (3 second cooldown)
- Content caching system for performance with large datasets
- Comprehensive input validation and sanitization
- Error handling for all critical operations
- Command hint in startup message
- Modular architecture for easy expansion
- Sound effects now only play when Test button is clicked (not on dropdown selection)
- Replaced long sound effects with shorter ones suitable for raid announcements
- About tab now appears first in the configuration panel (before Settings)
- All tab buttons widened to 120-130px for better text display
- Configuration panel height increased to 650px to prevent content overlap
- Module enable checkbox now always active (allows configuration when globally disabled)
- Module tab controls now gray out dynamically when module is disabled (in addition to global disable)
/dadabase sayand/dadabase guildcommands now ignore trigger and group settings, only respecting module enabled state/dadabase statuscommand now formatted better with statistics included- Content storage system now tracks only user changes (additions/deletions) instead of full content arrays
- Default content is now stored in addon code rather than SavedVariables
- Configuration UI replaced scrollable list with individual delete buttons with a text editor
- SavedVariables structure now uses
userAdditionsanduserDeletionsarrays - DB versioning now preserves user deletions (deleted jokes stay deleted on upgrade)
- Debug output now properly conditional (no spam in chat on load)
- All magic numbers replaced with named constants
- Refactored to modular architecture
- Each content type has its own configuration tab
- Sound effect test button now properly plays sounds using numeric SOUNDKIT IDs
- Corrected sound effect IDs (removed incorrect ones causing voice lines)
- Personal death trigger now works when solo (not just in groups)
- Personal death trigger no longer requires group checkboxes to be enabled
- Guild Quotes text editor now accepts input (click handlers on parent frames)
- Manual commands (
/dadabase say,/dadabase guild) no longer return "dadabase is empty" when modules are enabled but triggers/groups are not configured - Race condition in SendContent that could bypass cooldown
- Message length validation prevents exceeding WoW's 255 character limit
- Memory leak from recreating tooltip handlers on every refresh
- Empty contentPool now returns valid moduleId instead of nil
- Initialization order errors with comprehensive nil checks
- Content management now handles large datasets (1100+ items) efficiently with caching
- New default content in updates automatically appears without restoring deleted items
- SavedVariables file size reduced significantly for users with default content
- Various typos in dad jokes
GetEffectiveContent()function merges defaults with user changes at runtime with caching- Content cache automatically invalidates on any content modification
SetEffectiveContent()includes comprehensive type validation and error handlingGetRandomContent()now returns both content and moduleId for prefix handlingGetRandomContent()supports optionalignoreTriggersparameter for manual commandsGetContentPrefix()function generates dynamic prefixes with 108 randomized adjectives- Input sanitization strips WoW formatting codes (colors, hyperlinks, textures, encrypted text)
- Race condition prevention in SendContent using pendingMessage flag
- Math.random properly seeded for better randomness (when available in environment)
- All magic numbers replaced with named constants
- Tooltip handlers reused instead of recreated to prevent memory leaks
- Backward compatibility maintained for legacy functions
- Configuration panel
- Slash commands
- Initial release
- Basic dad joke functionality on raid wipes