File Details
GuildHall.zip
- B
- Jun 5, 2026
- 223.30 KB
- 0
- 12.0.7+1
- Retail
File Name
GuildHall-v0.7.4-beta.zip
Supported Versions
- 12.0.7
- 12.0.5
What's New
- Split-button Invite on the Events footer. Replaces the single 70px "Invite" button with a 56px primary + 14px arrow dropdown:
- Primary "Invite" → WGS:AutoInvite(ev) with bench excluded. Matches what an officer almost always wants at raid start; "Bench" semantically means "available if needed", not "going".
- Arrow ▸ Invite signups + bench → opts back into the legacy bench-included behaviour for the rare case it's wanted.
- Arrow ▸ Invite team roster → skips signup + raid-comp tiers, invites the team's full roster. For ad-hoc weekly runs where nobody pre-signed.
- Total width stays 70px so the Share Roster button anchored next to it doesn't shift.
Changed
- Right-click menu actions now actually fire. After 0.7.3-beta shipped the EasyMenu → MenuUtil migration, the Events Roster right-click menu opened correctly but clicking action items (Invite / Whisper / Copy profile link / etc.) silently did nothing. Root cause: live retail MenuUtil's responder swallows the click unless the callback returns a MenuResponse value — the documented "nil → CloseAll" default doesn't fire on the real client. buildContextItem now wraps every action callback with pcall(fn); return MenuResponse.CloseAll so the action runs AND the menu closes cleanly. pcall is belt-and-braces: a runtime error inside an action (e.g. InviteUnit throwing) used to leave the menu wedged half-open; the wrapper swallows it so the menu still closes. 13 new specs (spec/player_menu_spec.lua pins down the player menu shape + that Invite/Whisper/Inspect call the right Blizzard API with the short name; spec/ui_context_menu_spec.lua +3 tests lock the wrapper's return + error swallowing).
- /gh invite and the rail kebab's "Invite signups" now exclude bench by default — consistent with the new split-button primary. Bench-included is opt-in via the footer arrow dropdown.
- WGS:GetEventSignups(eventId, includeBench) / WGS:GetEventInviteList(event, opts) / WGS:AutoInvite(eventOverride, opts) accept new override args. opts.includeBench threads through to GetEventSignups; opts.sourceOverride == "roster" skips signup/comp tiers and goes straight to the team roster. Legacy no-arg callers keep the bench-included default in non-invite contexts (exports, status counts) where the meaning is different.
Removed
- Auto-probe on peer-sync — /gh sync is now the only way to initiate a catchup. This release moved through two stages:
- Trigger swapped GROUP_ROSTER_UPDATE → PLAYER_ENTERING_WORLD (raid-only, 5min debounce). GROUP_ROSTER_UPDATE was the wrong event for "officer joined a raid" — it fires on every member join, leave, spec change, rez, and zone transition inside the instance. With 5 officers each probing on every roster update (debounced to 60s), you'd see a probe every ~12s in steady state in any raid with churn. PLAYER_ENTERING_WORLD gated on IsInRaid() AND instanceType == "raid" fires once per zone-into-raid event. Debounce widened 60s → 300s.
- Auto-trigger dropped entirely. In real raids even the once-per-zone probe was too chatty. Catchup now runs ONLY on /gh sync (or "Sync now" in the Sync tab). What still runs automatically: real-time per-row broadcasts on capture (loot / attendance / encounter / raid-comp — silent, one-way, no probe handshake) and the inbound message handler (so another officer's manual /gh sync can still pull from this client).
- Net effect on the addon channel: silent unless an officer asks, vs. the pre-fix state of constant probing.