# 🎯 Key Changes

## 📢 Summary

**1.9.x**: Massive stability and performance pass. Pre-release for 2.x with a new, highly refined approach.

**1.8.x**: Things are spicing up with M+ leaver detection and low performer detection! 

**1.7.x**: Hazardous Pull reporting? Neglected Heals reporting? Yes please! Oh, and more replacement tags, revamped reports config, new off-heals report, etc!

## 🩹 Patches

- **1.9.5**: Fix for non-ElvUI users who leverage Details! for item level retrieval.
- **1.9.4**: More minor bugfixes.
- **1.9.3**: Bugfix for the UI panel, dungeon relog caching logic, and use without Details.
- **1.9.2**: Hardening and optimization pass. Overview:
   - Guild roster sync with a timer and chunking to ensure things are smooth.
   - Removed the replacement logic from the controller bootstrapping logic. Now replacement logic is bootstrapped per loading screen. Huge optimization gain there!
   - Added replacements and operators for group lead.
   - All replacement text example logic is in the dynamic API / replacement blocks. Example text is much cleaner and easier to maintain now.
   - Allow setting preferred marker for affix marking.
   - Guild login / logout events.
   - New triggers:
      - Begin spellcast
      - Aura applied (includes dose)
      - Damage taken
      - Avoidable damage taken
   - Group member item level hardening. Persistent attempts at syncing. Details API in addition to ElvUI API.
   - New sources!
      - Boss
      - Affix mob
      - Any mob
      - These new sources are available on any unit triggers (spellcast, begin spellcast, aura applied)
   - Data caching for dungeons and groups. Persists data through interface reloads / relogs, and will attempt to restore cached data when possible. Not foolproof, but definitely a step in the right direction.
   - Bugfixes and general optimizations.

- **1.9.1**: Bug fix for non ElvUI users.

## ⭐ Latest Versions

### 1.9.0

- New UI with stats and the ability to report as desired.
   - This is a preview of 2.x functionality.
- New trackers:
   - Crowd control
   - Defensives
   - Dispells
- New replacements, events, conditions, etc.
- Performance tracking which will attempt to rank players within the group based on:
   - DPS (for DPS only)
      - Tracks when a DPS is lower than tank and/or healer DPS
      - Tracks when a DPS is significantly lower / higher than others in the group
   - Affixes
      - Attempts to understand which classes / specs should be exempt 
      - Scoring based on handling affixes (CCing souls counts, for example)
   - Avoidable Damage
   - Crowd Control
   - Deaths
   - Usage of defensive abilities
   - Dispells
   - Interrupts
   - Offheals
   - Butt pulls
   - And more!
- Overperformer and underperformer tracking
   - Stored in permanent DB
   - DB synchronization with other players
   - Reporting for when someone joins who was marked as either over/under performing recently
   - Based on scoring of all of the above metrics
   - Smart scoring -- for example, a Resto Druid will not be negatively scored for a lack of **interrupts** (yes, they can disrupt / CC)
- The same process which happens for nemeses and configured messages will now happen for bystanders:
   - All bystanders will be checked for matching conditions
   - The most optimal message will be chosen based on all criteria
   - This allows one to set hyper-specific criteria, and know that if someone ever meets that criteria, the message will be used
- Mountains of fixes and optimizations

### 1.8.0

- Nemesis prioritization for scenarios where more than one message is retrieved for an event.
- Beta features: hardening and optimization -- they're very close to full release state!
- Enable / disable messages for APIs.
- M+ early leaver storage and sync
   - Leavers will now be logged in a persistent DB.
   - Leavers will be synced between players in-game.
- M+ low performers storage and sync
   - Low performers will now be logged in a persistent DB.
   - Low performers will be synced between players in-game.
   - Low performers are currently defined as:
      - At least 2 spots in the bottom (bottom affixes / DPS (non-DPS exempt) / offheals, most pulls (tank exempt) / deaths / avoidable damage).
         - Deaths are taken fairly lightly, as that can be due to any number of reasons. Deaths are primarily examined base on how much avoidable damage was taken.
      - Within those spots on the bottom, there must be a difference of >= 30% between them and the top for said metric.
- Fix for dungeon keystone level.
- Lots of new stuff behind the scenes, paving the way for some really awesome future features!

### 1.7.0

- New `Flag Guildmates as Nemeses` option
- Two new conditions, `is guildmate` and `NOT guildmate`
- More enhancements across the configuration screen
- New Off-Heals reports
- New dungeon completion Deaths report
   - Includes the amount of avoidable damage they took throughout the dungeon
   - If the amount of avoidable damage taken is excessive, the report will also include an amount relative to their life ("*6.25M avoidable damage (10.88x their max health)*") 😈
- Report channel selection in configuration
- Revamped all segments, normalized all data, and exposed a few more replacements in the process
- **(Beta) pull reporting**: This feature will announce seemingly unintentional / hazardous pulls
   - Tanks are not included
   - This is not precise as Blizzard does not expose great ways of doing this
   - It currently only reports in real-time, and as a yell
   - More options to come as this feature matures
- **(Beta) neglected heals reporting**: This feature will announce when (non-healer) players have been at or below 60% health without receiving a (non-self) heal
   - This feature also only reports in real-time, and as a yell
   - Once again, more options to come as this feature matures
- **(Beta) affix tracking and reporting**: This feature contains both announcements and reports:
   - Announce when affix mobs begin casting (if enabled)
   - Announce when affix mobs successfully cast (if enabled)
   - Announce when affix mobs are interrupted **but not incapacitated/dead** (if enabled)
   - Top and bottom affixes handled reporting for boss fights and end of dungeon (if enabled)