EpicDamageMeter v.2.35.1
What's new
EpicDamageMeter - Changelog
============================
Version 2.35.1
--------------
Fixed: Three Faults Around The Bar Icon
Turning "Show Icon" off left a hole instead of giving the space back. The
texture was hidden but kept its full width, and both the rank number and
the name are anchored to the icon's right edge -- so every row stayed
indented by the width of an icon that was not there. Hiding it now
collapses it to a point, which is what the "None" icon shape already did.
The round icon shape draws a ring, and the ring is a separate texture
that does not follow the icon. Two ways to leave it stranded: switch the
shape from Round to None, or turn the icon off while Round was selected.
Either way the ring stayed on screen, circling nothing. It now hides with
the icon.
The condition deciding whether the icon is visible was also written out
twice, once for sizing and once for text anchoring. They agreed, but only
by luck -- the second one is now the first one, so they cannot drift.
None of this changes anything while icons are switched on, which is the
default.
Version 2.35.0
--------------
Changed: A Calmer Settings Panel
Four changes, all in the same direction: fewer things competing for your
eye, so the settings themselves are what you notice.
One accent colour instead of three. The panel used blue for headers and
buttons, salmon for every slider handle and value, and green for toggles
-- three signal colours of equal weight, none of them leading. Handles
and values now use the panel's own accent, and green is left to mean one
thing only: this switch is on. The Arena theme is unchanged; its handle
was already its own purple.
Section headers no longer shout. Each one carried a background, a
gradient, a border and three separate accent stripes -- top, bottom and
left -- which together drew a bright frame around the label. The label
was louder than the settings underneath it. Only the left marker remains,
and the header text has lost the outline that gave it a black halo at
this size. The Arena theme keeps the framed look, which is the point of
that theme.
Colour swatches are actually visible. A near-black colour on a near-black
panel showed nothing at all, and neither did a transparent one -- you
could not tell what colour a row held or that the square was a button.
There is now a light plate behind each swatch, so dark colours read as
dark and a low opacity reads as pale, plus a border you can see.
The tagline reads as a subtitle again. White outlined text centred over
the content is banner styling; it now sits quietly under the title where
it belongs.
Nothing moved and nothing was removed -- every setting is where it was.
Version 2.34.2
--------------
Fixed: Broken Sentence When A Report Has Nothing To Send
Reporting an empty segment printed a line built by gluing three pieces
together: the word "No", the mode name, and "data to report". In German
that came out as "Nein damage Daten zum Melden" -- the wrong "No", an
untranslated mode, and a word order no language but English can use.
Three separate faults behind one line:
The wrong "No" was a duplicate key. Two different translations were
defined for it, "Keine" for "none of something" and "Nein" for the yes/no
answer. Lua keeps only the last assignment and drops the earlier one
silently, so the yes/no answer won and the other translation sat in the
file doing nothing. Five of six languages were affected.
The mode was never translated at all -- the raw internal word went
straight into the sentence.
And gluing words in a fixed order only ever works for English.
There is now one format string per language, with the mode name as a
placeholder each language can put where it belongs, and the mode itself
is translated.
Also cleaned up: seven more keys that were defined twice with identical
values. Nothing rendered differently for those, but the next person to
correct one of them would have corrected the copy that Lua discards.
The locale check now fails on any key assigned twice, which is what
would have caught this in the first place.
Version 2.34.1
--------------
Removed: The "Quick Player Info Detection" Switch
It was one of the parked switches the Broadcaster Tools tab openly lists
as not doing anything yet. What it was going to do was speed up the
player-info lookups that 2.34.0 removed, so it can no longer be built at
all -- it was a promise about a feature that no longer exists.
The switch, its saved value and its entry in the "coming soon" list are
gone. The other parked switches are untouched and still listed.
Version 2.34.0
--------------
Removed: Item Level And Mythic+ Score
Both columns are gone, along with everything behind them. They caused
three separate user-visible bugs in four releases -- blank columns almost
everywhere, an empty inspect window, and red error spam in groups -- and
what they delivered when they did work was two numbers you can read off
any inspect or armory page.
Removing them takes out more than the columns:
- the two settings switches and their saved values
- the item level and M+ entries in the bar tooltip
- the GUID pool, the group scan and the inspect observer
- the "/edm pi" diagnostic, which existed only to debug this
- the data-sharing library this was built on, and the two comms
libraries that were only ever added to support it
That is about 90 KB less to ship and one entire subsystem fewer to go
wrong. Nothing else changes: the bars, the columns that remain (total,
DPS, percent), the tooltip, the combat notice and every display mode are
untouched.
If you had turned either column off, nothing changes for you. If you had
them on, the remaining columns take the freed width.
The release checks keep the two guards from 2.33.1, which fail the build
if anything ever starts or clears an inspect again. The code they guard
is gone, but the mistake is the kind worth making impossible rather than
merely absent.
Version 2.33.1
--------------
Fixed: Inspecting Players Showed No Gear, And "Unknown Error" Spam In Groups
Both were caused by the group scan added one version earlier, and both
are gone. If you updated to 2.33.0, update again.
That scan started inspects of its own on a timer and cleared each one
after reading it. Clearing is what emptied the inspect window: the data
arrived, this addon took it and threw it away, and the panel you had open
had nothing left to show. Starting inspects is what produced the red
spam: the client allows one at a time and throttles hard, so every
attempt collided with your own inspects and with everyone else's.
Both were mistakes on our side and neither was necessary. The reference
meter does not start inspects and does not clear them -- its own call to
start one is commented out and it never clears at all. It only watches
for inspects that you or another addon begin, and reads the result when
it lands. That is what this does now: it observes, it never acts. Nothing
can collide with it, and nothing gets taken away from you.
The practical difference: item level for other players now fills in when
someone gets inspected rather than on a timer. In a dungeon or raid that
happens on its own soon enough. Your own row is unaffected -- it never
used inspection at all -- and so is everything the data-sharing library
provides.
The release checks now also verify that neither call has come back. Until
now they could only check that something was still present, which cannot
express a fix whose whole substance is that a call is absent.
Version 2.33.0
--------------
Fixed: Item Level And M+ Score Were Missing Almost Everywhere
The arena fix in 2.32.2 was real but it only addressed one of two causes,
and the smaller one. The larger one: all of this data came from a single
library that works by having addons talk to each other, so it only ever
knew about players who were running that same library. In a random
dungeon, a pug raid or out in the world that is nobody, and the columns
stayed empty even though nothing was hidden and the meter was otherwise
working perfectly.
There are now three sources feeding one pool instead of one.
Your own row no longer depends on any of this. Item level, specialisation
and rating are read straight from the client, which needs no group and no
one else's cooperation. Alone in the world the only row on screen was the
one row that could never be filled, which is a good description of how
this looked in practice.
Everyone else in your group is now inspected directly, the way the
reference meter has always done it, which works regardless of what addons
they run. The rules are the reference's as well: never during combat,
never further away than the range at which you could compare achievements
with someone, one player at a time because the client throttles this
hard, and an answer stays good for an hour.
The library remains as the third source. It is still the only one that
can deliver anything mid-fight, so it earns its place.
The three no longer overwrite each other either. Each writes only the
fields it actually found, so a rating from the library and an item level
from an inspect now survive side by side instead of the later one wiping
the earlier one.
Unchanged limit: enemy players in an arena still show nothing. You cannot
inspect the other team and they do not send you anything.
Version 2.32.2
--------------
Fixed: No Item Level And No M+ Score In Arenas
Both were looked up by player name, and in an arena the client hands out
names as protected values that an addon is not allowed to inspect. The
lookup could not even be attempted, so the two columns and the tooltip
line stayed blank for the whole match.
They are now looked up by GUID first, out of a pool that is filled while
names are readable -- when the group changes, on zone-in, and every time
combat drops -- and only read while they are not. A GUID stays a plain
string when a name does not, so the read keeps working mid-fight. The
name lookup is still there as a fallback for everything outside combat.
This is the same approach the reference meter uses for its own item
level cache, and it does not only help in arenas: item level and rating
now also survive raid and dungeon pulls, where they used to disappear
the moment the pull started and come back only afterwards.
Two honest limits. Enemy players in an arena still show nothing, because
this data only ever travels between players in the same group -- the
opposing team never sends it. And a team mate whose GUID is protected
during a fight resolves only once combat ends; your own row always
works, because your own GUID is never hidden from you.
Also fixed: "/edm pi" itself crashed in an arena. It used player names as
table keys, which is exactly what protected values forbid, so the one
diagnostic built for this problem broke in the one place it was needed.
It now reports the GUID pool as well, which answers the question the name
list could not: whether the bars can actually reach the data.
Version 2.32.1
--------------
Change: Twelve Unused Libraries Removed, One Missing One Added
The addon shipped fourteen library folders it never touched. Three of
them were even being loaded at startup for nothing: a widget toolkit
that was never asked for a single widget, its config-dialog stack, whose
only job was registering an options table with no entries in it, and a
hooking library that was listed as a dependency but never hooked
anything. The rest were not loaded at all and simply travelled along.
That is roughly 590 KB of dead weight gone, and five fewer files to
parse on every login.
Going the other way: the player-info library looks for a comms library
at startup and falls back to sending raw addon messages when it cannot
find one. That library was sitting in the folder unloaded, so the
fallback was always what ran — and the fallback does not split messages
that exceed the game's per-message limit. It is now loaded ahead of the
player-info library, which is where it belongs, so item level and rating
for other players should survive a full raid group.
Nothing was removed that anything still refers to; the settings panel,
the minimap button, saved profiles and the slash commands are unchanged.
Version 2.32.0
--------------
New: Item Level And M+ Score Can Be Turned Off Separately
One switch used to cover both, so hiding the M+ score also cost you the
item level. They are two independent switches now, and both columns
still hide together if you had the old switch turned off, so an existing
profile keeps the look it had.
On Classic, TBC, Mists and Wrath the M+ switch is not shown at all
rather than sitting there doing nothing: Mythic+ does not exist on those
clients, so the column and the tooltip line are gone with it and the
remaining columns take the freed width.
Version 2.31.3
--------------
Change: The Combat Notice Is Now Actually Noticeable
It was rendering, but as a dim grey caption a point smaller than the
rows beneath it — easy to miss, which defeats the point of a line whose
job is to tell you the numbers under it are incomplete.
It is now amber, at full row size, with an outline so it holds up
against a bright background. The colour is applied to that line only, so
the neutral subheaders ("2.4M total damage taken", "18 total casts")
keep their quiet grey and do not start shouting.
The amber matches what the no-data tooltip and the fallback tooltip
already use, so every "combat is limiting this" message in the addon now
looks the same.
The title block grew by four pixels to fit the larger line; header,
notice and column labels were checked against each other and still clear
by a couple of pixels.
Version 2.31.2
--------------
Fix: No Bar Tooltip At All During Combat
Not the notice missing from the tooltip — the tooltip itself never
appeared while in combat, which is why the notice could never be seen.
In combat the name is read back from the bar's FontString, and that
returns a SecretValue string. The very next line built the tooltip
header by concatenating it. Concatenating a secret raises, on the first
line that touches the name, before anything is drawn. Every branch below
it — spells, targets, the combat notice — was unreachable.
The header is built with string.format now, which handles those strings
where `..` cannot. A second concatenation onto the same header, for the
item level, had the same fault and is fixed with it.
Two guards so this cannot silently return:
- The tooltip call was unguarded, so a failure meant no tooltip and no
clue. Failures now fall back to the player's name plus the combat
notice, and are recorded in the error log where /edm diag shows them.
- The invariants check gained both the string.format header and that
fallback, alongside the four entries already pinning the notice —
twenty-three in total.
Version 2.31.1
--------------
Combat Notice: Chain Verified And Pinned
Reported missing again. This time it was not removed — the whole chain
is present and reachable: the string, the line that sets it while
InCombatLockdown is true, the call that passes it, the FontString it is
drawn into, and the line that draws it. All four were checked.
What was missing was any guarantee it stays that way, and one plausible
reason it might not appear: the FontString was never explicitly shown,
so anything that hid it would look exactly like the text never being
set. It is now shown explicitly whenever there is a notice to display,
and hidden when there is not.
All four links are now pinned by the invariants check, which grew from
18 entries to 21. Removing any one of them fails the build. That was
verified by deleting the drawing line on purpose and confirming the
check caught it.
If the notice still does not appear, the tooltip is not reaching that
branch, and the useful signal is whether the player's NAME shows at the
top of it: name present but no notice means the combat check was false;
neither present means the header block is not drawing at all.
Version 2.31.0
--------------
Change: Stop Reporting Zeros For Things This Client Cannot Measure
The spell detail panel showed "Hits: 0", "Crits: 0 (0.0%)", "Max Hit: 0"
and a row of dashes for the averages and ranges. None of that is a
measurement. Hit counts, crit counts, per-hit averages, min/max ranges
and cast counts all come from the combat log, and addons have none on
12.0 — the meter API gives a spell its total, its rate, an overkill
figure and two flags, and nothing else.
A zero says "we counted none". A dash says "we saw none". Both are
wrong; the truth is that the client does not report it. Those rows are
now removed on clients without a combat log, replaced by one line
saying it is not measurable there. Total and per-second stay, because
those are real.
The same applies to the small spell tooltip, which ended at Hits, Crits
and Average — it now stops after DPS with the same note.
Classic, TBC, Mists and Wrath are unaffected: they have a combat log,
so every one of those fields is a genuine measurement and still shown.
Version 2.30.3
--------------
Fix: Restored The Tooltip Header, Which A Later Refactor Had Deleted
The actor name and the combat-restriction notice were built in 2.27.0
and 2.29.0 and were gone again. Not disabled — removed: the header
constant, both header strings and every layout offset that made room for
them had reverted to the pre-2.27.0 state, so the tooltip opened
straight into the column labels. That is why the notice "disappeared
again" and why hovering showed no name.
All of it is back, and there is now a check that fails the build if any
previously shipped fix goes missing. It carries eighteen entries so far —
the combat-log gate, the one-shot combat close, the GUID resolution, the
target row limit, the arena reset guard, the tooltip header, and the
rest. A refactor that drops one of them now fails loudly instead of
quietly handing the same bug back to whoever reported it.
Revert: The Percent Column Does Not Work During Combat, And Cannot
2.30.2 claimed to fix this by resolving the secret values instead of
skipping them. It did not work — the column stayed empty — and the only
effect was a byte-by-byte rebuild per player per tick that produced
nothing. That has been taken back out.
These values are genuinely unreadable while a fight is running, which is
also why the item level cannot be looked up for a name that is itself
secret. The correct answer is the notice in the tooltip saying so, which
is exactly what the deletion above had removed. Item level and the full
name still appear during combat wherever the name is readable — that
part of 2.30.2 was right and stays.
Version 2.30.2
--------------
Fix: Columns Only Filled In After The Fight
Item level, the percentage and the full name were all missing during
combat and appeared once it ended. Three places, one mistaken
assumption: they were gated on isSecret, which describes whether the
DAMAGE VALUES are secret. On this client they are secret for the entire
duration of a fight, so anything behind that gate was hidden exactly
when you were looking at it.
Item level is looked up by name and has nothing to do with the damage
numbers. It now depends only on whether the name itself is readable.
The name had the same gate, which pushed every readable name through the
fallback path for the whole fight — losing the nickname lookup and the
class colour with it. Same correction.
The percentage genuinely needed plain numbers, and the code gave up when
it could not have them. But ResolveNumber rebuilds a secret into a plain
number, and the totals on those same bars already go through it on every
tick, so refusing here bought nothing. Both the per-bar value and the
session total are resolved now, and the column is populated during the
fight rather than after it.
Version 2.30.1
--------------
Fix: Bars Showed No Values After The Column Change
The columns were created but never anchored. A FontString without a
SetPoint renders nowhere, so every value on every bar was invisible while
the header above them looked correct.
The layout call lived only in ApplySettings, and bars do not go through
it: GetBar hands out pooled bars directly. The retired single value
string had been anchored inside the bar constructor for exactly this
reason, and the columns needed the same treatment. They are now anchored
where they are created, and ApplySettings re-lays them out afterwards
with the configured font.
The name's right edge had the same problem — it was still anchored to
the retired value string, which would have let it run across the columns
once they appeared. It now stops at the leftmost column.
Version 2.30.0
--------------
Change: Real Columns On The Bars
The legend could never line up, because there was nothing to line up
with: everything on the right of a bar was one concatenated string
("1.9M 4.5K DPS 100.0%"), and item level sat inside the name, behind a
character name of unpredictable width. On a narrow window the two label
groups simply ran into each other.
The right side of a bar is now five separate fixed-width, right-aligned
columns — item level, Mythic+, total, rate, percent — laid out in a
right-to-left chain from the edge. The name is told to stop at the
leftmost column instead of negotiating with a string that could grow.
Overlap is now impossible by construction rather than by estimate.
The header is built from the same column list, at the same widths, in
the same chain, so a label cannot end up over the wrong column. Both
take the bar font, flags and size, with the header one point down so it
reads as a label. Column widths scale with the value font size, so a
larger font widens the columns instead of spilling into the neighbour.
Columns switch off with the settings they belong to: turn off the total,
the percentage or the item level and both the column and its label
disappear, and the remaining ones close the gap. The rate column follows
the mode and reads HPS in a healing view.
Item level and Mythic+ moved out of the name and into their own columns.
That is what makes them alignable at all, and it is why the bare "264"
next to a name is gone. Both sit a shade dimmer than the damage numbers,
which are what the window is for.
Version 2.29.3
--------------
Fix: The Legend Row Did Not Match The Bars It Labels
Three separate mismatches, all from the row being built with fixed
values instead of the ones the bars actually use.
Font: it used the default game font at a fixed size 9, while the bars use
whatever font and size are configured. It now takes the bar font, flags
and size, two points smaller so it reads as a label rather than another
row, and the row height follows that size.
Position: "Player" sat at the window edge while a bar's name starts after
the icon and the rank number. That offset depends on the icon size, the
rank width and the active skin, so rather than recomputing arithmetic
that would drift from the real layout, the row now measures a rendered
bar and places itself at the same offset. The right-hand group is pinned
to the same edge distance the value text uses.
Ordering: the legend was refreshed before the bars were drawn, so on the
very first frame there was no bar to measure. It now runs after them.
Item level and Mythic+ cannot be column-aligned — they follow a
variable-width name — so they stay a reading order after "Player" rather
than pretending to be columns.
Version 2.29.2
--------------
Fix: Main Window File Aborted At Load
"attempt to call a nil value" at Core_Retail.lua:487 — the line calling
UI:Initialize. EDM.UI existed but had no Initialize, which meant
MainFrame.lua had stopped executing partway through.
The legend function added in 2.29.1 was placed near the top of the file,
251 lines above `local Instance = {}`. At that point Instance is a nil
global, so defining a method on it raised at load and every definition
below it — the entire main window — was lost. What made this hard to
recognise from the report is that the visible error surfaced through
another addon's AceAddon: with the libraries now sharing standard names,
whichever copy loads first drives everyone's OnEnable, so the trace
pointed at BigDebuffs.
The same misplacement affected the bar-name suffix in a quieter way: it
read the cached bar settings as a global, always nil, and fell through
to the profile every time instead of using the cache. Both functions now
sit below the declarations they depend on.
Added: check_decl_order.py to the release checks. It flags a method
defined above the local table it hangs off. The file stays valid Lua, so
neither the balance check nor anything else could see this; it has now
cost two releases, once fatally.
Version 2.29.1
--------------
Fix: Bar Tooltip Raised On Secret Names, Taking The Whole Tooltip With It
41 errors from GetPlayerExtraInfo: "attempt to compare local 'name' (a
secret string value)". The nil/empty check ran `name == ""` before the
secrecy check, and comparing a secret string raises.
This is why the combat-limitation note never appeared. It was not that
the note was missing — the tooltip function threw before it could draw
anything at all, so in an arena, where names are secret, hovering a bar
produced nothing whatsoever: no spells, no targets, no note. The note
added in 2.29.0 was correct and simply never got the chance to render.
Secrecy is now checked first, in the helper itself rather than at each
call site, since both render paths reach it. The same ordering mistake
was present in the bar-name suffix and is fixed there too.
Added: A Legend Row Under The Tabs
"264" next to a name means nothing on its own. A row under the tab bar
now names what the bars show: Player, ilvl and M+ on the left, Total,
DPS/HPS and % on the right.
It is built from the active settings rather than hard-coded, so turning
off the total or the percentage removes it from the legend too, and it
follows the mode — a healing view reads HPS. Switchable under Bar
Content as "Show Column Header", on by default.
It is a legend, not a column grid: the values at the right edge are one
string, so real column alignment would hold only until someone changed
the font.
Version 2.29.0
--------------
Added: Item Level And Mythic+ Score On The Bars
They were only in the tooltip, which meant hovering every row to compare.
They now sit behind the character name in the main window, dim and
compact so the name and the number at the right edge still read first.
Item level, then the Mythic+ score when there is one.
Both render paths carry it, and the item level is part of what counts as
"the name changed" — it arrives asynchronously, so without that the bar
would keep showing the version drawn before the data landed.
Switchable under Bar Content as "Show Item Level", on by default.
Only players running the PlayerInfo library appear here; it exchanges
data between players and cannot inspect someone who is not sending. Rows
without it simply show the name, as before.
Change: The Combat Limitation Note Is Shown Whenever It Applies
The note explaining that the meter API restricts data during combat only
appeared when the spell list came back completely empty. In practice
combat usually costs you part of the data — a percentage, the target
list, the odd spell — and partial data with no explanation looks like
wrong data.
It now appears under the actor name for as long as combat lasts,
alongside whatever data is available rather than instead of it.
Version 2.28.1
--------------
Fix: Item Level Was Looked Up Under The Wrong Name
/edm pi settled it: the library was loaded and did have the data —
item level 264, spec 70 — while the bars showed nothing. Third of the
three possible causes, and the narrowest one.
Actor names in this addon are frequently server-qualified ("Name-Realm").
The PlayerInfo library keys on the bare character name. The lookup passed
the qualified name straight through and got nothing back. The diagnostic
asked with UnitName(), which returns the bare name, and therefore found
the data — which is why the two disagreed.
The lookup now tries the qualified name and then the bare one.
The diagnostic also probes with the names the bars actually carry, not
just UnitName(). Asking only the form that works is how this stayed
hidden for two releases.
Note on what will and will not appear: group members show data only if
they run the library themselves — it exchanges information between
players, it cannot inspect someone who is not sending. And the Mythic+
figure is Blizzard's season rating, blank when there is none. There is
still no PvP rating anywhere in that library.
Version 2.28.0
--------------
Fix: "Spell Data Unavailable During Combat" In Arenas
The lazy fetch that pulls a spell breakdown from the meter API on hover
was gated on the actor having a plain, non-secret GUID. In an arena that
GUID is a SecretValue, so the fetch was skipped and the tooltip fell
through to the combat-limitation message.
The GUID resolver added in 2.20.2 exists for exactly that case — it
falls back to the spec-icon cache and to UnitGUID for yourself — and it
was being called three lines below the gate that had already refused
entry. The gate now resolves first and proceeds whenever the resolver
produced something usable.
Added: /edm pi — Report What The PlayerInfo Library Is Providing
Item level and spec still not showing had three possible causes that
look identical from the outside: library not loaded, library loaded but
silent, or data present and not rendered. The 2.27.0 header fix
addressed the third. This command distinguishes the other two.
It prints whether the library is loaded, how many entries its shared data
store holds, and the item level, spec and Mythic+ score it currently has
for you and each group member. Available on every client.
Worth knowing before reading the output: the library collects this for a
GROUP and exchanges it between players running it. Alone at a training
dummy there is often nothing to report, and that is not a fault.
Version 2.27.1
--------------
Fix: Data Wiped When An Arena Closed Or A Battleground Ended
Reported: a lot of data simply gone after an arena closes or on leaving
an instance.
CheckGroupChange resets when you join a new PvE group. It only ever
looked at where you ended up, never at where you came from — and the
comment right above it says "not when leaving PvP", so the intent was
there and the check was not.
Walking out of an arena leaves you grouped in the open world. The group
type therefore goes arena -> party, which read as "joined a PvE group"
and triggered the reset the moment the arena closed. Battlegrounds did
the same on the way out. The origin is checked now, so leaving PvP no
longer counts as joining anything.
The damage was worse than a reset. On Retail that path called the full
user reset, which also deletes the fight history saved to disk — so an
arena did not just clear the current window, it threw away previous
sessions' fights as well. Automatic resets now keep the saved history;
only an explicit reset (the slash command, the settings dialog, the
minimap button) still clears everything. Classic was already calling the
narrower reset there and never had that half of the problem.
Version 2.26.1
--------------
Fix: Bar Tooltip Showed Only Three Targets And Silently Dropped The Rest
Reported from arena: hovering a bar left players out of the Targets list
with nothing to indicate they were missing.
Three separate hard-coded limits of 3, all in the tooltip's target
section: three row frames were created, the renderer drew at most three,
and the list builder truncated to three before handing the data over. In
a 3v3 you fight three players plus their pets, so half the list was
gone.
This was never arena-specific. Raids and dungeons hit the same ceiling —
it just reads as "the tooltip only ever shows three targets" there,
which is easy to mistake for intended behaviour.
The limit is now ten, in one place, and the row pool, the renderer and
the builder all read it. The tooltip grows to fit what it shows.
Not changed: the percentage on a target row is that target's share of
the damage IT took, not of your total damage. A single row reading 56%
means you did 56% of the damage that target received. That is deliberate
and matches how the reference meter computes the same column.
Version 2.26.0
--------------
Added: Item Level, Spec And Mythic+ Score In The Bar Tooltip
The PlayerInfo library now ships with the addon. It collects item level,
specialisation and the Blizzard Mythic+ season rating for everyone in the
group and shares that between players who run it, so the numbers cover
the group and not just yourself.
Hovering a bar shows them next to the name. When the library has not
heard from a player yet — the data arrives asynchronously — the line is
simply absent rather than showing zeroes.
The library deliberately has no LibStub object: it exposes plain globals
and merges its data across copies, which is how several addons can ship
it side by side without fighting over it.
One thing that was asked for and is NOT included: PvP rating. The
library does not carry it. What looks like an "RIO score" here is
Blizzard's own Mythic+ season rating, read through the game's API.
Not Added: LibGraph-2.0
Looked at it for replacing the graph window and decided against it, for
two reasons. It has no smoothing, no crosshair and no legend, all of
which the existing graph does have along with area fill and a peak
marker — swapping would have removed features, not added them. And the
reference meter no longer uses it either: it is loaded there for
backwards compatibility but not referenced by any of its code.
Housekeeping
Removed 380 KB of libraries that were present but listed in no TOC and
therefore never loaded: AceBucket, AceComm, AceDBOptions, AceLocale,
AceSerializer, AceTab, AceGUI-SFX-Widgets, HereBeDragons, LibCandyBar,
LibDropdown, plus the backup folder kept while the load failure was
being fixed.
Version 2.25.0
--------------
Fix: Addon Did Not Load At All After The Library Update
The embedded libraries were replaced with stock upstream copies. That
broke loading outright, in two independent ways, on every client.
The libraries used to be hand-modified copies renamed with an "-EDM"
suffix — their headers read "COMPLETELY ISOLATED Addon framework for
EpicDamageMeter" — and the addon asked LibStub for those exact names
without the optional-lookup flag. Stock copies register under the normal
names, so the very first line of the core file raised and nothing after
it ran.
On top of that, six of the fifteen library paths in the TOC no longer
existed: AceConfigRegistry, AceConfigCmd, AceConfigDialog and
LibSharedMedia had each moved a directory deeper in upstream packaging,
and LibDataBroker-1.1 and LibDBIcon-1.0 were not part of the new set at
all.
Rather than re-applying the rename to every updated library — which is
what broke here and would break again at the next update — the addon now
uses the standard library names:
- Every LibStub call dropped the "-EDM" suffix.
- The four moved paths were corrected in all six TOC files.
- LibDataBroker-1.1 and LibDBIcon-1.0 were restored, since the new set
does not contain them.
One long-standing bug disappears with this. NewAddon() had always asked
for the plain "AceConsole-3.0" mixin while the library registered as
"AceConsole-3.0-EDM", so RegisterChatCommand silently did nothing and a
manual slash-command fallback had been added to compensate. The names
match now, so the registration works; the fallback stays as a harmless
safety net.
Trade-off worth knowing: the addon now shares the Ace libraries with
other addons the way nearly every Ace addon does, instead of running
private copies. LibStub picks the newest version loaded.
Version 2.24.4
--------------
Fix: Window Resized Itself On Every Option Change And At Login
Reported: "Anytime I change an option or log out and log in the meter
resizes despite being locked."
Two sources of truth for one number. Dragging the resize grip saves the
size per window (SavePosition, into both the per-character store and the
profile). ApplySettings then forced profile.window.width/height onto
every window — and ApplySettings runs on EVERY option change, and again
at login. So touching any setting at all, however unrelated, snapped the
window back to the shared value, and so did logging in.
The lock genuinely had nothing to do with it, which is why it looked so
strange: `locked` only gates StartSizing on the resize grip. It has no
say over a programmatic SetWidth, so a locked window was resized just
the same.
- A window that was dragged to size now keeps that size. ApplySettings
prefers the saved per-window geometry and falls back to the shared
profile value only for windows that have none.
- The Width and Height sliders and the size presets still work, and now
write their value into each window's saved geometry as well. Without
that they would have been silently overruled by the very size they
were trying to replace.
Affects every client — this code is shared.
Scale has the same split (saved per window, applied from the profile)
but was left alone: no one has reported it, and a global scale slider is
defensible in a way a global size is not.
Version 2.24.3
--------------
Fix: Uptime Percentage Disagreed With Itself
2.24.0 made uptime a share of the fight on the bars and in the bar
tooltip, but the breakdown browser kept dividing by the actor's own
total. The same debuff therefore read one way on the bar and another way
after clicking it. The browser now follows the same rule; everything
that is not an uptime view still shows a share of the actor's total.
Version 2.24.2
--------------
Fix: Wrath TOC Was Two Builds Behind
Checked every flavor against the live interface numbers rather than
against the reference meter, which turned out to be behind here too.
- Wrath (Titan Reforged) is 3.80.2, interface 38002. The TOC declared
38001, so the addon was flagged out of date on that client and only
loaded with "Load out of date AddOns" enabled. The reference meter
still ships 38000 there, which is why comparing against it missed
this — its own bug tracker has an open Titan Reforged report.
- Retail 12.1.0 went live on 11 August 2026: 120100, as set in 2.24.1.
- Mists 50504, Classic Era and Season of Discovery 11509, TBC
Anniversary 20506 (its realms move to Phase 3 on 27 August, so that
client stays current) — all already correct, none changed.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

