DelveIO

Track and compare Delve scores across tooltips, LFG, guild, friends, communities, and more. Scores combine tier, breadth, volume, and Nemesis data from 269k+ tracked players. Contact me via email or github issues.

File Details

DelveIO.zip

  • R
  • May 22, 2026
  • 2.04 MB
  • 15
  • 12.0.5
  • Retail

File Name

DelveIO.zip

Supported Versions

  • 12.0.5

Nightly database update

Automated update with the latest DelveIO scores.


Changelog

All notable changes to the DelveIO addon will be documented here.

[1.3.2] - 2026-04-21

Changed

  • TOC Interface bumped to 120005 for WoW 12.0.5 compatibility. No behavior changes; the addon will no longer appear as out-of-date on CurseForge or trigger the "Load out-of-date AddOns" prompt in WoW. Minimum required client version remains 12.0.1 (interface 120000), so players on older clients continue to work without interruption.

[1.3.1] - 2026-04-15

Fixed

  • Main's Score now appears on guild roster and friends list tooltips. The 1.3.0 release introduced Main's Score on the standard unit tooltip via OnTooltipSetUnit, but the guild roster fallback (for offline members) and the WoW/BNet friends list tooltips had their own inline score-injection paths that only rendered the primary "DelveIO Score" line. All three paths now look up DelveIO_MAINS and render the Main's Score line consistently with the unit tooltip.

Changed

  • "Main's Score" label color updated from grey (#888888) to white (#ffffff). White creates a clear visual hierarchy against the gold DelveIO Score label above it. Applied everywhere the Main's Score line can appear: unit tooltips, InjectScore-driven surfaces (LFG, /who, communities, context menus), guild roster, and friends list.

Added

  • Login message now shows your current character's score. After logging in, the chat frame displays your score if the character is in the database, or a reminder to sync if it is not yet tracked.

[1.3.0] - 2026-04-11

Added

  • Main character score on alt tooltips. When hovering over a player whose account has a designated main character with a higher score, the tooltip now shows a "Main's Score" line below the regular score. This helps group leaders evaluate alt characters whose scores may not fully reflect the player's experience.
  • DelveIO_MAINS lookup table. The nightly database export now includes a separate DelveIO_MAINS table mapping alt character keys to their main's score. Old addon versions ignore this table (undefined global = nil in Lua), so the change is fully backwards compatible.
  • DelveIO.Data.GetMainScore(name, realm) function. Uses the same two-tier key lookup (exact match, then CamelCase split) as GetScore, but reads from the DelveIO_MAINS table.

Changed

  • Hidden characters excluded from the addon database. Players who mark characters as hidden on the website are no longer included in the nightly DelveIO_DB export. Their scores will not appear in tooltips.
  • InjectScore now includes main score injection. All tooltip surfaces that use the shared InjectScore utility (friends list, LFG, communities, /who, context menus) automatically show the main's score line without per-module changes.
  • OnTooltipSetUnit updated for main score. The unit tooltip hook (world mouseover, party/raid frames) now also shows the main's score line.

[1.2.4] - 2026-04-05

Added

  • Minimap button via LibDBIcon. A minimap button now appears using LibDataBroker + LibDBIcon. Left-click shows commands, right-click toggles tooltip display. Hover shows addon version and database count. Libraries (LibStub, CallbackHandler-1.0, LibDataBroker-1.1, LibDBIcon-1.0) are embedded in the addon. Compatible with MinimapButtonButton and other minimap button managers.

Changed

  • Startup no longer iterates the entire database to count entries. The nightly export now emits a pre-computed DelveIO_DB_COUNT global, replacing the O(n) pairs() loop that previously ran on every login. This eliminates a blocking operation over 269k entries. A fallback counting loop is retained for DB files that predate this change.
  • CamelCase realm name splitting now handles digit-to-uppercase boundaries. Added a (%d)(%u) pattern to the realm normalizer, completing coverage of all CamelCase boundary types (lowercase-to-uppercase, letter-to-digit, digit-to-uppercase).

Fixed

  • Added missing pcall guard on C_BattleNet.GetFriendAccountInfo in the friends list tooltip path. The call in getFriendInfoFromButton() was unguarded, inconsistent with the same call in refreshBNetCache() which uses pcall. Both paths are now consistent.

Removed

  • Unused SetOwnerSafely utility function. Defined but never called anywhere in the addon.

[1.2.3] - 2026-04-03

Changed

  • Score colors now use power curve normalization to match the website. Previously, scores were colored using linear normalization against the highest score, which compressed most players into the green/white range because a few outlier top scores skewed the scale. The new power curve (exponent 0.6) spreads colors more evenly across the actual score distribution. A player at 43% of the max score previously appeared green; they now appear blue/purple.

[1.2.2] - 2026-04-03

Added

  • Copy DelveIO URL now has its own section The new right-click context menus ("Copy DelveIO URL") for same-faction, opposing-faction, party, raid, guild, friends, and communities members.

[1.2.1] - 2026-04-02

Fixed

  • "Copy DelveIO URL" not appearing on other players' right-click menus. The menu tags were wrong: the code used MENU_UNIT_OTHER_PLAYER and MENU_UNIT_FRIEND_PLAYER, which do not exist in WoW's Menu system. The correct tags are MENU_UNIT_PLAYER (same-faction players), MENU_UNIT_ENEMY_PLAYER (opposing-faction players), and MENU_UNIT_FRIEND (friends list). The button now appears on all player right-click menus.

  • "Copy DelveIO URL" not resolving the player name for non-nearby players. The code extracted the player name from the unit token (contextData.unit), which is often nil for players who are not nearby or targetable. Midnight's Menu API provides contextData.name and contextData.server directly, which are now used as the primary source with the unit token as a fallback.

  • "Copy DelveIO URL" only appeared if the player had a score in the database. The button now appears for any identifiable player regardless of whether they have a score. The URL goes to the website, which can display a profile page for anyone.

  • "Copy DelveIO URL" pointed to a 404 page. The URL path was /player/us/realm/name but the correct path is /profile/realm/name.

Added

  • Context menu coverage for opposing-faction players (MENU_UNIT_ENEMY_PLAYER) and communities members (MENU_UNIT_COMMUNITIES_GUILD_MEMBER, MENU_UNIT_COMMUNITIES_WOW_MEMBER).

[1.2.0] - 2026-04-02

Fixed

  • LFG Search Panel not showing scores in Dungeons & Raids (and all other categories). The previous version hooked LFGListUtil_SetSearchEntryTooltip, a global Blizzard function that Midnight's 12.0.0 API overhaul removed. The hook's nil guard caused it to silently skip, so scores never appeared in any Premade Groups tab. The search panel now hooks LFGListFrame.SearchPanel.ScrollBox directly, reading each button's resultID on hover to look up the group leader. This matches how RaiderIO handles the same panel on their current develop branch.

  • Lua error: hooksecurefunc(): OnEnter is not a function. DelveIO.HookScrollBox called hooksecurefunc(frame, "OnEnter", ...) on all ScrollBox children, but most frames store their OnEnter handler via :SetScript() in the C widget layer, not as a Lua table key. hooksecurefunc requires a table key. The function now checks which style the frame uses and calls frame:HookScript("OnEnter", ...) for script-based handlers or hooksecurefunc for mixin-based ones.

  • Lua error in delves/instances: attempt to index a secret string value (tainted by 'DelveIO'). Midnight 12.0 introduced "secret values," opaque wrappers around strings and numbers returned by secure Blizzard APIs during instanced content. Addon code cannot index, compare, or do string operations on them. GetText() on tooltip lines, GetUnit(), UnitFullName(), and C_LFGList APIs all return secrets in certain contexts. Every file now guards against secrets using the issecretvalue() global before attempting any string operations.

  • LFG Application Viewer: non-leaders can now hover applicants to see scores. The UnempoweredCover overlay that Blizzard places over the applicant list for non-leaders is now bypassed. This matches RaiderIO's behavior.

Added

  • DelveIO.IsSecretValue(value) utility. A shared wrapper around Midnight's issecretvalue() global, available to all modules. Falls back to returning false on older clients where the global does not exist.

Changed

  • DelveIO.InjectScore now rejects secret name/realm values before attempting any database lookup, preventing errors from propagating into the shared injection path.
  • C_BattleNet.GetFriendAccountInfo calls in social.lua are now wrapped in pcall.
  • C_FriendList.GetWhoInfo calls in who.lua are now wrapped in pcall.

[1.1.0] - 2026-04-02

Added

  • LFG Group Finder + Delve Finder: Scores now appear when hovering over group listings in the Premade Groups search panel, including the Delve Finder. Implemented via hooksecurefunc("LFGListUtil_SetSearchEntryTooltip"), which covers all premade group categories (Delves, Dungeons, Raids, Custom) in a single hook. The leader's DelveIO score appears at the bottom of the listing tooltip.
  • LFG Application Viewer: Scores appear when hovering over applicants to your group.
  • Friends list (including BattleTag friends): Scores now appear when hovering over friends in the Contacts panel. BattleTag friends are resolved via C_BattleNet.GetFriendAccountInfo using the button's .id and .buttonType fields. The score tooltip is anchored below Blizzard's FriendsTooltip frame and coexists cleanly with RaiderIO: it appends below RaiderIO's content rather than overwriting it. Modifier keys (Shift/Ctrl) that trigger RaiderIO to rebuild its tooltip no longer cause the DelveIO score to disappear.
  • Communities + ClubFinder: Scores appear when hovering over members in the Communities frame member list and in the ClubFinder guild recruitment browser.
  • BNet cache: A cache maps BTag display names to DB keys, built from C_BattleNet.GetFriendAccountInfo and refreshed on BN_FRIEND_INFO_CHANGED and BN_FRIEND_LIST_SIZE_CHANGED events.

Fixed

  • Realm names with spaces not matching database keys. UnitFullName() returns cross-realm realms in CamelCase with spaces stripped ("GrizzlyHills", "Area52"). The database uses hyphenated slugs ("grizzly-hills", "area-52"). The lookup now uses a two-attempt strategy: try the realm as-is first (which correctly handles apostrophe realms like Kel'Thuzad where "kelthuzad" is the slug), then retry with CamelCase and letter/digit boundary splitting. This covers all known realm name formats.
  • Party and raid frame tooltips now use GetNormalizedRealmName() as the realm fallback instead of GetRealmName(), improving accuracy for cross-realm group members.
  • Duplicate score lines no longer appear when multiple tooltip hooks fire for the same player. A line scan prevents injection if "DelveIO" already exists in the tooltip.
  • RaiderIO compatibility: The friends list tooltip no longer overwrites RaiderIO's content. DelveIO detects if GameTooltip is already owned by FriendsTooltip and appends rather than calling SetOwner (which would clear RaiderIO's lines).

[1.0.9] - 2026-04-01

Fixed

  • Critical: Addon loaded with 0 scores in database after April 1st nightly sync. The nightly sync added enough records to push the database past Lua 5.1's hard limit of 262,144 constants per compiled function. At that point the entire database file failed to compile, leaving DelveIO_DB undefined and causing the addon to report 0 scores for every player. The database export now splits records across multiple loader functions (50,000 entries each), each with its own constant pool. The global DelveIO_DB table is populated correctly on load and no Lua errors occur.

  • Critical: Character names containing the letter 'n' were corrupted in the database. A regex in the export script used the character class ["\\n\r\0], which inside a regex literal matches a literal backslash and a literal 'n' rather than a newline character. This caused every 'n' to be stripped from all exported names (e.g., "Feministx" became "Femiistx"), making score lookups fail silently for any player whose name contained an 'n'. The regex has been corrected to ["\\\n\r\0], which properly matches a backslash and a newline without affecting the letter 'n'.

[1.0.8] - 2026-03-30

Changed

  • Reworked GitHub Actions workflows to prevent duplicate CurseForge uploads when tagging a version release
  • Non-addon file changes (README, docs) no longer trigger CurseForge uploads
  • CurseForge changelog now shows the full cumulative changelog instead of a static message
  • Added Slack integration for workflow jobs

[1.0.7] - 2026-03-27

Fixed

  • Tooltip no longer spams chat errors when hovering over enemy players in PvP contexts (arena, battleground). WoW Midnight protects certain unit tokens from addon access; the tooltip hook now silently skips those cases instead of printing a taint error for each one.

[1.0.6] - 2026-03-27

Added

  • The Darkway is now fully tracked. Clears count toward breadth bonus (50 pts) and volume bonus. The nightly database update will include The Darkway scores starting with the next sync.

[1.0.5] - 2026-03-27

Fixed

  • Renamed addon source folder from delveio-addon to DelveIO to match the .toc filename and WoW AddOns folder requirement. Users no longer need to manually rename the folder after extracting the zip.
  • Release workflow now packages as DelveIO.zip with DelveIO/ at the root, so extraction places the folder correctly without any manual steps.

[1.0.4] - 2026-03-26

  • Updates to error handling, min DelveIO score, min interface version, and added README.

[1.0.3] - 2026-03-26

  • Add changelog text to github workflow to be displayed on curseforge.

[1.0.2] - 2026-03-25

Added

  • WoW version compatibility check. DelveIO will gracefully disable itself with a message if loaded on a version below Midnight (12.0.0 / interface 120000)

Changed

  • Removed leftover showLabel default setting from saved variables

[1.0.1] - 2026-03-25

Changed

  • Removed score labels (Common, Uncommon, Rare, Epic, Legendary) from tooltips and slash commands. Score color is now used exclusively to indicate score tier.
  • Updated file paths in .toc from backslashes to forward slashes for cross-platform compatibility

Fixed

  • Slash command /delveio test no longer displays score label alongside score

[1.0.0] - 2026-03-22

Added

  • Initial release
  • Displays DelveIO scores in player tooltips when hovering over other players
  • Score color coding by tier: gray (0-499), green (500-999), blue (1000-1499), purple (1500-1999), orange (2000+)
  • Slash commands: /delveio or /dio
    • toggle - show/hide scores in tooltips
    • min <number> - only show scores above a minimum value
    • test - look up your own score
    • version - display current addon version
  • Nightly database updates via automated export from the DelveIO website
  • Saved settings persist between sessions via DelveIO_Settings