Skip to content

Releases: AndyPandyTX/PandyGuildManagement

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:49

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.
  • 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

Choose a tag to compare

@github-actions github-actions released this 24 Oct 23:11

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.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 13:50

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.
  • 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.
  • 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
    ...
Read more

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 24 Oct 01:42

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.
  • 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.
  • 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.
  • 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.
  • 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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 18:54

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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 18:34

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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 18:06

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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 17:49

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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 17:24

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

Choose a tag to compare

@github-actions github-actions released this 23 Oct 17:09

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