Grouper - Server-Wide Group Finder for WoW Classic Era
Tired of spamming trade chat looking for a group? Grouper is a powerful server-wide group finder addon for World of Warcraft Classic Era (and TBC Classic) that lets players browse, create, and join groups for dungeons, raids, quests, PvP, and more — all from a clean, tabbed UI with no chat spam required.
The Problem
WoW Classic's built-in LFG tools are limited: LookingForGroup channel is text-only chaos, trade chat clogs quickly, and there's no structured way to advertise roles, level ranges, or specific dungeons you're running. When you finally find a group the information is already stale.
Meanwhile raid leaders have it worse — tracking 20-40 recruits across whispers, manually counting class slots, and reposting announcements every few minutes is tedious busywork that takes focus away from actually playing.
The Solution
Grouper uses a dedicated addon communication channel shared across all Grouper users on your realm. Group listings are broadcast automatically, updated in real time when members join or leave, and displayed in a structured UI with rich filtering — so players see only the groups relevant to them, and leaders spend less time managing chat.
Core Features
Server-Wide Group Discovery
- Browse all active Grouper groups across your entire realm in one place, regardless of what zone you're in
- Groups are sorted by recency and auto-expire when stale — no dead listings cluttering the view
- Listings update live as leaders sync changes without any manual refresh needed
Smart Filtering
- Level range filters — set a min/max level band; groups outside your range are hidden automatically
- Activity type checkboxes — filter to Dungeons, Raids, Quests, PvP, or Other independently
- Conditional sub-filters — when Dungeon is checked, a "Filter by Dungeon" dropdown appears; when Raid is checked, a "Filter by Raid" dropdown; when PvP is checked, a "Filter by Battleground" dropdown — all three can coexist
- Role filter — show only groups that still need a Tank, Healer, or DPS
- TBC-exclusive content (Eye of the Storm, TBC raids) is version-gated and only appears on TBC clients
Dungeon Group Management
- Multi-dungeon selection — list multiple dungeons in a single group posting
- Role slot tracking — Tank, Healer, and DPS slots displayed with current fill status
- Auto-join system — players can request to join via whisper handshake; the leader receives a popup to accept, assign a role, and confirm level
- Automatic role enforcement — a second tank or second healer cannot auto-join a slot that is already full
- Guild restriction — mark a group as guild-only; only members of the specified guild will see it in Browse results
Raid Recruitment Tracking
- Dedicated raid group type with configurable raid size (10, 20, 25, 40, etc.)
- Role quota tracking — set targets for Tanks, Healers, and DPS; counts decrement automatically as members join
- Class slot tracking — specify how many of each class you need (e.g. "2 Priests, 1 Warlock") with live fill counts
- Loot system field — advertise your loot method (Master Looter, DKP, EPGP, Loot Council, Soft Reserve, /roll, Free for All)
- Clear status field — advertise your raid's progression status (Fresh, Partially Cleared, Farm Mode, Specific Bosses)
- Reserved items field and voice info field for Discord/Vent details
Announcement Integration
- Announce button posts your group to
/LookingForGroup channel with size, roles needed, and class needs formatted automatically
- Per-channel announcement preferences — choose which channels (LFG, Guild, GreenWall confederation) receive announcements
- GreenWall confederation support — announce to your cross-guild confederation channel
- Quest link reconstitution — quest group postings include a clickable quest link in the announcement
- Rate-limited to prevent accidental spam (3-second cooldown per announce)
Group Management Controls
- Sync — broadcasts your current group state to all Grouper users; updates member counts from the live WoW party/raid roster
- Edit — modify group title, type, dungeons, roles, or description without disbanding
- Assign Roles — reassign Tank/Healer/DPS roles to any group member via popup
- Transfer Leadership — hand group ownership to another member with a dedicated popup showing only leader selection — no role reassignment clutter
- Disband — cleanly removes the Grouper listing without disbanding the underlying WoW party/raid
UI & Customization
- Tabbed interface: Search Filters, Search Results, Create Group, My Groups, Options
- Minimap button with group count tooltip; left-click opens addon, right-click opens config
- TitanPanel integration — displays active group count in your TitanPanel bar
- Configurable border and background colors
- Font selection
- Window position and size persist across sessions and
/reload
- ESC key closes the window cleanly via
UISpecialFrames
Group Types
- Dungeon — 5-man instance groups with role slots (Tank/Healer/DPS), multi-dungeon selection, level range, and auto-join support
- Raid — large-group recruitment with role quotas, class tracking, loot system, and clear status fields
- Quest — questing groups with quest link integration in channel announcements
- PvP — battleground groups with battleground selection (Classic Era and TBC battlegrounds supported)
- Other — free-form groups for world events, role-play, or anything else
How It Works
Communication System
Grouper uses AceComm-3.0 over a custom addon channel (Grouper) to broadcast group state across all users on the realm. The communication flow is:
- On load — Grouper broadcasts a
REQUEST_DATA to populate the local cache from any active leaders
- On group create / sync — the leader broadcasts a
GROUP_UPDATE message containing title, type, size, roles, members, allowed guilds, and a timestamp
- On member leave / disband — a remove notification is broadcast so all clients drop the stale listing immediately
- Auto-search — Grouper periodically re-requests data to catch leaders who joined after the initial load
Security & Taint Safety
- All
SendChatMessage calls pass through an IsSecureContext() guard combining InCombatLockdown() and issecure() — preventing ADDON_ACTION_BLOCKED errors from tainted execution contexts
- Auto-join invite calls use a separate
InCombatLockdown()-only check because InviteUnit does not route through the deprecated chat API and does not require the full taint guard
- Cross-faction filtering is automatic — Horde players never see Alliance groups and vice versa
Slash Commands
- /grouper show — Open the Grouper main window
- /grouper hide — Close the Grouper main window
- /groupercd — Print dungeon cache contents to chat (debug)
- /groupercgm — Print group member cache contents to chat (debug)
- /grouper debug on|off — Enable or disable verbose debug output
Requirements
- Ace3 (AceAddon-3.0, AceComm-3.0, AceDB-3.0, AceGUI-3.0, AceTimer-3.0, AceConsole-3.0)
- VersionCheck-1.0
- WoW Classic Era (Interface 11507–11508)
- TBC Classic (Interface 20505)
- WotLK Classic (Interface 30405) and Titan Reforged (Interface 38000)
- Cataclysm Classic (Interface 40402)
- Mists of Pandaria Classic (Interface 50502–50503)
- Retail / The War Within (Interface 110207+)
Recent Updates
v0.7.0 (Latest Release — 2026-04-03)
- feat: Multi-client support — Grouper now runs on Classic Era, TBC Classic, WotLK Classic, Titan Reforged, Cataclysm Classic, Mists of Pandaria Classic, and Retail
- feat:
Grouper.IsExpansionAllowed(expansion) — per-client allowlist gates instance data to the correct expansion set; Titan Reforged (TOC 38000) detected via interface range check
- feat:
Data/InstanceData.lua expanded from 53 to 199 entries — full dungeon, raid, and battleground coverage through The War Within
- feat: Expansion filter dropdown in the Create form — filters the instance picker to a single expansion; only expansions available on the running client appear in the list
- fix: Level ranges in the Create form and submitted group data clamped to
GetMaxPlayerLevel() — prevents historical expansion levels from exceeding the active server cap
- fix:
GameTooltip:IsOwned(self) calls on FontString widget labels replaced with unconditional GameTooltip:Hide() — eliminates "Wrong object type for function" crashes across GrouperCreate, GrouperBrowse, and GrouperResults (12 sites fixed)
- chore: TOC audit — MoP interface numbers (50502, 50503) added; Titan Reforged (38000) treated as WotLK-era client
v0.6.4 (2026-04-03)
- fix: Transfer Leadership popup no longer renders role assignment UI — shows only the new-leader dropdown and Transfer/Cancel buttons; confirm callback simplified to leadership transfer only (UI-006)
- fix:
GameTooltip OnLeave handlers across all tabs now guard with IsOwned(self) before hiding — eliminates tooltip bleedover into other addons (UI-007)
- fix: DPS members no longer placed in Tank/Healer-exclusive role slots in My Groups tab — slot assignment now uses explicit indices matching Browse tab behavior (MANAGE-001)
v0.6.3 (2026-04-03)
- fix: Transfer Leadership popup now shows only leader-selection controls — role/level assignment UI no longer rendered in this flow (UI-006)
- fix: All
GameTooltip OnLeave handlers now guard with IsOwned(self) before hiding, eliminating tooltip bleedover into other addons (UI-007)
- fix: DPS members no longer placed in Tank/Healer-exclusive role slots in My Groups tab — explicit slot assignment now matches Browse tab behavior (MANAGE-001)
- fix: Code review round 3 — resolved B-13 through UX-05 findings
- fix: Code review round 2 — resolved B-10 through A-03 findings
- refactor: All raw
db.profile.debug.enabled reads replaced with IsDebugEnabled() helper
v0.6.2 (2026-04-01)
- fix: Resolved all 34 findings from 2026-04-01 code review
- fix: Auto-join invites were blocked by
issecure() taint check in IsSecureContext() — InviteUnit now uses a direct InCombatLockdown() guard only (COMM-003)
- perf:
CLASS_COLORS, CLASS_NAMES, and RACE_NAMES constants centralized into a single shared location
- perf:
CamelCaseClass, CapitalizeRole, and CamelCaseRole helpers replaced with O(1) lookup tables
- perf: Data table globals cached as file-scope locals; 7 dead nil-guard sites removed across 5 files
v0.6.1 (2026-03-25)
- feat: Conditional sub-filter row in Browse tab — Dungeon/Raid/PvP type checkboxes each show their own filter dropdown; TBC-exclusive content version-gated
- fix: Min/max level sliders replaced with EditBox widgets, eliminating taint source causing
ADDON_ACTION_BLOCKED (COMM-002)
- fix: PvP battleground tooltip bleedthrough in Create tab (RAID-010)
- fix: Role label tooltip bleedthrough in Roles Needed section (RAID-007)
- feat: Soft Reserve added to Loot System dropdown and tooltip (RAID-008)
- fix: Loot System and Clear Status dropdowns sorted alphabetically (RAID-009)
v0.6.0 (2026-03-24)
- feat: Full Raid group type — recruitment tracking with role quotas, class slots, loot system, clear status, reserved items, voice info, and guild restriction
- feat: Full PvP group type with Classic Era and TBC battleground selection
- feat: Quest link reconstitution in LookingForGroup channel announcements
- feat: Per-channel announcement preferences in Options panel
- feat: GreenWall confederation announcement integration
- feat: Guild-restricted groups —
allowedGuilds encoded in broadcast and filtered on receive (GUILD-001)
- fix: Nil crash on groups with missing
location field (RAID-003)
- fix: Raid role counts always zero due to wrong key names in
rolesNeeded fallback (RAID-001)
- fix: Class tracking broken — ALL-CAPS class names from
GetRaidRosterInfo now TitleCase-converted on insert (RAID-002)
- fix: Raid group announcements showed "1/5" instead of correct raid size (COMM-001)
v0.5.1 (2026-01-22)
- fix: Group frame truncation in My Groups tab — InlineGroup ScrollFrame now auto-sizes to content instead of applying a fixed height (UI-001)
- feat: Multi-version TOC using
## Interface: / ## Interface-TBC: directives — single addon file supports both Classic Era and TBC clients
- feat: TBC Classic client support (Interface-BCC: 20505)
Bug Reports & Feature Requests
Found a bug or have a suggestion?
If you have any questions, comments, or anything else, please feel free to reach out on Discord!
Credits
Developed by:
Special Thanks:
- The Old Gods guild community for real-world testing and feedback
- Ace3 library maintainers for the excellent addon framework
- WoW Classic community for bug reports, suggestions, and support
License
Grouper is open-source software. See the LICENSE file for details.