promotional bannermobile promotional banner

GrouperLFG

Grouper is a looking for group tool for WoW Classic

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:
    1. Members join via Grouper Results tab
    2. They select their role (Tank/Healer/DPS) before clicking Auto-Join
    3. Role is sent with join request and cached
    4. OnPartyChanged() checks cache and applies cached roles automatically
    5. 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:
    1. New member joins raid RAID_ROSTER_UPDATE fires
    2. SyncRaidRoster() detects new member
    3. Check if member already has role in cache
    4. If not, add to newMembers list
    5. Show role assignment popup (same as dungeon groups)
    6. User assigns Tank/Healer/DPS roles
    7. Roles saved to member.role and player cache
    8. RecalculateRaidCounts() updates needs
    9. 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
  • 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
  • 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
  • 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