Repository navigation
Releases: AndyPandyTX/PandyGuildManagement
Releases · AndyPandyTX/PandyGuildManagement
Release list
v0.10.0
Pandy Guild Management
v0.10.0 (2026-10-26)
Full Changelog Previous Releases
- v0.10.0
- M+ scores in RaiderIO's colours when it's installed
RaiderIO's scale keeps going past orange into pink and red for the
season's top scores, as LFG addons show them; without it, the game's own
colours as before. - Fix the review's bugs and tech debt
Released-version bugs:- The window opens with the group finder off (no nav button for hidden
pages), and /pgg on|off rebuilds the sidebar. - A purge of a third of the guild is believed once a read a minute later
is missing the same people (it was ignored forever). - Catch-ups: an overheard catch-up counts for listeners, and an officer's
own edit made while caught up keeps them caught up, so one edit no
longer sets off a catch-up per player. The 30-night cap is for first
catch-ups only; Match past raids sends in bulk. - Deleted raid nights are remembered by raid, time and leaders, so a
copy that missed the delete can't bring them back; deletes in a
catch-up say which raid. Older copies' nights (no leaders) match once
their attendees arrive, not by time alone. - Notes imports and Find teams wait for the catch-up, which no longer
counts time inside instances. A late record or Match past raids doesn't
re-tag a night untagged by hand (a deleted team's nights can be).
Team deletes are stamped past the team. Boss lists are cut at a boss. - Set rank waits for the roster after a click (no double moves). History
credits the event closest in time, and rank names with spaces parse. - Who can craft gives up on a missing answer and shows fresh online
status; Activity too. "Alt" ranks are whole words. Secret notes keep
the note we knew. Settings works without Libs. - Group finder (Groups): Blizzard's search box keeps its own handlers
(hooks only, no re-parenting), listing roles aren't counted twice,
closed scheduled posts close for people who were away, board sort,
key replies per requester, relayed keys can't be from the future,
editing a started group keeps its start, and cleanups.
Loot branch: - Names without a realm get the right one (raid group, roster, account
characters, other records); existing records are fixed and merged. - Tier tokens are told by their tooltip's class line; other miscellany
and stacks aren't kept, and are pruned. M+ bonus rolls get their
dungeon. Deleting sticks. Tied nights go to no team. A drop re-read
isn't kept twice. Preview counts, paste import and label cutting.
Tech debt: shared main-picking, rank names and guild permissions; alts
rebuild only when the roster changed; capped caches; pruned sync
bookkeeping; Activity keeps 92 days; comments.
- The window opens with the group finder off (no nav button for hidden
- Loot: how each roll was won
Live: when the drop summary leaves out how the winner rolled, read it
from the drop's full roll list, and keep the winning roll (shown as
Need 87). MRT saves how the person playing rolled, not the winner, so
its roll type is used only where the winner is one of this account's
characters; others' wins from MRT stay Won roll. MRT is read in full
once more to pick these up. Need (off-spec) shows as Need (OS). - Loot: Boss menu by raid tier
PGM.LOOT_TIERS lists each tier's raids and bosses by encounter id, the
current tier first (Midnight Season 2: The Venomous Abyss, The Tidebound
Grotto, The Unbinding of Kith'ix; then Season 1). The Boss menu shows the
current tier's bosses by raid, with earlier tiers, older raids and M+
dungeons as submenus, and an All of ... choice for each. Bosses match by
encounter id, so loot MRT saved under the wrong place still lands right.
W.Menu entries can be headings. - Loot: bosses for bonus rolls, M+ loot, dungeon names; teams: no duplicates while catching up
Bonus rolls without a boss (VoidcoreAdvisor's) take the boss, raid and
difficulty of the kill whose drops were recorded closest to them, within
5 minutes. M+ loot is kept too (live and from MRT), and records keep the
raid or dungeon name; M+ rows show the dungeon. MRT and VoidcoreAdvisor
are read in full once more after this update. Names without a class get
it from the guild roster. Shorter filter labels.
Find teams in notes waits for this login's catch-up, and the empty Raid
Teams page says it's waiting instead of offering the button: a copy that
hadn't heard the guild's teams yet made a second of each. Teams now say
who made them (a last field in T records, ignored by older copies),
shown with the date when you hover a team. - Loot page: raid drops and bonus rolls, with filters, export and import
Loot.lua records group-loot winners (Need, Greed, Transmog) and personal
loot for the whole raid, our own bonus rolls (raid or M+), and others'
bonus rolls from the loot chat line. Epic gear and tokens only; repeats
of the same item to the same player within 15 minutes are one record.
MRT's loot history and VoidcoreAdvisor's bonus-roll log are pulled in at
login. Nothing is synced: export what the filters show as PGM text or
CSV, and import someone's export. A drop belongs to the raid night it
fell in (the one its winner attended), which gives the team.
UI/Loot.lua is the page: filters for when, raids or M+, team, boss,
difficulty, item type and drops or bonus rolls, a search, shortcuts for
Mine, My bonus rolls and Tier tokens, and a By player view. The paste
window is now shared (UI/PasteBox.lua); Paste list for teams uses it. - Raid nights: a team's night needs 10 of its members; two teams' raids never merge
A night now goes to the team with the most members there (bench
included, alts counting for their main), if that's at least 10, or the
whole team when it has fewer than 10 (and at least 3). A tie goes to
the team with more of its roster present.
Each record keeps the raid leaders it saw, sent as a last field in S
and D records (older copies ignore it). Two records with different
leaders are two raids, so two teams in the same raid and difficulty at
the same time stay two nights, and deleting one leaves the other.
Records from older copies fall back to: two full records (5+ each)
with nobody in common are two raids. - Raid teams: paste a roster from a spreadsheet, CSV or JSON
Paste list on the Raid Teams page takes copied spreadsheet cells (a
wowaudit sheet, say), CSV or flat JSON, one character per line. Names
match the guild roster (Name or Name-Realm); other columns can give the
role (or a spec word) and Core / Trial / Bench. A preview shows who'd
be added or updated and which names aren't in the guild. Only adds and
updates, lifts removals like adding by hand, and syncs like any edit.
AddToTeam takes an optional role and status. - New screenshots for v0.9.1, plus guild crafters, group finder, Who's Free and Keystones
- CurseForge description: Pandy's trimmed feature list
v0.9.1
Pandy Guild Management
v0.9.1 (2026-10-24)
Full Changelog Previous Releases
- v0.9.1
- Minimap button and data broker launcher
The panda logo on the minimap via LibDBIcon: drag it around the edge,
collectors pick it up, left-click opens the window, right-click opens
Settings. Also a LibDataBroker data source for Titan Panel, ChocolateBar,
ElvUI and other broker displays, showing guildies online.
Libraries come from .pkgmeta externals (Libs/ is gitignored). Settings
gets a Minimap button checkbox, and /pgm minimap toggles it. - Professions: who can craft a recipe, and Guild crafters on the profession window
- The recipe view opens again: Midnight's CanViewGuildRecipes could say no
for a profession whose view works, so the game now decides. - Crafters.lua asks the game which guild members know a recipe
(QueryGuildMembersForRecipe, every member, addon or not), matches them
to the roster (online first, Online as for alts) and keeps the answer
ten minutes. Profession windows teach it their newest expansion's
recipes, so they can be searched by name or item. - The Professions page gets Who can craft...: type a recipe name or
shift-click an item, pick a match, and the right side lists who knows
it, with Back to professions. - Blizzard's profession window gets a Guild crafters panel beside it on
the recipe page: who knows the selected recipe; click to whisper; the
header folds it.
- The recipe view opens again: Midnight's CanViewGuildRecipes could say no
v0.9.0
Pandy Guild Management
v0.9.0 (2026-10-24)
Full Changelog Previous Releases
- CurseForge description: lead with the group finder too
- Build the group finder into Pandy Guild Management (0.9.0)
Pandy Guild Groups now lives in Groups/ (its history merged in above) and
loads after all of PGM's files, with PandyGuildGroupsDB among PGM's saved
variables so existing data carries over.- Its pages (Groups, Who's Free, Keystones) get their own Groups section
in the sidebar; pages whose hidden() says so are left out. - Settings > Group finder switches it on or off (also /pgg on | off);
off hides its pages and stops its messages. - The separate addon's .toc, license and 'needs 0.9.0' check are gone.
- README, CurseForge description and the group finder's own guide and
design notes describe it as built in; npm test runs its simulation.
- Its pages (Groups, Who's Free, Keystones) get their own Groups section
- Fold in Pandy Guild Groups (its full history) under Groups/
git-subtree-dir: Groups
git-subtree-mainline: 5beacc0
git-subtree-split: b2a0de7 - Merge remote-tracking branch 'origin/main' into fold-groups
- Tools: a simulation for the group finder (Pandy Guild Groups)
tools/simgroups.lua loads PGM's real non-UI files and the group finder's
files into several simulated players, with a stand-in window and a fake
Group Finder, and runs its records through the real Sync.lua: posts, asks,
invites, full groups, schedules and signups, cleanup, keystones and
LibKeystone, scores, Group Finder listing, applicants, search, the board's
filters, applying, the borrowed search box, telling the guild, the
Keystones order and the off switch. 91 checks.
simrun.js gets a groups mode (files from Groups\ or a given folder;
skipped when there are none). npm test runs it after the retail and Forever
runs; npm run test:groups runs it against the separate PandyGuildGroups
folder until the fold-in. - An off switch for the group finder
G:SetEnabled(on) / G:IsEnabled(), for PGM's Settings once this is built in,
and /pgg on | off. Stored as PandyGuildGroupsDB.off and read where work
happens: sends, received records, events, timers, PGM's events, the hooks on
Blizzard's Group Finder rows and tooltips, and the pages, which show an off
cover with Turn it on. Tabs carry hidden = GU.Hidden for a sidebar that
hides them. Going off closes my guild post first and gives Blizzard's search
box back; coming on starts up as at login if it hadn't. - README: install from CurseForge first
- Merge remote-tracking branch 'origin/main' into modules
- Footer update note: skip when there's no footer
- Tell players when their copy is out of date
When a guildie's copy is newer (heard live, or from a version heard in
the last two weeks), say so once a session in chat, only to the player,
and show the newer version in amber at the bottom of the window. Builds
that aren't releases are never compared. - Browse: smaller row text; raid difficulty by the name
Row text drops a size (key and name 12, details 10) so titles, names and
guildie counts fit. A raid shows its difficulty (Normal, Heroic, Mythic, in
their colours) or a delve its tier, next to its name, from the activity, for
Group Finder rows and guild posts alike. - Search box holder carries the panel's fields; raids show who's in
Blizzard's own search box handlers look on the box's parent for its
panel's fields (the box, its autocomplete list, the category, filters), so
while it's borrowed the holder carries them too, and drops them when the
box goes back. That was LFGList.lua's 'attempt to index field SearchBox'.
Raid rows show who's in them (tanks, healers, DPS) the way Blizzard's window
does, since a flexible raid's 'remaining' counts are only open places, and
the number of guildies in a group sits by its name where it can't be cut.
The search hint follows the category. - Merge remote-tracking branch 'origin/main' into modules
- Professions: counted by player, active this week, who to ask now
- Each profession shows how many players have it (alts folded into their
main) and how many were active this week; thin ones are flagged, and
the tooltip adds characters, max level and online counts. - By player (on by default) lists each player once under their best
crafting character, with the rest in the tooltip. - When the crafting character is offline but the player is on another
one, the row says Online as ..., sorts near the top, and right-click
whispers them there. Nobody-to-ask rows are dimmed as on the Roster.
- Each profession shows how many players have it (alts folded into their
- Browse: leader on the second line; open with Blizzard's group list
The title line holds just the key column and the dungeon, with the leader's
full name after the rating on the second line, and Group Finder rows lose
their source tag (only guild posts say where they're from), so nothing is
cut. Browsing groups in Blizzard's window now opens the Groups page on
Browse too, unless you're listed. - Browse: the key in a gold column of its own
The listing's title (which starts with its key level) or a guild post's
level now sits in a fixed column right after the icon, in gold, so levels
line up down the list; the dungeon name and leader follow. - Search by key level with Blizzard's own search box
Titles can't be read by addons, but the Group Finder's search box searches
them on Blizzard's side. While Browse is open, the box moves into the
Filters panel (as OAK LFG Sorter does) with Enter and clear searching from
here, and goes back when Browse closes; if another addon holds it, it's left
alone. One level also finds its neighbours; a range is exact. - Show Group Finder titles; drop the key level filter that can't work
Group Finder titles and comments reach addons as protected strings
(|Ks1969|k...|k): the game draws them but addons can't read them, so the key
level can't be parsed, and digits from the protected string were never the
key. Rows now show the title as the game draws it, the level parser skips
protected strings, and the Keys box and key level sort are gone (their saved
settings cleared), with a hint to use the Group Finder's own search box. - Key levels from every title style; open Groups on list or apply
Group Finder titles come as 14, +14, 14+ or + 14 Learning, so the key level
is read with RaiderIO's patterns, then from the comment. Listing a group
opens the window on My group and applying anywhere opens it on Browse,
unless Open Groups when I list or apply is off; never in combat. - Browse: my requests on top with Pending, Cancel, Declined; My group comp
Groups I've applied to or asked to join sit at the top of Browse whatever the
filters, tinted Pending (with Cancel), Invited, Joined or Declined; a decline
stays two minutes before Hide declined hides it. Applying pins it at once.
Hovering a row shows each member's spec.
My group's card shows my comp filling in, class-coloured by role, and
applicants carry their spec's icon by their name and spec in class colour.
Listing a group opens My group; delisting goes back to Browse. - Browse: group comp, dungeon icons, OAK-style filter panel
Five-player rows show their comp: a slot per place, class-coloured with the
member's role, open slots showing the role they want (hover for specs).
Rows and the Keystones page use each dungeon's keystone art. Filters move
to a panel like OAK's: Apply as roles, playstyle, key range, leader rating,
tick boxes (fits my role, hide declined, need or has tank and healer, need
DPS, battle res, lust) and this season's dungeons with icons and my best
key, untick to hide. Search is now Refresh. - List my key: open the Group Finder, don't fill in Start a Group
Filling in Start a Group from addon code made Blizzard's form call the
protected SetEntryTitle, which the game blocked. List now only opens the
Group Finder; picking Dungeons and Start a Group fills in the keystone. - Keystones: Online only hides my offline alts; Mine first starts off
Online only now applies to my own characters too. Mine first, which pinned
them above a higher key and made the sort look wrong, starts off (the old
setting is reset once) and tints the rows it pins. The Who sort uses
PGM.NameLess, from PGM's stable list. - Merge remote-tracking branch 'origin/main' into modules
- Keystones sort by column; tell the guild; list my key
Keystones: click a column to sort (key level, dungeon, who, score, seen),
Online only on by default, Mine first. On your own key, List opens the Group
Finder's Start a Group on it (you click List Group), and Post fills in a
guild post.
Tell the guild says in guild chat what your group is, with your keystone's
link, and the roles it needs, from a template in settings. Also /pgg tell
and /pgg list. - Groups page: one board for guild and Group Finder groups
Browse lists guild posts and Group Finder results together, guild first,
each row saying what it needs (Needs: 1 Tank 3 DPS). Guild options sit on
top (guild first, guild only, scheduled, sort); under them the Group Finder
...
v0.8.2
Pandy Guild Management
v0.8.2 (2026-10-24)
Full Changelog Previous Releases
- v0.8.2: raid-night and sync fixes, Bulk Actions safety, speed, rank picker
- Profile: pick a rank and set it in one click
Promote and Demote become a rank dropdown (ranks below yours, the current
one marked) and a secure Set rank button carrying as many /gpromote or
/gdemote lines as it takes, up to one macro's 255 characters. Ranks your
rank can't move people to are greyed out, and members at or above your
rank get no rank controls. - Performance for big guilds
- Activity results are kept per period and only go stale when the hours,
the membership or someone's main change (not on every roster read);
each hour's 'who was on' list is parsed once. - Roster reads are gathered into one every 3 seconds (1 when asked for);
joins, leaves and note or rank changes bump versions other parts check. - Alt detection remembers each note's candidate names; alt links bump a
version only when someone's main actually changes. - Keep in sync team imports only run when notes, ranks, members, alt
links or teams changed. - The guild key behind every GuildDB() call is cached until the guild
changes (at most 30 seconds). - Attendance answers survive roster reads that only change who's online.
- Bulk Actions works out its list and every rule's count in one pass,
with team spots and alt groups computed once; repaints are gathered. - GRM import trims History in one pass instead of one entry at a time.
- A Guild Finder join settles its History credit (no inviter) instead of
re-asking the event log every minute for two weeks; invites still win. - Roster sorting computes each row's value once.
- Activity results are kept per period and only go stale when the hours,
- Bulk Actions: safer confirm, hotkey and editing
- The Start popup carries the action and head count it confirmed; if
either changed before accepting, nothing starts. Switching actions or
leaving the page closes it. - The hotkey needs Ctrl, Shift or Alt and can't be Enter, Tab, Space or
Backspace; capturing ends on leaving the page or entering combat. - Rule edit boxes write to the rule they were editing when they got
focus, and Delete rule commits pending edits first. - Opening a profile puts away the page's secure buttons (disarming an
armed run) and commits a half-typed private note. - A UI scale or resolution change re-places position-anchored buttons.
- The Start popup carries the action and head count it confirmed; if
- Sync: catch-up that can't skip, can't be spammed, can't be undone
- Separate 'newest record held' (decides offers) from 'caught up to'
(what a copy asks from). Our own edits and overheard records no longer
make a copy look caught up, and E sets how far a catch-up brought us. - One offer per player, so a second login doesn't cancel the first
player's catch-up; a burst of hellos schedules one reply hello. - Officers only answer a catch-up request they offered, at most once
every 3 minutes per player; empty or unknown names never match 'me'. - Keep in sync note imports wait until this login's catch-up is in, so
a removal made while away isn't undone. - Records are retried on any send failure except a malformed message,
and every instance type holds the queue; a quick reload keeps last
session's unsent records. - 'gm' counts as an officer word only on its own (not in Sigma).
- Activity hours from other copies are kept within possible values.
- Separate 'newest record held' (decides offers) from 'caught up to'
- Raid nights: no duplicates, no wrong merges, deletes stick
- Two records are the same night only for the same raid at the same
difficulty, overlapping in time or starting within 30 minutes (one
rule, PGM:SameRaidNight, for local saves and sync). A Normal and a
Heroic night, or two teams back to back, no longer merge. - A session that closes after another officer's record of the night
arrived merges into it instead of saving a second copy. - Moving to another raid or difficulty closes the night and opens a
new one. - Deleting a night deletes it under every id it's known by, says which
raid and when so copies that matched it by time delete it too, and is
stamped past the night's own stamp. - Received nights respect the 300-night cap.
- Two records are the same night only for the same raid at the same
- Move the lint and sync simulator into tools/
They lived outside the repo. tools/ is kept out of the release zip;
run npm install there once, then npm run lint and npm test. - CurseForge description: History credits, guild window buttons
v0.8.1
Pandy Guild Management
v0.8.1 (2026-10-23)
Full Changelog Previous Releases
- v0.8.1: History credits, guild window buttons
- History: who made each change, and the alts left behind
Promotions, demotions, removals and joins are credited from the game's
system messages while online, and from the guild event log for anything
that happened while away. When someone leaves or is removed, their
characters still in the guild are listed. History search also matches who
made a change. - Guild window buttons: under the bottom-right corner
- Buttons above the Guild & Communities window
Pandy Guild, History and (for officers) Bulk Actions, over the window's
top-left corner, shown while the guild is the selected community. - Bulk Actions: show each member's current rank in the list
- CurseForge description: Bulk actions
v0.8.0
Pandy Guild Management
v0.8.0 (2026-10-23)
Full Changelog Previous Releases
- v0.8.0: Bulk Actions
- Bulk Actions: officers only
On top of the game's own rank permissions, only officers (the same people
who can edit raid teams) can make rules or start a run. Everyone else sees
a short note instead of the page. - Bulk Actions: kick, promote or demote by rules
Rules per action pick members (time away or online, ranks, level range,
time in the guild, note text, target rank; raid team members and anyone
whose alt or main was on recently are left alone by default). Unticked
members are remembered. A run is confirmed, then each press of a secure
button or its hotkey runs the next batch, as many commands as fit in 255
characters. The roster is read after each press to confirm; anything that
didn't take is retried once, then marked failed. Bulk removals show in
History as removed. Disarms in combat, on leaving the page or closing the
window.
v0.7.2
Pandy Guild Management
v0.7.2 (2026-10-23)
Full Changelog Previous Releases
- v0.7.2: roster defaults to online, names sort ignoring accents
Names in every list sort as if accents weren't there, so Ühtréd sits
with the U's instead of after Z. Includes the roster changes: Online
filter on by default, remembered filters, dimmed offline members. - Roster: Online filter on by default, offline members dimmed
Filter chips are remembered between sessions and start on Online the
first time. Offline members show at half brightness. With Online on, an
empty search says to turn it off to search everyone. - Ignore Office lock files
v0.7.1
Pandy Guild Management
v0.7.1 (2026-10-23)
Full Changelog Previous Releases
- v0.7.1: team renames, schedules and tags sync
Renaming a team, or changing its schedule, note tags or Keep in sync,
only changed the officer's own copy. All four now go through
PGM:UpdateTeam, which shares the change. On first login, the copy that
created each team re-shares it one tick newer, so names typed before
this fix reach everyone without overwriting later edits.
Sync is also harder to lose: unsent records are kept across a reload or
logout, catch-up starts on any gap instead of gaps over 30 seconds, and
a catch-up leaves the two copies equally current so it doesn't repeat.
v0.7.0
Pandy Guild Management
v0.7.0 (2026-10-23)
Full Changelog Previous Releases
- v0.7.0: players link their own characters
Each character announces its account's main over sync (record B). Anyone
may send it, but only about the character sending it; officers relay them
in catch-up. A link counts only when the main has announced itself as a
main, and an officer's link or Not an alt still wins. Profiles say where a
link came from.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - CurseForge description: WoW Forever support
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v0.6.0
Pandy Guild Management
v0.6.0 (2026-10-23)
Full Changelog Previous Releases
- v0.6.0: WoW Forever support
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Support WoW Forever alongside Midnight
Detects WoW Forever (project Camelot, interface 16001) and adapts: level
cap 60 with matching level bands, no Mythic+ score, column or spread, no
RaiderIO raid progress, and no Midnight raid-buff checklist. Roster cells
are keyed by column so a hidden column can't shift the others.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - CurseForge description: RaiderIO note, who edits what, activity catch-up
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Upload tagged releases to CurseForge too
Adds the CurseForge project id to the .toc and passes the CF_API_KEY
secret to the packager. Also adds the CurseForge page description.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com