File Details
Grouper-v0.4.6-beta
- B
- Jan 26, 2026
- 195.67 KB
- 127
- 2.5.5+1
- Classic + 1
File Name
Grouper-Grouper-v0.4.6.zip
Supported Versions
- 2.5.5
- 1.15.8
Grouper
Grouper-v0.4.6 (2026-01-26)
Full Changelog Previous Releases
- fix: Fix variable scoping for guild restriction widgets
Remove 'local' keyword from guildRestrictCheckbox and guildInputEdit
assignments to use outer scope variables, preventing nil value error
when Create Group button accesses them. - feat: Add guild-restricted raids
- Add checkbox in Create tab to restrict raid to specific guilds
- Auto-fill with player's guild when checkbox enabled
- Parse comma-separated guild list (case-insensitive, trimmed)
- Filter groups in Results tab by player's guild membership
- Show "Guild-Restricted" indicator on restricted raids
- Support multi-guild alliances (e.g., "The Old Gods, The Other Gods")
- Guild matching is case-insensitive and whitespace-tolerant
- fix: Complete raid roster tracking and UI refresh implementation
- Add leader to raidMembers on group creation with correct role
- Implement leader tracking ("yes"/"no") in raidMembers array
- Fix SyncRaidRoster to properly identify raid leader
- Throttle OnPartyChanged to 2 seconds to prevent message spam
- Fix UI refresh to only update active tab (manage or results)
- Call RecalculateRaidCounts after leader added to show correct counts
- Update documentation with completed features
- fix: Assign Roles button now updates correct member array for raids
- refactor: Remove automatic role popup, use manual assignment
Changed raid role tracking to match the user's workflow:
Removed:- Automatic role assignment popup on RAID_ROSTER_UPDATE
- Detection of new members for auto-prompting
How It Works Now:
- Members join via Grouper Results tab
- They select their role (Tank/Healer/DPS) before clicking Auto-Join
- Role is sent with join request and cached
- OnPartyChanged() checks cache and applies cached roles automatically
- Leader can manually trigger role assignment via 'Assign Roles' button in Manage tab
Benefits:
- Matches dungeon group workflow exactly
- No annoying popups when people join randomly
- Roles come from the joiner's selection in Results tab
- Manual control for leader when needed
- Cleaner, more predictable UX
Results Tab Already Has: - Whisper Leader button (works for all types)
- Select Role dropdown (works for all types)
- Auto-Join button (works for all types)
These buttons work for both dungeon AND raid groups - no changes needed!
- feat: Add role assignment popup for new raid members
Integrated the existing role assignment system with raid roster tracking:
What Changed:- OnPartyChanged() now detects new members joining the raid
- Tracks old member count to identify new joins
- Shows role assignment popup for members without roles
- Checks player cache first for existing role data
- Only prompts for members who need assignment
Role Assignment Flow:
- New member joins raid RAID_ROSTER_UPDATE fires
- SyncRaidRoster() detects new member
- Check if member already has role in cache
- If not, add to newMembers list
- Show role assignment popup (same as dungeon groups)
- User assigns Tank/Healer/DPS roles
- Roles saved to member.role and player cache
- RecalculateRaidCounts() updates needs
- Broadcast to network
Benefits:
- Reuses existing role assignment UI (consistent UX)
- Tracks roles for accurate need calculations
- Role data cached for future use
- Same popup workflow as dungeon groups
- Prevents duplicate prompts for known members
Now raid role tracking works exactly like dungeon role tracking!
- feat: Implement automatic raid roster tracking
Added automatic tracking of raid roster changes:
New Function: SyncRaidRoster()- Scans current raid/party roster using GetRaidRosterInfo()
- Populates group.raidMembers array with member details
- Handles raid, party, and solo states
- Tracks: name, class, level, online status, isDead status
Updated: OnPartyChanged() - Now actively handles RAID_ROSTER_UPDATE and party change events
- Syncs roster when members join/leave
- Calls RecalculateRaidCounts() to update recruitment needs
- Broadcasts updated group to network
- Refreshes UI if Manage tab is open
- Only runs for raid leaders
Benefits: - currentCount updates automatically as people join/leave
- Role/class needs recalculated in real-time
- Other players see live updates (X/40 filled)
- No manual Update Count button needed
- Works in both raid and party formats
Linter Updates: - Added GetRaidRosterInfo to .luarc.json globals
- Added UnitIsGroupLeader and ConvertToRaid
Ready for in-game testing with live roster changes!
- docs: Update FEATURE_RAID_PVP.md for automatic raid size detection
- Marked manual raid size/count inputs as completed but removed
- Added Recent Changes section documenting commit b3af8a1
- Updated technical design notes to reflect auto-population
- Marked open question about auto-detection as resolved
- Updated last modified date to 2026-01-26
- feat: Auto-populate raid size from instance data and remove manual inputs
- Removed manual "Raid Size" dropdown - no longer needed
- Removed manual "Current Count" input - will be tracked automatically
- Auto-determine raidSize from selected raid's defaultSize field
- Initialize currentCount to 1 (just the leader) on group creation
- Prepares for automatic roster tracking via RAID_ROSTER_UPDATE event
This simplifies the UI and ensures raid sizes are always correct based on
the selected raid instance (e.g., MC = 40, ZG = 20, AQ20 = 20)
- fix: Add defaultSize to raid entries in InstanceData.lua
The previous fix checked for dungeon.defaultSize but the raid entries
in InstanceData.lua didn't have this field, causing the fallback to
still show (60-60) level ranges.
Added defaultSize field to all Classic Era raid entries:- Onyxia's Lair: 40
- Molten Core: 40
- Blackwing Lair: 40
- Zul'Gurub: 20
- Ahn'Qiraj (AQ20): 20
- Temple of Ahn'Qiraj (AQ40): 40
- Naxxramas: 40
Now the Create Group tab will correctly display:
"Molten Core (40-player)" instead of "Molten Core (60-60)"
- fix: Display raid sizes instead of level ranges in Create tab
Change raid checkbox labels to show raid size (e.g., "Molten Core (40-player)")
instead of level requirement (e.g., "Molten Core (60-60)").
Before: All raids showed (60-60)
After:- MC, BWL, Ony, AQ40, Naxx show (40-player)
- ZG, AQ20 show (20-player)
- Karazhan shows (10-player)
- TBC 25-player raids show (25-player)
This makes it clearer what size group is needed for each raid while
dungeons continue to show their level range as before.
- docs: Consolidate and organize documentation
Merge DEBUG_CATEGORIZATION.md content into FEATURE_RAID_PVP.md and
reorganize all documentation into docs/ folder for cleaner project structure.
Changes:- Merged debug system documentation into FEATURE_RAID_PVP.md
- Added "Debug System Documentation" section with categories overview
- Included usage examples, commands, and statistics
- Documented all 10 debug categories and their purposes
- Moved FEATURE_RAID_PVP.md to docs/
- Moved Grouper_Bugs.md to docs/
- Deleted DEBUG_CATEGORIZATION.md (content merged)
- Updated .pkgmeta to exclude entire docs/ folder from packaging
- Removed individual file excludes for bug/feature docs
- Added single docs/ folder exclude for cleaner maintenance
Benefits:
- All development documentation now in docs/ folder
- Debug system info preserved in feature document
- Cleaner project root directory
- CurseForge packages won't include development docs
- Merged debug system documentation into FEATURE_RAID_PVP.md
- refactor: Convert all debug statements to Grouper_Output system
Replace ~173 scattered debug statements across all files with the new
categorized Grouper_Output:Debug() system for better debugging control.
Changes:- GrouperCreate.lua: 6 statements → CREATE category
- GrouperManage.lua: 22 statements → MANAGE category
- GrouperResults.lua: 17 statements → BROWSE/UI categories
- GrouperCore.lua: 19 statements → EVENTS/TIMERS/COMMS categories
- GrouperUtilities.lua: 40 statements → DATABASE/TIMERS/SEARCH categories
- Grouper.lua: Many statements → Various categories (COMMS, SYNC, UI, BROWSE)
- GrouperComs.lua: 11 statements → COMMS category
- GrouperBrowse.lua: 2 statements → BROWSE category
Benefits: - Category-based filtering: Enable only relevant debug output
- Cleaner code: No more nested conditionals
- Printf-style formatting: Better string formatting
- Centralized control: /grouper debug commands manage all output
All old patterns removed:
if self.db.profile.debug.enabled then
self:Print("DEBUG: ...")
end
Replaced with:
Grouper_Output:Debug("CATEGORY", "message", args...)
- feat: Port GrouperOutput debugging system from feat-raid-pvp
Integrated comprehensive debugging system with:- GrouperOutput.lua: Centralized logging with DEBUG/INFO/WARN/ERROR/RESPONSE levels
- 10 debug categories: COMMS, SYNC, UI, BROWSE, CREATE, MANAGE, EVENTS, TIMERS, DATABASE, SEARCH
- Dedicated "Grouper Debug" chat tab for filtered output
- Message buffering (1000 messages) for persistence
- Enhanced slash commands:
- /grouper debug on|off - Toggle debug mode
- /grouper debug tab - Create dedicated debug chat tab
- /grouper debug enable/disable <CATEGORY> - Toggle specific categories
- /grouper debug status - Show current settings
- Settings UI with checkboxes for each debug category
- Replaces scattered debug prints with organized categorized logging
Benefits: - Fine-grained debug control per feature area
- Dedicated chat tab keeps debug separate from gameplay
- Persistent message buffer survives tab switches
- Professional logging system for troubleshooting
- Document conditional widget creation refactor in FEATURE_RAID_PVP.md
Added detailed technical notes documenting:- Problem: UI blending from show/hide pattern with AceGUI
- Solution: Conditional widget creation with buildCreateForm(selectedType)
- Implementation details: variable scoping, helper functions, legacy code removal
- Benefits: clean layout, maintainability, efficiency
- Testing validation results
Updated decision log with critical fix decision and date
- Refactor Create tab to use conditional widget creation
Fixed UI "blending" issue by replacing show/hide pattern with conditional widget creation:- Form now rebuilds completely when event type changes
- Only creates widgets relevant to selected type (dungeon/raid/pvp/quest/other)
- Removed old raidUIGroup show/hide pattern
- Properly scoped raid-specific variables at function level to fix nil reference errors
- Helper functions (refreshTitleFromSelected, updateDungeonList) now properly scoped inside buildCreateForm
Benefits: - Clean layout when switching between event types
- No hidden widgets affecting AceGUI layout calculations
- More maintainable conditional logic
- Fix FEAT-002: Implement raid member tracking with local raidMembers array
- Added raidMembers array to group structure for tracking raid roster locally
- Created RecalculateRaidCounts() function to count roles/classes from raidMembers
- Added rolesTarget/classesTarget to store original recruitment goals
- Modified member addition to use raidMembers for raids and call RecalculateRaidCounts
- Updated Sync button to recalculate raid counts before broadcasting
- Updated GrouperManage.lua raid display to show current/target/needed format (e.g., "Tanks: 2/4 (need 2)")
- Updated GrouperResults.lua Browse tab with same display logic
- Marked FEAT-002 as resolved in Grouper_Bugs.md
When members join raids, counts now update automatically showing: - Role counts: "Tanks: 2/4 (need 2)" - have 2, target 4, need 2 more
- Class counts: "Priest: 1/2 (need 1)" - have 1, target 2, need 1 more
- Works in both My Groups and Browse tabs
- fix(raid): Fix Browse tab to show raid recruitment tracking instead of party slots (UI-003)
- GrouperResults.lua: Updated member display section to check for raid type
- Changed title to "Recruitment Tracking" for raids
- Shows role counts: "Tanks: 0/2 | Healers: 0/5 | DPS: 0/13"
- Shows class counts when specified (e.g., "Priest: 0/2 | Warlock: 0/1")
- No longer shows party member slots for raids
- Grouper_Bugs.md: Added and resolved UI-003 bug
- Documented the issue and fix
- Updated statistics (0 open, 4 fixed)
- All raid display now consistent across My Groups and Browse tabs
Closes UI-003
- GrouperResults.lua: Updated member display section to check for raid type
- feat(raid): Update raid display to show recruitment tracking instead of member names
- GrouperManage.lua: Changed raid groups to display role/class counts (e.g., "Tanks: 0/2 | Healers: 0/5 | DPS: 0/13") instead of individual member names
- Changed title from "Party Members" to "Recruitment Tracking" for raids
- Shows class tracking when specified (e.g., "Priest: 0/2 | Warlock: 0/1")
- Grouper.lua: Added auto-conversion from party to raid format when creating raid groups
- Automatically runs ConvertToRaid() if player is party leader
- Shows helpful messages when conversion cannot happen
- Grouper_Bugs.md: Marked COMM-001 as resolved, updated statistics (0 open, 3 fixed)
- FEATURE_RAID_PVP.md: Updated documentation to reflect raid tracking display and auto-conversion feature
Aligns with feature design: raids use recruitment tracking, not roster management
- Fix UI-002: Replace SetVisible with frame:Hide/Show (FEAT-001)
GrouperCreate.lua:- Line 392: Changed raidUIGroup:SetVisible(false) to raidUIGroup.frame:Hide()
- Lines 599-602: Changed typeDropdown callback to use frame:Show()/Hide()
- AceGUI SimpleGroup widgets don't support SetVisible() method
- Must use direct frame manipulation instead
Grouper_Bugs.md: - Added UI-002 bug report with full error details
- Documented root cause and fix
- Moved UI-002 to resolved section
- Updated statistics: 2 total bugs, 2 fixed, 0 open
FEATURE_RAID_PVP.md: - Updated TODO list to mark Phase 1 & 2 as complete
- All checklist items marked <input disabled="disabled" type="checkbox" checked="checked" /> for completed work
- Noted deferred features for future updates
Bug is now resolved - Create tab loads without errors and raid UI properly shows/hides based on type selection.
- Phase 2: Raid UI implementation (FEAT-001)
GrouperCreate.lua:- Enabled Raid and PvP types in type dropdown
- Added raid-specific UI section (visible when type = raid)
- Raid size dropdown (10/20/25/40), current count input
- Roles needed inputs (tanks/healers/dps)
- Class selection UI with dropdown + count + Add/Clear buttons
- Loot system dropdown (DKP, EPGP, Loot Council, etc.)
- Clear status dropdown (Fresh, Partial, Farm, Specific)
- Voice info and reserved items optional text fields
- Updated dungeon list filter to use RaidData when type is raid
- Added validation to require at least one raid selected
- Extended groupData to include all raid-specific fields
GrouperManage.lua: - Added raid-specific info display in My Groups tab
- Shows recruitment status: 25/40 | Need: 2T, 4H, 9D
- Shows class needs: LF: 2 Priest, 1 Warlock, 2 Mage
- Displays loot system, clear status, voice info
GrouperResults.lua: - Added raid-specific display in Browse tab results
- Shows recruitment info with current count, roles needed, classes needed
- Displays raid name, loot system, meeting point
GrouperBrowse.lua: - Enabled Raid and PvP filter checkboxes
- Removed disabled state from raid/pvp filters
All raid functionality now working end-to-end
- Phase 1: Foundation for raid/pvp support (FEAT-001)
- Created Data/RaidData.lua with Classic Era and TBC raids
- 8 Classic raids: MC, Ony, BWL, ZG, AQ20, AQ40, Naxx, World Bosses
- 9 TBC raids: Kara, Gruul, Mag, SSC, TK, Hyjal, BT, ZA, Sunwell
- Helper functions for dropdown lists and raid lookups
- Loot system and clear status enums
- Created Data/PvPData.lua with battlegrounds, arenas, world pvp
- 4 Battlegrounds: WSG, AB, AV, EotS (TBC)
- 3 Arena types: 2v2, 3v3, 5v5 (TBC only)
- 7 World PvP activities: City raids, farming, zone control, Halaa, Hellfire, Zangar, Terokkar
- Helper functions and premade type enums
- Updated Grouper.toc to load new data files
- Added Data\RaidData.lua
- Added Data\PvPData.lua
- Extended group structure in Grouper.lua for recruitment tracking
- currentCount: Track filled slots (e.g., 25/40)
- raidSize: Total raid size (10/20/25/40)
- rolesNeeded: {tanks, healers, dps} counts
- classesNeeded: class-specific needs
- lootSystem, clearStatus, voiceInfo, reservedItems
- pvpActivityType, pvpActivity, premadeType, requirements
- All new fields are optional (nil default) for backward compatibility
- Feature design document added with comprehensive TODO list
- Created Data/RaidData.lua with Classic Era and TBC raids
- Enable TOC creation for multi-version support
Added enable-toc-creation: yes to support packaging for both Classic Era and TBC - Add TBC support - Interface-BCC: 20505
Makes Grouper dual-homed to support both Classic Era and TBC Classic - Update .pkgmeta to exclude Grouper_Bugs.md from package
- Fix UI-001: Group frame truncation in My Groups tab
- Added automatic height adjustment to InlineGroup ScrollFrame in CreateGroupManageFrame
- Disabled fixed height constraint to allow content-based sizing
- Frame now expands naturally without unnecessary scrolling when space is available
- Updated Grouper_Bugs.md to track and document the fix

