Description
TOG Profession Master — Guild-Wide Profession & Cooldown Tracker for WoW Classic
Stop whispering every alchemist in the guild to ask "is your transmute up?" and stop opening five different alts to remember who knows the recipe you need. TOG Profession Master keeps a live, shared view of every guild member's professions, recipes, and cooldowns — and lets you mail reagents straight to the crafter without typing a single character name.
The Problem
WoW's built-in profession UI shows you exactly one thing: your own professions on the character you're currently logged into. The information you actually need — who in my guild can craft this, whose cooldown is up, what reagents do they need — is scattered across whisper requests and guild-chat noise.
For active guilds with crafting alts, this gets worse fast. Multiple alchemists each on a 24-hour transmute cooldown, four leatherworkers with different specialisations, alts spread across connected realms, and no good way to coordinate without spamming every member.
The Solution
TOG Profession Master uses a hash-then-fetch peer-to-peer sync protocol over the guild addon channel to keep every member's view of guild professions and cooldowns up to date in real time, with near-zero ongoing bandwidth. Recipe metadata (names, reagents, item links) syncs once on first contact and stays cached forever; only crafter membership and cooldown state flow over the wire after that.
Every guildmate's data is relayable — if Alice is offline, Bob's cached copy of Alice's cooldowns can serve them to Carol when she logs in. Cooldown coverage no longer requires the data owner to be online.
Core Features
Cross-Guild Profession Sharing
- Share professions between two allied guilds — for communities split across two socially-linked guilds that can't see each other over the normal guild addon channel. An officer or the guild leader sets the allied guild under Settings → Cross-Guild (members see the list read-only) and their crafters appear right alongside your own.
- Bilateral by design — data only flows when both guilds list each other. A one-sided config does nothing, and a guild you don't list can't pull or inject anything. With no allied guild configured, the addon does nothing cross-guild — purely local.
- Whole-guild, not just you — the allied-guild list propagates across your guild automatically, and allied rosters are shared, so every member sees the allied crafters — not only whoever set it up.
- Live diagnostics — a panel on the Cross-Guild tab (and
/togpm xgdiag) shows known rosters, crafter counts per guild, and dependency status at a glance. - Requires the auto-installed DeltaSync and GuildRoster dependencies. Same faction only.
Crafting Tab & Cost-to-Craft
- A full crafting screen in TOGPM's style — a clean Crafting tab that pre-populates a dropdown from your known professions and lists every recipe with a difficulty-coloured name and an orange→yellow→green→grey skill-up tier column. By default TOGPM stays out of the way when you open a profession — Blizzard's window (or TSM / Skillet) keeps the window, with a TOGPM button on it to jump to the tab. Prefer the old behavior? One setting opens straight into the TOGPM tab; another hides the Crafting tab entirely if you craft with another addon.
- Craft queue — queue recipes and craft them top-down, click-drag to reorder, with completion tracking so the queue keeps itself current.
- Cost-to-craft with profit preview — every recipe shows total material cost and current AH sell price, with profit calculated in real time (green if you'd profit, red if you'd lose gold). Prices come from Auctionator, TSM, Auctioneer, TOGPM's own AH scan, or the built-in vendor price table.
- Built-in AH scanner — no other addon required — TOGPM can scan the Auction House itself and build its own price database, or integrate seamlessly with Auctionator / TSM / Auctioneer if you already use them.
- Powered by LibProfessionDB — recipe details (names, reagents, difficulty tiers, enchant effect text) come from the standalone offline database, so crafting works for any known profession with no scan wait.
Guild Profession Browser
- Master-detail layout: scrollable recipe list on the left, full recipe drilldown on the right
- Filter by profession (Alchemy, Blacksmithing, Cooking, Enchanting, Engineering, First Aid, Leatherworking, Mining, Tailoring, Inscription, Jewelcrafting)
- Search box for fast item-name filtering, with persistent filter preference per character
- Recipe rows show every guild crafter who knows the recipe — online (white), offline (grey), and your own characters (purple, with "You (AltName)" disambiguation when multiple alts know it)
- Drilldown panel shows reagent list with bag counts, bank stock, and shopping-list quantity controls
- Right-click a crafter row to whisper them with one click
- Virtual scrolling for performance on guilds with thousands of recipes
Missing Recipes Tab
- Pick a character and a profession and see every recipe scroll they haven't learned yet — no more wondering "what am I missing"
- Each row shows the scroll icon, the skill level required, and where to obtain it (vendor, drop, quest, crafted, container, fishing)
- Search by name, filter to a single profession, or toggle whether trainer-only scrolls show
- Shift-click a row to insert the scroll's link into chat; [Bank] button when your guild bank has it in stock
- Defaults to the currently logged-in character; switch to any tracked alt on your account
- Smart filtering: rank-up books (Expert / Artisan / etc. for Cooking / First Aid / Fishing) hide automatically once you've outgrown them
Cooldown Tracker
- Cross-character cooldown panel: every guild member's active and ready cooldowns in one view
- Tracks transmutes (per expansion), Mooncloth, Salt Shaker, Spellcloth/Shadowcloth, Northrend / Inscription Research, Icy Prism, Titansteel, Dreamcloth (all 5), Truegold, Living Steel, JC daily cuts, Magnificence — with grouped rows for multi-spell cooldowns (click [+] to expand)
- Two-level filter: pick a profession, then narrow to a specific shared-timer cooldown (Transmute, Mooncloth, Salt Shaker, Dreamcloth group, JC daily cuts, etc.)
- "Ready Only" filter to hide active cooldowns; ready cooldowns sort A-Z by name for stable ordering
- Sortable columns (Character, Cooldown, Time Left)
- Spell tooltip on hover, item tooltip on the reagent
- Right-click to whisper the cooldown owner
- One-click [Mail] button per row — opens a pre-composed supply mail to the cooldown owner with the right reagent attached from your bags
- Multi-reagent transmutes (Arcanite Bar = Thorium + Arcane Crystal) expand to one row per reagent so you can mail or bank-request each independently
Reagent Tracker & Shopping List
- Add any recipe to your personal shopping list with the "+" button on the recipe row
- Floating Reagent Tracker window aggregates every reagent needed across all queued recipes — have from your bags, need from the shopping list, color-coded green / yellow / red
- Reagent Watch list: pin any item ID to track its bag count separately
- Shopping-list alerts: chat notification when all reagents for a queued craft are available
- Shift-click reagent names to insert item links into chat
Auction House Scanner
- Scan AH button on every tab — walks through whatever's relevant to that tab (your shopping list reagents, the cooldown reagents on screen, the missing recipe scrolls) and queries the AH for live listings, throttled at one item per 1.5s so it's rate-limit-safe
- After the scan, an [AH] button shows up on every row whose item is actually for sale right now — click to jump the AH browse search to that item with no typing
- Works on the
[+] Transmutepopup too: each transmute reagent gets its own [AH] button when listings exist, so multi-reagent transmutes like Arcanite (Thorium + Arcane Crystal) get one button per reagent - Toolbar button shows
Scanning N/Mprogress while running; click during scan to cancel - Auto-clears scan results when the AH closes (listings go stale fast)
- Supports Vanilla through Mists of Pandaria via the legacy AuctionFrame UI
TOGBankClassic Integration
When the optional TOGBankClassic addon is loaded, TOG Profession Master surfaces guild bank stock everywhere it matters:
- [Bank] button next to every reagent in the recipe drilldown, cooldown panel, shopping-list expansion, and Reagent Tracker — visible only when the bank actually has stock of that reagent
- Click [Bank] to open a request dialog, pick the banker, set quantity (capped by the configured maximum-percent), and send the request to TOGBankClassic
- Auto-detects when TOGBankClassic data isn't loaded yet and refreshes bank buttons once it is
Crafter Online Alerts
- When a guildmate who can craft something on your shopping list comes online, you get a chat alert with their name
- Toggle alerts on/off; configure exclusions (login-burst suppression, stealth-mode opt-out)
- Drives off real
OnMemberOnlinecallbacks fromLibGuildRoster-1.0— notWHOpolling
Item Tooltips
- Hover any item in your bags, the AH, a vendor, or a chat link, and TOG Profession Master appends a list of guild crafters who know how to make it
- Includes profession, skill rank, and online status per crafter
- BoP items skipped automatically
Profit Planner (new in v0.9.0)
- See which recipes make gold at a glance — dedicated Profit Planner tab shows all recipes your characters know, with craft cost, current Auction House sell price, and profit (green if profitable, red if losing gold) in one sortable view
- Live AH vs. Historical pricing — switch between real-time auction prices and long-term averages to spot short-term flips or stable moneymakers
- Filter and search — multi-select profession, crafter, and pricing source filters let you narrow to exactly what you want to see; search by recipe name to find specific crafts instantly
- Works with your pricing addons — pulls prices from Auctionator, TradeSkillMaster (TSM), Auctioneer, or TOGPM's own built-in AH scanner — use what you already have or let TOGPM handle it
- Smart profit tracking — recipes with missing prices stay visible (so you know what needs scanning), and the "+ Profit only" filter hides anything that's currently unprofitable
How It Works
v0.2.0 Sync Protocol (Hash-Then-Fetch)
Most guild profession addons broadcast their full data on a timer. With 50 active guildmates each broadcasting 30+ KB every 30 seconds, that's ~1.5 MB of guild-channel traffic per minute even when nothing has changed. TOG Profession Master's v0.2.0 sync protocol does this differently:
- L0 broadcast (every 10 minutes) — each peer sends a tiny ~600 B leaf-hash list on the guild channel. The list is differential: only leaves whose content has actually changed since the last broadcast are included. A settled guild generates near-zero traffic.
- Mismatch detection — peers compare incoming hashes against their local cache. When a hash differs, they whisper a small handshake to the broadcaster.
- Drill-down — for roll-up mismatches (e.g.,
guild:cooldowns), the broadcaster responds with per-character sub-hashes so the receiver can pinpoint exactly which characters have differing data. - Per-leaf data response — the chosen sender broadcasts only the differing leaf's data on the guild channel (BULK priority). Every peer with stale data for the same leaf merges for free; no per-recipient whisper bottleneck.
- Content-aware merge — cooldowns merge with
max(local, incoming)per spell, crafter sets union-add for relayed data, recipe metadata preserves richest non-nil per field. Receiving from any peer always converges to the same state, regardless of who sent the data.
Whispers carry only handshake control messages (offers, requests). All bulk data flows on the guild channel where AceCommQueue-1.0 handles throttling. The protocol scales smoothly to 300–500 character guilds with 50–100 concurrent users.
Recipe metadata is treated as immutable
Once any peer has scanned a recipe, its metadata (name, icon, reagents, item link) is hashed into a per-profession recipemeta:<profId> leaf. After initial guild bootstrap, this hash matches across every peer and never re-transfers — freeing all ongoing wire traffic for the dynamic part: who knows what (crafters:<profId>) and what's on cooldown (cooldown:<charKey>).
Multi-Version Support
All Classic versions share one codebase. Version detection via GetBuildInfo() at startup; per-expansion static tables for skills and cooldown IDs; compat shims for C_Container, C_AddOns.IsAddOnLoaded, and trade-skill APIs. Supported interface versions:
- Classic Era / Anniversary (1.x)
- The Burning Crusade Classic (2.5.x)
- Wrath of the Lich King Classic (3.4.x)
- Cataclysm Classic (4.4.x)
- Mists of Pandaria Classic (5.5.x)
Slash Commands
/togpm— Open the main profession browser/togpm reagents— Open the floating Reagent Tracker/togpm minimap— Show the minimap button/togpm sync— Force a fresh broadcast (bypasses the 10-min debounce)/togpm status— Print sync / comm diagnostic info/togpm versioncheck— Broadcast a version check across the guild and print responses/togpm purge— Open the purge-data dialog (purge all or just one character)/togpm debug— Toggle debug output/togpm help— Show the full command list
Diagnostic commands for advanced users / bug reports:
/togpm dumphashes— Print the local L0 hash list for cross-peer comparison/togpm dumpcooldowns [charKey]— Dump stored cooldown bucket for a character/togpm dumprecipe <name>— Dump a recipe's stored fields and full reagent table/togpm forcebroadcast— Force a full (non-differential) hash list broadcast immediately/togpm backfill— Run the reagentitemIdbackfill pass/togpm spellcache— Print the spellbook name→ID cache
Requirements
- Ace3 (AceAddon-3.0, AceComm-3.0, AceDB-3.0, AceGUI-3.0, AceTimer-3.0, AceConsole-3.0, AceConfig-3.0, AceLocale-3.0, AceHook-3.0) — auto-installed by CurseForge
- DeltaSync — data sync library (v2.0.3 / MINOR≥9 required for v0.2.0 protocol). Auto-installed by CurseForge; transitively pulls in
AceCommQueue-1.0 - GuildRoster — provides
LibGuildRoster-1.0, the guild-roster engine (membership, online state, roster callbacks). Auto-installed by CurseForge - VersionCheck-1.0 — auto-installed by CurseForge
- WoW Classic Era, TBC, Wrath, Cataclysm, or MoP — all versions supported via compatibility shims
Optional integrations:
- TOGBankClassic — enables [Bank] buttons everywhere reagents appear
- GreenWall — cooldown announcements relay to the confederate guild channel
Recent Updates
v1.0.3 (Latest — 2026-07-15) — Cooldown-sync repair, switched-profession cleanup & cross-guild data-leak fixes
- fix: Guild cooldown sync has been broken since v1.0.0 — now fixed. The v1.0.0 cooldown overhaul only served a cooldown when the sender's copy was strictly newer than the requester's — a comparison that can't hold across a guild, because every client stamped its
updatedAtat local receive time (≈now), so an owner's real copy was never "newer" and nobody ever served a cooldown to anybody. Guild cooldown data silently froze at v1.0.0 and withered as cooldowns expired. TOGPM now serves cooldowns like every other leaf (prefer-newer, but never silent), and a request advertises what you actually hold (real data, not a leftover hash) so a first fetch always resolves. The absolute-timestamp format that prevents sync churn is kept — only the broken serve gate is gone. Cooldowns propagate again as soon as two updated clients share a guild. - fix: Synced guild cooldowns no longer vanish because your character lacks the profession. A cooldown that had genuinely synced (e.g. a guildmate's Salt Shaker) could be filtered out on your end if your copy of their profession snapshot hadn't caught up — so a bank alt or fresh login saw an empty Cooldowns tab despite the data being present. The dropped-profession hide now applies only to your own characters, where the profession read is authoritative; guild sync always shows what it received.
- fix: Lua error when hovering the Cooldowns tab's "Ready Only" button. Its tooltip referenced a missing locale key, and AceLocale raises its "Missing entry" error on access; added the string and hardened the lookup so it can never throw.
- fix: Alt-group sync (
accountchars) no longer churns forever. The alt-group leaf still ran the original model — a relay union-added incoming entries then recomputed the hash on receipt, so every client hashed its own accumulated view instead of the owner's. The leaf perpetually differed and peers re-requested it every cycle (constant backgroundaccountchars:*re-sends). It's now owner-authoritative like cooldowns and professions: minted only by its own account, adopted verbatim everywhere else, no union and no recompute, so everyone converges on one hash. Bonus: a dropped alt now propagates (the grow-only union could never remove one), and a peer can no longer union stray entries into your own alt list. The character purge also dropped the alt-group hash but not the data, so a purged (left-the-guild) character reappeared on the next cache rebuild — the purge now removes the data too, so it sticks. - fix: Guildmates who drop or switch a profession no longer linger in the old profession's data. A dropped profession has no trade-skill window to re-scan, and guild sync could only ever add data — so an ex-alchemist kept showing as a crafter of their old recipes, kept counting on the Guild tab, and kept showing their cooldowns forever. TOGPM now keeps an owner-authoritative snapshot of each character's current professions (a new
professions:sync leaf): on login your client reads the professions you actually have — window-less — and broadcasts the complete set, so a dropped profession is removed for everyone (recipes leave the browser, headcount drops off the Guild tab, uncovered recipes reappear in Missing Recipes). Guarded against false removals: only a confident, complete read acts, and a profession must be absent from two consecutive reads — so a profession you still have but haven't opened is never touched. - fix: Dropping a profession now also clears its cooldowns. Unlearn Alchemy and its transmute drops off the Cooldowns tab — likewise Tailoring cloth cooldowns, Enchanting spheres, JC prisms & daily cuts, Inscription research, Blacksmithing ingots, Leatherworking Magnificence, and the Salt Shaker (its Use effect requires Leatherworking 250, so losing LW means you can't use it). For your own characters the row is hidden immediately against your live profession read; a guildmate's clears once their client rescans and re-broadcasts — the viewer-side hide is limited to your own toons so a genuinely-synced guild cooldown is never hidden because your copy of their profession snapshot lagged.
- fix: Fixed a 1–2 second freeze the first time you open the Professions tab. The background cache-warmer builds one profession at a time and, after each one, forced a full tab teardown-and-rebuild (every dropdown, the toolbar, the scroll pool). With the tab open while the warm ran, that was one full rebuild per profession back-to-back — a dozen complete UI rebuilds in a row, which is the hitch (the list build itself is effectively instant). The warm now redraws only when the profession it just built is the exact view you're on, collapsing that storm to a single redraw; the rest warm silently into the cache and appear instantly when you switch to them.
- improved: Recipe-browser build does fewer redundant roster lookups. Each crafter's visibility/guild-scope checks are now memoized per character within a build, so a crafter known across many recipes is evaluated once instead of once per recipe.
- improved: Serve-side coalescing cuts redundant guild broadcasts. Serving a leaf (or a roll-up's subhash list) is a guild-wide broadcast but request-driven per peer, so when many clients ask for the same thing at once (common in a mixed-version guild, where the one client holding real cooldown data gets asked by everyone) it was re-broadcast to the whole guild once per requester. TOGPM now suppresses a repeat of the same leaf or subhash list within a short window — everyone already got the first copy — collapsing those bursts to a single send.
- improved: The new profession snapshot is owner-authoritative and fully backward-compatible. Each character's set is minted only by their own client and adopted verbatim — hashes are never recomputed on receipt (the convergence-safe model the cooldown sync uses). It rides a separate leaf, so un-updated guildmates are completely undisturbed with zero cross-version churn; they just don't get the cleanup until they update.
- fix: On accounts with characters in more than one guild, each toon showed profession/cooldown data from the OTHER guild. The database is a single account-wide table (every toon writes into it), and the display-time guild gate short-circuited with "own alts are always visible, regardless of guild" — so a Guild A character leaked in your Guild B alts (and any recipe/cooldown only they knew). The Cooldowns guild view was worse: it carries no guild tag and returned the entire account-wide cooldown table unscoped, so even other-guild members' cooldowns rendered under your guild. Fixed with a single roster-truth scope test (
IsInCurrentGuildScope) applied to every guild-scoped view — Professions guild/missing views, item tooltips, the Cooldowns guild view, Guild-tab headcounts, and the Missing Recipes "known by the guild" test. The Mine view still shows all your alts across every guild. Read-only (a hidden cross-guild alt is never purged) and cold-start-safe (nothing is hidden until the roster is ready).
v1.0.2 (2026-07-09) — Fix: Auctionator error when opening Enchanting with crafting takeover on
- fix: Opening Enchanting with crafting takeover enabled threw an Auctionator error (
attempt to index global 'CraftReagent1'). On Vanilla/TBC the Enchanting Craft window's frames are created by the load-on-demandBlizzard_CraftUIaddon, which is normally loaded by UIParent'sCRAFT_SHOWhandler — the very handler TOGPM unregisters when takeover is on so Blizzard's window doesn't pop over its tab. With the loader gone, other addons that hookCRAFT_SHOW(Auctionator) ran while those frames were stillnil. TOGPM now loadsBlizzard_CraftUIitself so the frames exist, then stopsCraftFramefrom auto-popping. Vanilla/TBC + takeover-path only; default hands-off users and Wrath+ clients are unaffected, and the escape-to-Blizzard button still works.
v1.0.1 (2026-07-05) — Specialization detection fixes, full guild coverage & crafter search
- new: Search the Professions tab by crafter name. Type a guild member's name in the recipe search box to list every recipe that player can make — folded into the same cached per-keystroke filter, honouring the current view. Set the Profession dropdown to All to audit a character across every profession at once.
- fix: Alchemy specializations were detected with the wrong spell IDs. The scan checked
28682/28683— actually "Combustion" and "Leap" — so Transmutation and Potion Masters were never detected. Corrected to the DBC-verified28672/28675/28677in the spec scan, the Guild tab, and the transmute-proc cooldown table. - fix: Mooncloth Tailoring could never be detected. The Tailoring spec list used
26802("Detect Amore", a holiday spell) where Mooncloth's real id26798belongs. Fixed to26797/26798/26801(Spellfire / Mooncloth / Shadoweave) everywhere. - fix: Cloth-cooldown "guaranteed 2×" bonus mapped to the wrong specs. Each cloth cooldown now maps to its own spec — Mooncloth → Primal Mooncloth, Spellfire → Spellcloth, Shadoweave → Shadowcloth.
- fix: Archaeology didn't appear on the Guild tab. The skill-name → profession map was missing Archaeology (
794); added. - fix: Skill levels rendered an impossible cap like "375/300". A missing or stale
skillMaxdefaulted to the hard-coded Vanilla 300. The Guild tab now shows every skill against this expansion's real cap (300/375/450/525/600 for Vanilla…MoP). - fix: Gathering skills were missed when a skill header was collapsed. The scan now expands all headers first (
ExpandSkillHeader), so a collapsed "Professions" / "Secondary Skills" no longer drops Skinning / Herbalism / Fishing / Archaeology. - improved: The Guild tab now lists EVERY profession, even at 0 — not just the gathering ones — so crafting-profession coverage gaps are visible too.
- improved: TBC/Wrath specialization recipes now attribute their crafters (Lionheart weapons, Dragonscale/Elemental/Tribal leatherworking, Gnomish/Goblin engineering, Mooncloth tailoring). TBC/Wrath moved the spec gate onto the crafted item, which the data now reads. Requires ProfessionDB v1.2.2.
v1.0.0 (2026-07-01) — First full release: Guild professions tab, skill-tier filter & Cooldowns reagent overhaul
- new: New Guild tab — the guild's profession headcount at a glance. Shows how many guild characters have each profession, broken down by specialization (Dragonscale / Elemental / Tribal Leatherworking, Armorsmith / Weaponsmith → Swordsmith / Hammersmith / Axesmith Blacksmithing, plus the Alchemy / Engineering / Tailoring specs). Counts are the union of synced skills and known recipe crafters, so they reflect everyone the addon knows — not just characters who've opened their profession window — with the tracked-character total in the status bar and hover tooltips on the column headers. Localized in all shipped languages.
- new: Missing Recipes now has Personal / Guild sub-tabs. A sub-tab switch on the Missing Recipes tab: My Character (the existing per-character view) and Guild — a guild-wide list of recipes nobody in the guild knows, filterable by profession and searchable, so you can spot coverage gaps at a glance. The Guild view computes "missing" as any recipe in the shipped universe with zero crafters across the whole guild; your sub-tab choice persists.
- new: Filter the Professions browser by skill tier. A new multi-select Skill tier dropdown shows only recipes in the trainer ranks you tick (Apprentice / Journeyman / Expert / Artisan, plus Master / Grand Master / Illustrious / Zen Master on later clients) — untick the lower tiers to hide their recipes. Tick multiple (the menu stays open), with Select All / Clear All at the bottom; only tiers your client can reach are offered, your selection persists, and recipes with no known skill level always stay visible. Localized.
- new: Cooldowns tab shows every reagent for multi-reagent crafts. Brilliant Glass (six gems) and Primal Mooncloth / Spellcloth / Shadowcloth (three reagents each) previously showed only one reagent — or none — and no mail button. They now render as click-to-expand
[+]rows whose popup lists every reagent with its own [AH] / [Bank] / mail controls. Prismatic Sphere and Void Sphere, which showed no reagent at all, now display theirs. - new: Reagents you already have are highlighted. In the Cooldowns reagent popup, a reagent name turns white (from grey) when you're holding enough of it in your bags to fill the supply mail.
- fix: Cooldown reagent-mail button no longer reports "You have no item:1 in your bags." The mail button in the reagent-breakdown popup called the mail helper with a missing argument, shifting the reagent's item ID out of position so it looked up item "1" instead of the real reagent. Distinct from the v0.10.10
C_Containerfix — different button, different cause. - improved: Tidier reagent popup on the Cooldowns tab. Removed the redundant per-reagent status column (readiness is already on the main cooldown row) and widened the reagent column so long names like "Bolt of Imbued Netherweave" fit on one line instead of wrapping.
- improved: Profession-spec detection now covers Leatherworking & Blacksmithing. The spec scan learned the Vanilla LW / BS specializations that feed the new Guild tab's breakdown; harmless on Cata+ where these specs were removed.
- fix: Missing Recipes no longer lists recipes you (or the guild) already know. Recipes with a spell ID above 25000 — e.g. patch-added Vanilla cooking recipes like Smoked Sagefish — wrongly showed as missing even when known: the Classic-Era "untagged post-Vanilla" existence gate short-circuited the filter chain before the already-known check ran. The known-filter is now an additive guard that always applies.
- fix: Search fields no longer lose focus mid-typing during guild sync. Incoming sync fired a window refresh that rebuilt the active tab's toolbar (including its search box), dropping keyboard focus so keystrokes became "unbound". The refresh now defers while a search field is focused, the same way it defers while a dropdown pullout is open.
- improved: Migrated to DeltaSync's multi-host API — requires DeltaSync v4.0.0+. DeltaSync v4.0.0 made the library multi-host, so TOGPM now creates its own isolated sync host instead of sharing one singleton — it no longer clobbers (or gets clobbered by) another DeltaSync-using addon in the same client. Requires the standalone
DeltaSyncaddon at v4.0.0 or newer; on an older DeltaSync, guild sync stays disabled (it will not fall back to the old shared path) until you update. Wire format unchanged — syncs with peers exactly as before.
v0.10.10 (2026-06-30) — Live-refresh fixes, leaner recipe sync & a live Sync Log
- new: Sync Log is live, persistent, and copyable. Settings → General → Sync Log. Updates in real time (no more clicking to refresh), remembers its position/size across
/reload, and its contents are selectable and copyable (read-only) for bug reports. Entries are far more informative — sends now show what went out (a crafter transfer names its profession, e.g.crafters:165 (Leatherworking); a per-player transfer names the player) instead of a meaningless "0 B", offer/sub-hash sends are logged for the first time, and a dedicated size column shows the real byte size of every message — sends included — beside the payload type, all under a column-header row (Time / Event / Size / Peer / Detail) above the box. (The send-size figures specifically need DeltaSync v3.2.1+, which returns the serialized size to the host — that dependency is only for those send numbers; on an older DeltaSync they show "—" and everything else behaves identically.) - new: Choose your crafter-alert sound and visual. Settings → Alerts. Two new dropdowns pick which sound (Chime, Ready Check, Raid Warning, Auction Bell, Whisper, Map Ping) and which on-screen visual (full-screen flash in gold / red / blue, a raid-warning banner, top-center error text, or a taskbar flash for when you're alt-tabbed) fire when a guild crafter comes online. Selecting an option previews it, and each dropdown greys out while its matching suppress toggle is on. Localized.
- new: Jump from the Profit Planner to the Crafting tab. Clicking a Profit Planner row now opens that recipe directly in the Crafting tab, ready to craft (shift-click still links the item in chat). If you've hidden the Crafting tab, it tells you how to bring it back.
- fix: Professions tab now updates live as guild data arrives. Synced recipes were ingested but the tab kept showing a stale cached list until a
/reload(switching tabs didn't help). Two causes fixed: the background cache rebuild now re-renders the open tab (preserving your scroll position), and its debounce timer is no longer starved on busy/actively-syncing realms — previously every update reset a 10s timer so the rebuild never fired. - fix: Purge buttons clear the Professions display immediately. "Purge all guild data" / "Purge my character data" cleared the database but the Professions tab re-rendered stale rows from its recipe cache; the cache is now invalidated on purge before the refresh.
- fix: "All Professions" view reflects your own freshly-scanned professions. Scanning a profession locally raised no UI-refresh signal (only received sync did), so the cached All Professions list stayed stale — most visibly after a purge, where it showed "no data yet" while a specific profession filter showed the recipes. A local scan that changes your recipe set now refreshes the same way a peer update does.
- fix: Professions tab reflects members going online/offline. Each crafter's online status is baked into the recipe-list cache at build time, so a roster change alone didn't update the tab — someone logging off kept showing as online until the next data change or
/reload. Roster transitions now refresh the tab (debounced, only while it's on screen), so status reflects within ~2s. - fix: Cooldown supply-mail finds your reagents on older TBC / Classic clients. On builds without
C_Container, the legacyGetContainerItemInforeturns no item ID, so the mail bag scan matched nothing and said "you have no <reagent> in your bags" even when you had it. The compat shim now derives the item ID from the item link, so the scan works everywhere. Thanks to Bzum for the report. - improved: Leaner recipe sync — per-player drill-down. When anyone changed a recipe, peers used to re-fetch that whole profession's crafter set (a single ~90 KB transfer on a large guild). Sync now negotiates a per-player hash list under each profession and pulls only the players whose recipes actually differ, newest first and each as its own small message — so a one-recipe change ships just that player's data, populates incrementally, and interleaves better on slow/congested servers. Fully additive and backward-compatible: feature-detected, engaging only between updated clients and falling back to the whole-profession path otherwise — no coordinated update, no wire-format break.
- improved: Crafter column fills the available width. The Professions tab's crafter summary now fits as many crafter names as the column's current width allows (with a greyed "+N" for the rest) instead of a fixed two, re-fitting live when you drag the window wider or narrower.
Community
If you have any questions, comments, bug reports, or feature requests, please feel free to reach out on Discord or open an issue on GitHub!





