promotional bannermobile promotional banner

GrouperLFG

Grouper is a looking for group tool for WoW Classic

File Details

Grouper-v0.6.3

  • R
  • Apr 2, 2026
  • 257.72 KB
  • 94
  • 2.5.5+1
  • Classic + 1

File Name

Grouper-Grouper-v0.6.3.zip

Supported Versions

  • 2.5.5
  • 1.15.8

Grouper

Grouper-v0.6.3 (2026-04-02)

Full Changelog Previous Releases

  • fix: resolve all 34 findings from 2026-04-01 code review
    High (B-01–B-04, CS-01–CS-03, SS-01–SS-02, UX-01):
    • B-01: Remove duplicate ScheduleTimer whisper in HandleDirectRequestData
    • B-02: Fix HandleCompactGroupUpdate members hash → array (ipairs was yielding nothing)
    • B-03: Transfer Leadership now searches raidMembers for raid groups
    • B-04: AnnounceGroupToLFG dungeon lookup fixed to use numeric-ID-keyed table
    • CS-01: Remove duplicate file-load-scope AceComm handler registration
    • CS-02: Add missing local to member in ProcessSingleExternalInvite callback
    • CS-03: SendRequestDataViaChannel uses SafeSendChatMessage, not bare SendChatMessage
    • SS-01: URI-encode location field (colons) before wire, decode on receipt
    • SS-02: AnnounceGroupToLFG final send uses SafeSendChatMessage
    • UX-01: Whisper Leader uses GetFullPlayerName for cross-realm suffix
      Medium (B-05–B-07, CS-04–CS-12, SS-04–SS-06, UX-02–UX-03):
    • B-05: HandleJoinedGroupResults sets leader="yes" (string) not true (boolean)
    • B-06: HandleDirectGroupUpdate guard raised from <11 to <14 fields
    • B-07: My Groups deduplicates leader row when leader is already in members[]
    • B-08: Won't fix (intentional cache reset on reload)
    • CS-04: SendGroupUpdateViaChannel retries use ScheduleTimer with per-group handles
    • CS-05: OnPartyChanged calls RefreshGroupListManage directly, not full SelectTab rebuild
    • CS-07: populateChunk uses isActive flag instead of nil-checking released AceGUI widgets
    • CS-08: BuildPlayersCacheFromNames stores short name in .name (not full Name-Realm)
    • CS-09: Legacy channel fallback gate and dispatch branches use cleanMessage not raw message
    • CS-10: myCurrentGroupId reads from self.players[normLocalPlayer].groupId
    • CS-11: Remove no-op C_Timer.After(0.01) from ProcessRefreshQueue while loop
    • CS-12: bracketCheckboxes/bracketGroup cleared before ReleaseChildren
    • SS-04: perMemberHeight raised 15 to 32 in role assignment popup
    • SS-05: ProcessSingleExternalInvite wrapped in pcall; flag reset on error
    • SS-06: Create tab timer callback guards currentTab before populating
    • UX-02: Manage tab member list uses role loops not 5 hardcoded slots
    • UX-03: Empty level in Assign popup is optional (stored as 0)
      Low (B-09, CS-13–CS-14, SS-03, SS-07–SS-08, UX-04):
    • B-09: Results tab role text uses ROLE_DISPLAY lookup
    • CS-13: Fix merge artifact on GrouperBrowse.lua line 4; restore RefreshGroupListResults
    • CS-14: Realm normalization gsub pattern %s to %s+
    • SS-03: ChatThrottleLib internal ring loop wrapped in pcall
    • SS-07: All UnitRace calls use select(2, UnitRace(...)) for English race name
    • SS-08: groupData.minLevel/maxLevel default to 1/60 when nil
    • UX-04: RedrawDebugMessages capped at last 200 messages
      docs: REVIEW_2026-04-01.md updated with fix details for all 34 findings
  • docs: mark perf item 9 as N/A (zone events already implemented correctly)
  • perf: cache data table globals as file-scope locals; remove dead nil guards\n\nAdded file-scope local aliases for DUNGEONS, DUNGEON_IDS, DUNGEON_INFO,\nDUNGEON_SHORT_NAMES, and GrouperRaidData in all 6 consumer files. TOC\nload order guarantees Data/ files execute before all consumers, so the\nouter nil guards (GrouperRaidData and, DUNGEON_IDS and, if not DUNGEONS)\nwere dead code. Removed 7 dead guard sites across GrouperManage.lua,\nGrouperComs.lua, GrouperCreate.lua, GrouperResults.lua, and Grouper.lua.