# YippYapp Helper - Changelog

## v2.5.0 - Midnight-ready (2026-04-15)

### New features

- **Interrupt Tracker (BETA)** — party-wide interrupt cooldown bars.
  - Per-member bars with class-colored fill, class-colored border option,
    icon, name, and countdown/elapsed timer.
  - Tracks the player's own casts directly; attributes party interrupts
    via a time-correlation model (ExwindTools-style) that sidesteps
    Midnight's secret-value wrapping on friendly spellIDs.
  - Fully configurable: bar/icon mode, texture, dimensions, orientation,
    grow direction, anchor, multi-context visibility filters, backdrop,
    and drag-to-move with an unlock overlay.
  - Slash commands: `/yyhintlog` debug log, `/yyhintdebug` class rotation.

- **Mythic+ completion popup (BETA)** — small window on
  `CHALLENGE_MODE_COMPLETED` showing your new M+ rating, the party's new
  keystones in Mythic+ page styling, and a button that navigates the
  app frame to the M+ page. Row click casts the teleport directly via
  `InsecureActionButtonTemplate` (BigWigs-style) so it works even when
  the popup was opened from a tainted click path.

- **Utility advisor (BETA)** — on entering a Mythic+ (or Mythic) dungeon,
  shows a small window with per-class recommended utility spells for
  that dungeon plus a short description. Spell icons hover to full
  Blizzard tooltips. Gold border marks talent-dependent picks.
  Show-once guard so it doesn't spam on reloads or re-entries.

- **Raid Addon Scanner** — button in the Raid Tools header that pings
  the party/raid via addon-comm and shows a modal listing who has
  YippYappHelper installed vs not.

### Settings overhaul

- Removed the Blizzard AddOn Options integration. All settings now live
  in the addon's own Settings page (accessible via the gear button,
  `/yyhopts`, `/yyhsettings`, or `/yyhinterrupts`).
- Top-level tabs (General / Interrupt Tracker) with vertical sub-nav
  inside Interrupt Tracker for its many sections.
- Feature-row widget with inline "Preview" buttons so you can test what
  a popup looks like before enabling it in live play.
- "Show in" visibility is now a multi-select (any of: Always / In a
  group / Dungeons & raids / Mythic+ / Raid / PvP).

### Mythic+ page

- Views are now **strictly party-scoped** (5-man) regardless of whether
  you're in a raid — no more raid-member keystones polluting the grid.
- Tabs restyled to underline tabs matching the Loot Browser.
- `/yyhmplustest` slash command injects 5 fake teammates with synthetic
  keystones and scores so you can preview the full group layout solo.
- Dungeon-tile tooltips now use an O(1) mapID-indexed lookup instead of
  rescanning the keystone list per hover.

### Raid Tools

- **L'ura Runes feature removed.** Midnight locks down chat text,
  addon-comm, raid markers, and custom channels during raid encounters
  — there is no unprivileged signaling primitive left that works cross-
  realm in a raid instance.
- Ready Check performance: single-pass aura scanner (replaces 8 separate
  FindAura calls per member — ~8x fewer `GetAuraDataByIndex` calls at
  30-man), UNIT_AURA debounced to 0.5s, READY_CHECK_CONFIRM throttled
  through `QueueRefresh`, CHAT_MSG_ADDON durability updates coalesced.
- Durability broadcast staggered 0–1.5s to avoid CHAT_MSG_ADDON flood
  on ready-check in full raids.
- Durability name-key mismatch fixed (cross-realm raiders no longer
  show as "not applicable").
- Early-finish detection: window fades as soon as everyone answers,
  rather than waiting the full 30s timer.
- "Hearty" and "Well Fed" prefix patterns added to food detection.
- ReadyCheck hide delay reduced 8s → 3s after everyone answers.
- `Respond()` now fires `ConfirmReadyCheck` before any UI state touches,
  plus optimistic local status update so the row flips instantly.

### UI consistency

- AppFrame uses a darker, flatter background (0.03 on black at 0.92
  alpha) with a 1px black border.
- Every page (Gear, Raid, Progression, Loot, Consumables, M+, Teleports,
  Settings, Home) gets the same inner bordered panel — unified look.
- Settings window lives inside the AppFrame as a page; Home-dashboard
  and AppFrame header both have a "Settings" button that routes there.
- Loot Browser and Consumables headers in app-mode dropped their card
  border in favor of a single 1px bottom divider under the filter row.
- All the in-addon widgets (checkbox, slider, dropdown, tab) rebuilt
  to match the addon's dark palette — no more WoW default styling.

### Performance

- Interrupt slot OnUpdate throttled to 20 Hz and caches settings-
  derived flags on the slot.
- Interrupt events short-circuit when the feature is disabled.
- Ready Check aura scanner batches 8+ independent aura iterations into
  a single pass per member per render.
- Mythic+ RefreshMythicPlus pre-builds `membersByName` and
  `keystonesByMapID` lookups to avoid inner-loop rescans.
- Loot Browser tooltipHiddenCache is now bounded (2048-entry cap with
  wipe-on-fill).
- AppFrame uses `UISpecialFrames` only out of combat to avoid the
  `ADDON_ACTION_BLOCKED` taint we hit at combat end.

### Bug fixes

- Interrupt bar no longer snaps back when dragging to a new position
  (atomic write + manual `applyPosition` instead of listener cascade).
- Interrupt bar no longer jumps out from under the cursor when
  GROUP_ROSTER_UPDATE fires mid-drag.
- Active interrupt cooldowns now survive a rebuild — reattaching state
  from `ns.Interrupts.state` to freshly-created slots so GROUP_ROSTER
  doesn't visually reset ongoing bars.
- Interrupt attribution flash no longer hides the slot (was passing
  `showWhenDone=false` to `UIFrameFlash`).
- Loot Browser filter row shifted down in app mode to clear the inner
  panel top edge.
- Consumables header matches Loot Browser styling in app mode.
- Teleports / Progression / M+ page layouts nudged to fit the new
  inner panel without gaps or overlaps.
- All the tainted-value handlers we had to add while chasing the
  Midnight secret-value system are removed now that we've landed on
  ExwindTools' taint-free attribution model.

---

## v2.0.1 - Polish pass (2026-04-14)

### L'ura Runes
- Macros renamed from `O D G T X` to `YY_1` - `YY_5` with a blank question-mark icon. Raid leader copies the bundled symbol TGAs into `Interface\ICONS\`, restarts WoW, then manually picks each symbol from the macro icon browser's Items tab.
- Tab fully redesigned into two full-width sections (Settings & Simulation, Raid Leader Macros) with a side-by-side reference table showing each macro number, its symbol icon, and the filename.
- Macro listener now only responds to `CHAT_MSG_RAID_LEADER`, not `CHAT_MSG_RAID` - so only raid leaders / assists can drive the pentagon display.
- Removed the per-slot icon picker; bundled symbol TGAs are the only display textures.
- Description now correctly states runes fill the pentagon right-to-left in press order.

### Ready Check
- Response tracking rewritten to capture `READY_CHECK_CONFIRM` arguments directly into an internal status map (MRT-style) instead of polling `GetReadyCheckStatus`, which could be stale for a tick after the event fired.
- Blizzard's own ready-check popup is now dismissed reliably (multi-tick safety sweep).
- Footer collapses after you respond so the window shrinks up to the bottom of the roster.

### UI polish
- Main app window close button restyled to match the Ready Check / Settings header buttons.
- Buy Me a Coffee icon moved to the home dashboard bottom-right with "if you want to support" label.
- Welcome / What's New window: Unicode em-dashes and arrows replaced with ASCII (no more square glyphs on certain fonts), and bullet wrapping estimator now strips color codes so long bullets stop overlapping.
- L'ura tab reference header reworded from "Reference" to "Pick this icon for each macro:" with explicit Items-tab instruction in the guide.

### Other
- `/keys` / `/yhkeys` slash command opens the Mythic+ page directly.
- Settings panel two-way sync: toggling the in-raid-frame Release Blocker button now updates the settings checkbox immediately.
- Guild keystone cache: 1-week TTL so stale entries from players who no longer have keys age out on their own.
- Loot Browser cache no longer invalidates while the panel is closed - keeps re-opens instant.
- Deleted orphaned `GetTrinketMythInfo` / `GetTrinketMaxIlvl` helpers left over after Trinket Rankings was retired.

## v2.0.0 - Raid companion rewrite (2026-04-13)

### New features
- **L'ura Memory-Game Helper** - live rune pentagon display, macro generator (`O D G T X`), per-slot icon picker, bundled rune symbol textures, and built-in simulation for dry-runs. Works in both Heroic and Mythic with press-order rendering.
- **Ready Check Window** - opens automatically on any ready check. Shows food, flask, vantus rune, Int/AP/Vers/Stam/Haste/Move, and durability % for every raider. Collapse/expand toggle, countdown timer, Ready/Not-Ready buttons, and live refresh as buffs change mid-check.
- **Settings Panel** - full entry in Blizzard's standard Options UI. Toggle Release Blocker, Ready Check, L'ura Runes, and the minimap button. `/yhopts` opens it directly.
- **Keys tab on the group-finder window** - opens the Mythic+ page without closing the current LFG panel.

### Major improvements
- Loot Browser: class dropdown (inspect any class), horizontal-scroll icon rows, housing decor + recipe filter, mount border distinction, and login prewarm so re-opens feel instant.
- Mythic+ Guild Keystones: auto-request on login, manual Refresh button that sits cleanly next to the Vault row.
- Raid Split Balance: added melee vs ranged DPS counts for each split.
- Dashboard panels restyled with accent underlines and consistent typography. Upgrade Summary rewritten into readable "Slot - Action (reason)" lines.
- Release Blocker simplified to work in any raid zone with guild-majority detection.
- New `YippYappHelper` logo used for the minimap button and in-app header.
- Full folder reorganization: `Core/`, `Features/`, `Integrations/`, `Media/`.

### Retired
- Trinket Rankings (too expensive to keep accurate via sim).
- Raid Tools - Tier Tracker tab.
- Raid Tools - Performance tab.

## v1.4.0 — Mythic+, Teleports & More (2026-03-30)

### Mythic+ Helper (new)
- Dungeon overview with clickable teleport icons showing your best key level and score
- Group ratings grid with color-coded per-dungeon scores for all party members
- Group keystones section with dungeon icons and class colors
- Great Vault tracker with Blizzard-native tooltips — click slots to open vault
- Rating goals (2000/2500/3000) with progress bars and focus dungeons
- Guild tab for viewing guild members' keystones (shared via addon comms)
- Home/Guild tab navigation
- Accessible from dashboard, app nav, and `/yh mplus`

### Dungeon Teleports (new)
- All Hero's Path dungeon teleports from MoP through Midnight
- Organized by expansion with clickable secure buttons
- Greyed-out icons for teleports not yet unlocked
- Accessible from dashboard, app nav

### Release Spirit Blocker (new)
- Hides the Release Spirit button in current expansion guild raids
- Hold CTRL for 1 second to override — progress bar shows hold time
- Does not interfere with combat resurrections
- Toggle with `/yh release` (enabled by default)

### Loot Browser
- Instance-aware filtering: detects current dungeon/raid and shows only that instance's loot
- Slot tabs grey out when no items match the instance + stat filter combo
- Auto-enables instance filter when entering a dungeon

### Dashboard
- Upgrade summary and farm guide now auto-refresh on gear/crest changes
- Top 3 actionable recommendations sorted by priority

### Trinket Rankings
- Fixed Hunter Beast Mastery spec key mismatch in "Your Spec" mode
- Fixed Rogue Assassination mapped to Outlaw rankings
- Added missing AOE trinket rankings for all Demon Hunter specs

### Raid Tools
- Fixed swap suggestions reusing the same player as swap partner across multiple triggers

### UI
- All frames use dynamic sizing based on screen resolution
- Responsive dungeon icons scale to fit available width
- Font sizes scale proportionally at different UI scales

## v1.3.6 — What's New Screen (2026-03-26)
- Updated What's New popup to show v1.3 and v1.3.5 highlights
- Removed features list from welcome screen, now shows only what's new

## v1.3.5 — Polish & Fixes (2026-03-26)

### Consumables
- Shift-click items to link in chat or search the Auction House

### Bug Fixes
- Fixed sub-panels (Gear, Raid Tools, Loot Browser, Consumables) being independently draggable when embedded in the app shell
- Fixed consumables icon pool contamination causing greyed-out icons
- Added nil-safety to consumables object pool functions

## v1.3.0 — Consumables Guide, Loot Browser & More (2026-03-26)

### Consumables Guide (new)
- Full enchant, gem, and consumable recommendations for every class and spec (all 40 specs)
- Three-tab layout: Enchants, Gems, Consumables — each with item icons, quality-colored links, and tooltips on hover
- Class dropdown and spec buttons to browse any spec's recommendations (defaults to your class/spec)
- Guide text below each tab with detailed reasoning (flask choices, potion tradeoffs, weapon buff notes, food comparisons)
- Alternative items shown inline with "or" label (e.g. flask alternatives)
- Accessible from dashboard, app nav bar, and integrated as full page in the app shell

### Loot Browser (new)
- Browse all dungeon, raid, and world boss loot by slot
- EJ-based scanning with spec and secondary stat filtering (Crit/Haste/Mastery/Vers)
- Two-row slot tabs: armor on top, accessories + weapons on bottom
- Difficulty columns (Normal/Heroic/Mythic for dungeons, LFR/N/H/M for raids)
- Item icons with difficulty-colored borders, tooltips on hover, shift-click to link
- Trinket tier badges (S/A/B) cross-referenced from SimC rankings
- Spec dropdown to browse loot for any spec
- Remembers selected slot across open/close (defaults to Head)
- Accessible from dashboard, app nav bar, and `/yh loot`

### Raid Tools
- Group display reordered: top row shows groups 1, 3, 5 and bottom row shows 2, 4, 6 for split visualization
- DK Grip distribution: suggests splitting Death Knights across raid splits for Mass Grip coverage
- Healer stacking fix: only suggests swaps when source split has 3+ healers (5-healer raids handled correctly)

### Profile System Simplified
- 6 profiles → 3: **Normal** (Casual/Delves/M+ up to 8), **Heroic** (Heroic Raid/M+ 10), **Mythic** (Mythic Raid/M+ 10+)
- Old profile IDs auto-migrate (heroic_raider → heroic, mplus_high → heroic, etc.)
- Each profile defines farmable track for smarter recommendations

### Recommendation Engine Improvements
- **SAVE_FOR_DROP**: "Hero drops from M+6-10 / Heroic raid — save Champion crests, wait for replacement"
  - Only triggers for low-rank items (1-3/6) with precious crests
  - Shows source hint (M+ key range + raid tier)
- **CREST_CAPPED**: "Need 20 Champion — capped until next reset"
  - Detects both weekly caps (Hero/Myth) and season cumulative caps
- Myth 2/6+ always recommended for upgrade (top track, nothing replaces it)
- Myth 1/6 still suggests using Hero crests for free promotion via overlap

### Trinket Rankings Refreshed
- Fresh SimC data: 60,000 iterations, 30 specs (ST + AOE), latest nightly profiles
- New spec: Rogue Assassination
- Item level shown on all trinket rows (Myth 6/6 = 289)
- Tooltips now show Myth 6/6 stats; shift-click links the Myth 6/6 version
- Removed legacy trinkets not in current loot pool

### UI Polish
- Unified underline tab style across all panels (Raid Tools, Consumables, Loot Browser)
- Dashboard app nav buttons in a 3x2 grid instead of single row
- Magisters' Terrace trinket sources corrected

## v1.2.0 — Raid Tools, Data Overhaul & Polish (2026-03-25)

### Recommendation System Reworked
- Crests can only be spent on their own track — addon no longer suggests "hold crests for higher track gear"
- Items now show explicit upgrade priority: "Upgrade 1st of 5 Champion", "Upgrade 2nd", etc.
- Priority based on slot value (weapons/chest/legs first, neck/wrist last)
- Crest scarcity calculated from total season budget (current + still earnable), not just inventory
- Overlap zone fix: "Use cheaper crests" only shows at rank 1 (not rank 2 where free ranks are already used)
- Profile changes instantly refresh all recommendations on the dashboard

### Raid Tools — Performance Tab (new)
- DPS rankings from Blizzard's built-in Damage Meter API (C_DamageMeter)
- Average DPS per player per split (A vs B) with imbalance detection
- Avoidable damage taken leaderboard
- Death count tracker
- Interrupt count tracker
- Uses current combat segment, falls back to overall

### Raid Tools — Overview Improvements
- Two-column layout: groups + swaps on left, composition + consumables on right
- Consumable checker: flask, food, augment rune status per player (spell ID based, taint-safe)
- Missing players listed by name next to each consumable type
- Raid buff list: one per line, cleaner layout
- Composition shown in large font with role breakdown
- Swap suggestions now show player names in bordered badges with class-colored borders
- "Swap All" button executes all suggested swaps via SwapRaidSubgroup API (raid leader/assistant only, out of combat)
- Debuff class distribution: suggests spreading Monk (Mystic Touch) and DH (Chaos Brand) across splits
- PI targets need same split (not same group) — corrected from 40yd range
- Player count balance: suggests moving healer if it fixes both size and healer imbalance
- Auto-refreshes on GROUP_ROSTER_UPDATE (instant update when players are moved)
- Group display always reserves 2 rows (no layout shift with fewer than 4 groups)

### Season 1 Data Updated
- Gear tracks: Champion 249/252/255, Hero 262/265/268, Myth 275/278/281 (ranks 2-4 corrected)
- Champion free ranks from Veteran: 2 (was 1)
- M+ crests: Heroic=Adventurer, M0=Champion, +2-3=Champion, +4-8=Hero, +9-12=Myth
- Raid: per-boss crest amounts, Void 6 bonus crest (20 base + 10 next tier), per-wing detail view
- Raid progression: clickable wing buttons (All / Voidspire / Dreamrift / Quel'Danas) with boss-by-boss detail
- Delves: Tiers 1-4 give Adventurer crests, Tier 10=Champion, Tier 11=Gilded Stash (10 Hero + 5 Myth)
- Delve cards grouped by crest type: Tier 1-4, 5-6, 7-10, 11
- Trovehunter's Bounty Map data added (tiers 4-11)
- Prey: Normal=Adventurer, Hard=Veteran, Nightmare=Champion
- Crafting: added Veteran tier, Spark of Radiance (no crests) tier
- M+ cards show ilvl ranges with track names (e.g. "259 - 263 Hero")
- M+ grouped as +2-5, +6-8, +9, +10-12

### Profile System
- Clickable dropdown on dashboard to switch profiles
- Profile change refreshes dashboard, gear recommendations, and suggestions instantly
- Hero crests now precious for Mythic Raider and M+ High profiles (weekly cap makes them limited)
- "What's New" window shows on version update with profile selector built in

### Trinket Panel — ChonkyCharacterSheet Support
- Trinket tab and panel now anchor to the actual visual right edge of the character frame
- Detects ChonkyCharacterSheet and anchors to CharacterFrameBg instead of CharacterFrame
- Panel inherits CharacterFrame scale when Chonky is active
- OnSizeChanged hook re-anchors on dynamic resize
- "All Specs" button collapses sidebar then opens app (no more panel stealing)

### Minimap Button — LibDBIcon
- Replaced custom minimap button with LibDBIcon-1.0
- Works correctly with ElvUI square minimap, SexyMap, and other minimap addons
- Draggable, position saved automatically by the library
- Embedded libraries: LibStub, CallbackHandler-1.0, LibDataBroker-1.1, LibDBIcon-1.0

### Visual Polish (inspired by Plumber addon)
- DisableSharpening on all frame borders for smooth edges at any UI scale
- ADD blend mode highlights on hover (subtle glow instead of flat color change)
- Text shadows on all headers and titles for depth
- Consistent color hierarchy: primary (0.92), secondary (0.55), tertiary (0.35)
- All frames adapt to screen resolution (dynamic sizing via GetAppFrameSize)
- All popups clamped to screen (trinket detail, PI picker, profile dropdown)
- Frame z-ordering fixed: sub-panels normalized when inside app, no addon interleaving

### What's New Window
- Welcome screen now doubles as a "What's New" popup on version updates
- Shows "Welcome to YippYapp Helper" on first install, "What's New" on updates
- Features list + version-specific highlights
- Profile selector built in for immediate setup
- "Got it" saves the version — only shows again on next update
- `/yh whatsnew` to re-show

### Bug Fixes
- Frost DK and Devourer DH spec keys corrected for trinket rankings
- TIER_QUALITY defined before use (trinket detail popup quality borders)
- Swap badge frames and PI picker rows now pooled (memory leak fix)
- Tier tracker rows pooled (memory leak fix)
- Tainted aura name strings handled via spell ID lookup + pcall fallback
- Dashboard.lua removed call to nonexistent RefreshRaidTrinketDisplay
- quickBtnText dead references removed

---

## v1.1.0 — Midnight Season 1 Overhaul (2026-03-23)

### Unified App Window
- Replaced the old popup dashboard with a single unified app frame
- All features accessible from one window with back-button navigation
- Home page dashboard with character info, crest overview, upgrade summary, farm guide, and navigation buttons

### Gear Upgrades (redesigned in-app)
- Equipment panel scaled up for readability
- Info panel widened with 2-column crest display
- Suggestions redesigned as card-style rows
- New recommendation: "Use cheaper crests" for overlap zones

### Trinket Rankings (redesigned in-app)
- 3-column layout: S-Tier, A-Tier, B-Tier side by side
- Class/spec browser with ST/AOE toggle
- Fixed persistent "Loading..." issue
- Trinket data updated with latest SimC nightly

### Raid Tools (redesigned)
- Overview tab with composition, buffs, splits, PI assignments
- Tier Tracker tab (scan-on-demand)

### Progression Dashboard (redesigned)
- Card-based single-page layout
- M+ breakpoints, Raid by difficulty, Delve breakpoints, Prey, Crafting
- Crest Sources side panel

### Welcome Screen
- Draggable macro icon for action bar
- Macro auto-created on login

### Quality of Life
- Minimap button opens the unified app
- `/yh welcome` to reset welcome screen
