## [v6.6.0-release] - 05/22/2026

### Changed

- **Alert text position is now set by dragging instead of X/Y sliders.** The Alert Notifications settings tab no longer shows the xPos/yPos sliders, the position header, or the spacer above them. In their place is a single "Position Alert" button that opens a draggable on-screen overlay powered by the new `LibMatic-AlertPositioner-1.0` module (wired via `embeds.xml`). The overlay renders using the player's current LSM crit font (`fontSettings.font`/`fontSize`/`fontOutline`) and crit color (`fontSettings.fontColorCrit`) so the preview matches what shows in combat. The position itself is still stored as `alertNotificationFormat.position.{xPos,yPos}` in the profile, so existing positions carry over unchanged. While the overlay is active the AceConfigDialog frame is hidden, and it reopens when the player commits. The Reset Position and Test Position buttons in the Alert tab are unchanged.

## [v6.5.0-release] - 05/21/2026

### Added

- **Bounce Style option for alert text.** The Alert Notifications settings tab now has a "Bounce Style" picker with two choices: "Classic Bounce" (the existing animation, default) and "Bounce" (a quicker Mists-style pop with a faster scale-up and no mid-bounce pause). Stored as `alertNotificationFormat.global.bounceStyle` in the profile. Existing users keep "Classic Bounce", so the alert animation is unchanged unless they opt in.

### Changed

- **Options panel rebuilt on the shared `LibMatic-Settings-1.0` page builders.** The General, Alert, Sound, Social, and profile pages are now constructed by `LibMatic-Settings-1.0` instead of CritMatic-local `optionParts` files. `Modules/optionParts/GeneralSettings.lua`, `SoundSettings.lua`, `SocialSettings.lua`, and `ChangeLogSettings.lua` are removed; their content is supplied to the shared builders. `AlertFontSettings.lua` and `IgnoredSpellsSettings.lua` remain. The `Critmatic.db.profile` schema and every existing setting are preserved, so user customizations carry over untouched.
- **Crit broadcast moved to `LibMatic-Broadcast-1.0`.** The "send your highest crit to chat" feature now routes through the shared `LibMatic-Broadcast-1.0` library (raid-target marker 8, `CRITMATICBC` comm prefix, election disabled). If the library is unavailable the addon falls back to the previous direct `SendChatMessage` path, so the in-game behavior is unchanged.

## [v6.4.5-release] - 05/21/2026

### Changed

- **Changelog rendering and options moved into the shared `LibMatic-ChangeLog-1.0` library.** The in-game changelog popup (`/cmlog`, the right-click "Open Changelog" item, and the auto-popup on version bump) and the Change Log options tab are now built and drawn by `LibMatic-ChangeLog-1.0` instead of CritMatic-local code. `Modules/ChangeLogPopUp.lua` declares the popup as a structured `entries` spec and hands it to `lib:Show()`; `Modules/optionParts/ChangeLogSettings.lua` delegates to `lib:BuildOptionsTable()`. The set of changelog appearance settings (font, size, color, outline, border, border size, background) is unchanged and the `Critmatic.db.profile.changeLogPopUp` schema is preserved, so existing user customizations carry over untouched.
- **Changelog popup renders in one uniform color.** The popup body draws in a single color with no separately-colored section headers, and the window status line points to CurseForge for the full changelog. The default changelog font color moved from dark gray `{0.2, 0.2, 0.2}` to black `{0, 0, 0}`; anyone who customized the color keeps their choice.
- **LibMatic is now delivered as a packager external.** `Libs/LibMatic` is no longer a committed copy in the CritMatic repo. It is symlinked locally for development (gitignored) and the `.pkgmeta` `externals` entry makes the BigWigs packager fetch `LibMatic` from its own repository into the release zip. Single source of truth, no drift between a vendored copy and the upstream library.

### Fixed

- **`LibMatic-ChangeLog-1.0:BuildOptionsTable` no longer errors when an addon registers its options at file load.** It now accepts a lazy profile getter (a function that returns the profile table) instead of requiring the profile up front, so an addon whose options are registered before its AceDB database exists no longer hits `attempt to index field 'db' (a nil value)`. CritMatic passes `profile = function() return Critmatic.db.profile.changeLogPopUp end`.

## [v6.4.4-release] - 05/20/2026

### Changed

- **RepMatic icon refreshed in the About / By section** of the General Options tab. The 24x24 row icon next to the RepMatic CurseForge link (`Media/Textures/repmatic-icon.tga`) now uses the new higher-resolution RepMatic art that ships with RepMatic v1.0.6. Pure art swap, no behavior or layout changes.

## [v6.4.3-release] - 05/20/2026

### Fixed

- Vendor the new `LibMatic` library umbrella (`LibMatic-CombatTextBounce-1.0` + `LibMatic-IconPicker-1.0`). v6.4.2 referenced `LibMatic` in `embeds.xml` but the actual library files were not yet committed to git, so the BigWigs packager built the v6.4.2 zip without the `Libs/LibMatic/` directory. Auto-updaters who pulled v6.4.2 from CurseForge saw `1x LUA_WARNING: CritMatic/embeds.xml:16 Couldn't open CritMatic/Libs/LibMatic/LibMatic-CombatTextBounce-1.0/...` on every reload. v6.4.3 commits the LibMatic files (LibStub-versioned) so the zip ships intact. No behavior change for anyone who had a clean install; the warnings stop.

## [v6.4.2-release] - 05/19/2026

### Changed

- In-game changelog popup status text and footer now point at "Discord in General Settings" instead of GitHub. Aligned with GearMatic and RepMatic on the shared `discord.gg/34JJyrnGGC` server.

## [v6.4.1-release] - 05/18/2026

### Fixed

- Minor bug fixes.

## [v6.4.0-release] - 05/18/2026

### Added

- **Profiles tab in the options panel.** CritMatic now exposes a standard AceDB-3.0 profile manager (the same Profiles UI you see in ElvUI, WeakAuras, Details, etc.). Configure your alert font / colors / position, sound choices, social broadcast options, and Crit Log placement on one character, then on every other character pick that profile from the dropdown so all settings sync across alts automatically. Supports Current / New / Copy From / Delete / Reset, with the standard AceDB defaults (Default, character, realm, faction, class). Tab is registered from `Critmatic:OnInitialize` after `self.db` is created, then merged into the existing `CritMaticOptions` AceConfig table (`AceConfig:RegisterOptionsTable` re-registers idempotently). New locale string `profile_changed_reload` printed via `OnProfileChanged` / `OnProfileCopied` / `OnProfileReset` callbacks, reminding the user to `/reload` so font, alert position, and Crit Log frame placement fully apply to already-instantiated UI elements.

### Changed

- **CritMaticDB is now an account-wide SavedVariable.** The old `CritMaticDB14` lived under `## SavedVariablesPerCharacter`, which is why per-character setup was needed in the first place: each character had its own copy of the DB and its own (isolated) `profiles` subtable. v6.4.0 adds a new global `CritMaticDB` in `## SavedVariables`, and AceDB is rebound to it via `LibStub("AceDB-3.0"):New("CritMaticDB", defaults, true)` (the third arg pins the default profile to `Default` so fresh alts inherit shared settings out of the box). A one-time migration runs on first login per account: if `_G.CritMaticDB14.profile` exists and `_G.CritMaticDB._cm_migrated` is not yet set, the legacy per-character settings are copied into `self.db.profiles["Default"]` and the migration flag is stamped. This means the first character to log in after upgrade donates their existing CritMatic configuration to the new shared `Default` profile, and every alt then sees those settings without manual re-setup. Per-character customizations from other alts remain in their respective `CritMaticDB14` SVPC files (untouched, downgrade-safe), and users who want character-specific setups can still create named profiles from the Profiles tab.
- **Crit/Normal hit data is now per-profile.** `CritMaticData` (the recorded highest-hit table) used to be a flat per-character SavedVariable, completely outside the profile system, which meant a brand-new profile would still show the character's full crit history. v6.4.0 moves the hit table into `self.db.profile.crits` (an account-wide subtable under whichever profile is active) and rebinds the `_G.CritMaticData` global to point at it on `OnInitialize` and on every `OnProfileChanged` callback. Net effect: clicking **New** in the Profiles tab and switching to that new profile gives you a truly blank Crit Log; switching back to your previous profile restores its hits exactly as they were. On the first v6.4.0 login per character, any pre-existing `_G.CritMaticData` entries are merge-copied into the active profile's `crits` table on a per-`spellID` basis (only spell IDs that don't already exist in the profile are copied, so multiple characters' historical hit tables can be folded into the same profile without one stomping another). `Critmatic:CritMaticReset` now uses `wipe(CritMaticData)` instead of `CritMaticData = {}`, so the slash-command reset actually clears the profile-backed table in-place rather than replacing the global with an empty table that would orphan the profile data.

Requested on Reddit. Static syntax check (`luac -p`) clean across `CritMatic.lua`, `Modules/CritMaticOptions.lua`, `Modules/CritMaticDB.lua`, and `Localization/enUS.lua` before tagging.

## [v6.3.2-release] - 05/18/2026

### Fixed

- **Crit Log header icon now renders the new crossed-swords medallion.** v6.3.1 shipped the new art at `Media/Textures/icon.tga`, but the WoW client's per-path texture cache held on to the original `icon.blp` render for that frame slot on existing installs, so users still saw the old single-blade art after updating. Renamed the new texture to `Media/Textures/critmatic-medallion.tga` (a path WoW has no cached entry for) and pointed both consumers at it: the TOC `## IconTexture:` directive and the in-frame `texture_CritMatic_icon:SetTexture(...)` call in `Modules/CritLog.lua`. The texture itself was also re-rendered from the source PNG without the redundant circular alpha mask (the source already ships with a baked-in round alpha channel), so the sword hilts and full blade bodies are preserved instead of being clipped at the corners.

Static syntax check (`luac -p`) clean before tagging.

## [v6.3.1-release] - 05/18/2026

### Changed

- **Addon icon refreshed.** New round, alpha-masked crossed-swords medallion replaces the old `icon.blp`. Ships as a 256x256 32-bit TGA at `Media/Textures/icon.tga`, cropped tight on the swords with the outer glow halo trimmed back so the blades stay legible at the 25x25 in-game draw size in the Crit Log header and the small AddOns-list thumbnail. `## IconTexture:` in `CritMatic.toc` and the in-frame `texture_CritMatic_icon:SetTexture(...)` call in `Modules/CritLog.lua` both now point at `icon.tga`. No behavior or settings changes; pure art swap.

Static syntax check (`luac -p`) clean before tagging.

## [v6.3.0-release] - 05/17/2026

### Added

- **GearMatic and RepMatic addon links** added to the About / By section of the General Options tab, directly under the Follow on X row. Each row is a 24x24 icon plus a full-width copyable input field pre-filled with the CurseForge URL (`https://www.curseforge.com/wow/addons/gearmatic` and `https://www.curseforge.com/wow/addons/repmatic`). Click the field, Ctrl+A / Cmd+A, copy, paste into a browser, same as the existing X and Buy Me A Coffee rows. Two new 64x64 TGA textures shipped under `Media/Textures/`: `gearmatic-icon.tga` and `repmatic-icon.tga`.
- **Full locale parity for both new rows.** `options_gearmatic_link`, `options_gearmatic_link_desc`, `options_repmatic_link`, and `options_repmatic_link_desc` translated across all eleven supported locales (`deDE`, `enUS`, `esES`, `esMX`, `frFR`, `itIT`, `koKR`, `ptBR`, `ruRU`, `zhCN`, `zhTW`). No behavior differences between locales; only the on-screen text changes.

Static syntax check (`luac -p`) clean across all touched files before tagging.

## [v6.2.1-release] - 05/15/2026

### Fixed

- **Locale parity for the new "Follow on X" row.** v6.2.0 shipped the X link with English-only inline fallbacks, breaking the full-parity rule the BMAC and Discord rows have followed since v5.5.10. This release adds `options_x_link` and `options_x_link_desc` translations to all eleven locale files: `deDE`, `enUS`, `esES`, `esMX`, `frFR`, `itIT`, `koKR`, `ptBR`, `ruRU`, `zhCN`, `zhTW`. No behavior or UI changes beyond the localized strings; the URL itself (`https://x.com/infiniteloopalc`) is the same everywhere.

Static syntax check (`luac -p`) clean across every locale file before tagging.

## [v6.2.0-release] - 05/15/2026

### Added

- **Follow on X link** added to the Support / By section of the General Options tab. New 24x24 X (formerly Twitter) icon plus a full-width copyable input field pre-filled with `https://x.com/infiniteloopalc`. Mirrors the existing Buy Me A Coffee row: click the field, Ctrl+A / Cmd+A, copy, paste into a browser. No other settings changed; the Discord link, BMAC link, and the Infinite Loop Alchemist profile row above it are untouched.

Static syntax check (`luac -p`) clean before tagging.

## [v6.1.0-release] - 05/10/2026

### Changed

- **TOC Interface line refreshed for every live Classic WoW client** so the addon stops showing as "Out of Date" on launch. The multi-flavor list is now `50503, 40402, 38001, 20505, 11508`, covering MoP Classic 5.5.3, Cataclysm, Wrath / Titan Reforged 3.8.1, TBC Anniversary 2.5.5, and Classic Era 1.15.8.
- **Per-flavor BigWigs packager keys updated to match the new live builds.**
  - `## Interface-Classic: 11508` (unchanged)
  - `## Interface-BCC: 20505` (added; was missing)
  - `## Interface-Wrath: 38001` (was `30403`)
  - `## Interface-Cata: 40402` (added; was missing)
  - `## Interface-Mists: 50503` (added; was missing)
- **Dropped the bogus `## Interface-Titan: 38000` line.** That key isn't recognized by the BigWigs packager (it predates the official Wrath / Titan Reforged build); the `Interface-Wrath` slot is the right place for `38001` going forward.

### Removed
- **Retail / Mainline support dropped this release.** Patch 12.0 ("Midnight") blocks unprivileged addons from registering `COMBAT_LOG_EVENT_UNFILTERED`, which is the entire mechanism CritMatic relies on to record crits. Ace3 maintainer nevcairiel confirmed in WowAce issue #697: *"Blizzard blocked the ability to use the COMBAT_LOG_EVENT_UNFILTERED event."* Without CLEU, every CritMatic feature (highest crit / normal recording, tooltip integration, chat broadcasts, log window, social ping) is non-functional. Shipping a retail-listed addon that can't perform its core function would mislead users, so retail is intentionally untargeted until Blizzard relaxes the restriction. Classic flavors are unaffected.

Static syntax check (`luac -p`) clean across every Lua module before tagging.

## [v6.0.0-release] - 05/09/2026

### Removed (breaking)

- **`Send to /say` toggle and the SAY broadcast path are gone.** /say is muted in instances by Blizzard, and combining it with the combat-end timing window made the broadcast unreliable. Removing the option entirely is cleaner than continuing to ship a half-working channel. Group channels (Party / Raid / Battlegrounds via INSTANCE_CHAT) and Guild remain. Existing `social.canSendCritsToSay = true` saved-vars are now silently ignored.

### Changed

- **Social broadcast is now Questie-style: one group channel + optional guild simulcast.** Modeled on Questie's `_QuestieAnnounce.GetChatMessageChannel`. Inside a battleground sends to `INSTANCE_CHAT` (when in a group), in a raid sends `RAID` (or `INSTANCE_CHAT` for LFR), in a party sends `PARTY` (or `INSTANCE_CHAT` for LFG dungeons). `GUILD` is added as an additional simulcast when toggled and you're in a guild. No more "blast to SAY + GUILD + PARTY all at once."

### Versioning

- Going forward CritMatic follows strict semver. The setting removal drives the MAJOR bump from 5.5.11 to 6.0.0. Past releases (5.5.x) stayed in the patch slot regardless of feature additions; that's the historical reason 6.0.0 looks like a big jump from a small change.

## [v5.5.11-release] - 05/09/2026

### Fixed

- **Crit Log size now persists across /reload and relog:** the window's user-resized width/height was being clobbered on every show by a hardcoded `SetSize(300, 153)` in `Modules/CritLog.lua` that ran AFTER `ApplyStatus` had restored the saved dimensions. The save path (the `StopMovingOrSizing` hook) was always working; the read path was just being overwritten one line later. Replaced with `SetSize(sizePos.size_x or 700, sizePos.size_y or 500)` so the saved dimensions survive.
- **Right-click "Open Changelog" menu item on the CritMatic icon now actually opens the changelog:** the menu was calling `Critmatic:ShowChangeLog()` (capital S) but the function is defined as `Critmatic.showChangeLog` (lowercase). The menu item was silently dead. One-character fix in `Modules/CritLog.lua`.

### Changed

- **In-game changelog popup now shows only the latest 3 releases:** the popup (`Modules/ChangeLogPopUp.lua`) previously accumulated every version going back to v0.3.6.2.5 from late 2023, which made the auto-popup-on-upgrade dialog a wall of irrelevant ancient bullets. It now shows v5.5.11, v5.5.10, v5.5.9 only, plus a "For the full version history see CHANGE_LOG.md on GitHub or CurseForge." pointer. `CHANGE_LOG.md` keeps the full history for the CurseForge project page. Going forward each release prepends the new entry and drops the oldest so the popup stays at 3.

### Added

- **`release.sh` packager wrapper now lives in the repo** (was an untracked helper at `/tmp/critmatic-release.sh` which macOS clears on reboot). Sources `.env` and execs the BigWigs packager. `.env` itself stays untracked.

---

## [v5.5.10-release] - 05/08/2026

### Added

- **Buy Me A Coffee link in General settings:** the General tab now has a Support group with the Discord link plus an optional Buy Me A Coffee link, and a By group showing the author. Same copy-only field pattern as the Discord link, completely optional.

### Changed

- **General tab reorganized into Support and By groups:** Discord and Buy Me A Coffee live in the new Support group; the author credit lives in the new By group. The General toggles above are unchanged.
- **Localization parity restored across all 11 locales:** deDE, esES, esMX, frFR, itIT, koKR, ptBR, ruRU, zhCN, zhTW now translate every option string introduced in v5.5.8 / v5.5.9 / v5.5.10 (Send Crits to Say, Lock Crit Log Position, Buy Me A Coffee link, Support / By group headings). All 11 locale files now have 153 keys.

### Fixed

- **Send Crits to Say no longer broadcasts inside instances:** the /say toggle is now gated on `not inInstance`, so dungeon, raid, battleground, and arena groups do not see your /say spam even if the toggle is on. Open-world / city /say is unchanged.
- **`critFormat` / `critHealFormat` defaults switched from `{star}` to `{rt1}`:** these AceDB defaults sat on `{star}` while the live broadcast in `CritMatic.lua` already hardcodes `{rt1}`. The defaults are not currently consumed by the broadcast, so user-visible behavior is unchanged, but the defaults now match the locale-safe convention so any future code path that reads them will not regress non-enUS clients.

### Updated

- **In-game changelog popup refreshed:** the popup that opens on a fresh install / version bump (`Modules/ChangeLogPopUp.lua`) had been stuck at v0.4.3.0 since January and missed every v5.5.x release note. It now lists v5.5.0 through v5.5.10. The release skill (see `~/.claude/skills/critmatic-release/`) is set up so future releases keep both this `CHANGE_LOG.md` and the in-game popup in sync.

---

## [v5.5.9-release] - 05/08/2026

### Added

- **Lock Crit Log Position toggle (General tab):** new option to lock the window so a normal click+drag is ignored. Hover the toggle for a tooltip explaining the override: when locked, hold Ctrl while dragging to move the window. Default off, so existing setups keep working unchanged.
- **Full-width drag handle:** the entire top strip of the Crit Log window is now a drag handle, not just the small text label. Click and drag anywhere along the header, the side borders, or the gold-ringed CritMatic icon to move the window.

### Changed

- **Tighter Crit Log row spacing:** each spell row now sizes to its own content (count of visible stat lines) instead of a fixed 60 px. Damage-only and heal-only spells take roughly half the vertical space, hybrid spells with all four stat lines keep the room they need. Net effect is a much denser list.

### Fixed

- **Right-click menu / tooltip on the gold-ringed icon:** with the new full-width drag handle the title strip overlapped the icon and intercepted some of its mouse events. The icon is now explicitly raised above the title-bar handle so right-click (Open Settings, Open Changelog, Lock / Unlock, Reset Position, Hide) and the hover tooltip work again.

---

## [v5.5.8-release] - 05/07/2026

### Added

- **Track Crits Only option (General settings):** opt-in toggle that records only critical hits and critical heals. Skips normal hits, normal heals, DoT/HoT ticks, and bandage ticks setting new highest values. Off by default.
- **Full localization for every CurseForge-supported client:** every locale file (`deDE`, `esES`, `esMX`, `itIT`, `koKR`, `ptBR`, `ruRU`, `zhCN`, `zhTW`) now ships a complete translation of all options and messages. Previously only `enUS` and `frFR` had real translations and the other 9 were stubs that fell back to English. `frFR` was also brought up to parity with the new options strings.

### Fixed

- **Battleground opt-out was bypassed:** disabling `Send Crits to Battlegrounds` had no effect because `IsPartyLFG()` is true inside BGs and the next branch sent the message anyway. Each chat target now picks one channel and respects exactly one opt-out, no fallthrough.
- **Raid opt-out fell through to PARTY:** disabling `Send Crits to Raid` while in raid silently tried to send to PARTY chat (which goes nowhere when in a raid). Same restructure fixes this.
- **Locale-safe chat broadcast:** the social broadcast prefix changed from `{star}` (which only renders the gold star on enUS clients) to `{rt1}`, so the icon now shows correctly on every locale.
- **Possible nil error in tooltip code:** `castTime > 0` could throw "attempt to compare nil with number" when `GetSpellInfo` returned nil castTime on certain Retail 11.x spells. Guarded with a nil check.
- **Tooltip hooks now guarded:** `hooksecurefunc(GameTooltip, "SetSpellBookItem", ...)` could error at load on Retail 11.x where the method may not exist. Both `SetAction` and `SetSpellBookItem` hooks now check for the method before installing.
- **Version broadcast misuse:** `BroadcastVersion` could call `SendCommMessage` with channel `PARTY` while not in a group at all (only guild was checked). Now gated on `IsInGroup()`.
- **GROUP_ROSTER_UPDATE comm spam:** roster events fire frequently in any group activity; each fire used to broadcast immediately. Now coalesced to one broadcast per 5 seconds.
- **Self-cast heals not tracked:** `destGUID ~= UnitGUID("player")` filtered out every self-target event, so paladin/druid/priest self-heal crits never updated highest values. Self-heals are now recorded; self-damage stays excluded.
- **Broken string fallback in version comparison:** lexical compare of version strings (`"0.5.10.0" > "0.5.9.0"`) returned wrong answers. Removed the dead fallback path; `compareVersions` is the single source of truth.
- **`compareVersions` was a global:** moved inside `OnInitialize` as a `local function` and reordered before its first use.
- **`/cmhelp` lines used bare `print`:** the first line used `self:Print` (with `[CritMatic]` prefix) and the rest used `print` (no prefix). All lines now use `self:Print` for consistent formatting.
- **Packager bundled dev-only files into the upload:** the BigWigs packager looks for `.pkgmeta` (no extension) or `pkgmeta.yaml` (no leading dot), not `.pkgmeta.yaml`. Renamed and added an `ignore:` block, so the addon ships only the user-facing files. Zip dropped from 2.3 MB to 1.3 MB.

---

## [v5.5.7-release] - 04/22/2026

### Fixed

- **CritMatic icon rendering behind the Crit Log window:** the three icon textures (black circle, CritMatic icon, gold ring) had `SetParent(UIParent)` calls — a workaround from the old `BACKGROUND`-strata days that lifted the textures above the window. With the window now at `MEDIUM` strata, those reparented textures ended up at UIParent's lower frame level and got covered by the window. Removed the reparenting so the textures inherit `critmatic_icon_frame`'s strata/level (child of the main frame) and render above it normally.

---

## [v5.5.6-release] - 04/22/2026

### Fixed

- **Right-click menu rendered behind the Crit Log window (retail 11.0):** v5.5.5 left the widget at `FULLSCREEN_DIALOG` strata (set by the AceGUI constructor), but `MenuUtil.CreateContextMenu` creates menus at `DIALOG`, so the menu was stacking underneath the window. Lowered the widget to `MEDIUM` strata (standard addon default) so context menus, tooltips, and popups render above it.
- **Inner scroll area not following the outer frame on resize:** the ScrollFrame was hardcoded to `SetSize(250, 120)` and anchored only TOPLEFT, so resizing the window left the spell list stuck at a fixed size. The scroll container is now anchored to both TOPLEFT and BOTTOMRIGHT (with room for the sizer and scrollbar), and the scroll child width tracks the container via `OnSizeChanged`. Spell rows now anchor TOPLEFT + TOPRIGHT, so they span the full available width at any frame size.

---

## [v5.5.5-release] - 04/22/2026

### Fixed

- **Crit Log window not movable/resizable on retail 11.0 (#22 follow-up):** the frame was forced to the `BACKGROUND` strata and then `:Lower()`-ed at the end of setup, which put it behind Blizzard's default UI. Overlapping default frames intercepted mouse input, so `RegisterForDrag` and the corner/edge sizers never received clicks. Removed the override; the widget now stays at the strata the Constructor set and drag + resize work again.

---

## [v5.5.4-release] - 04/17/2026

### Fixed

- **Retail 11.0 context menus and hover (#22):** right-click context menus on spell rows and the CritMatic icon no longer error with `EasyMenu (a nil value)`; they now use `MenuUtil.CreateContextMenu` on retail with an `EasyMenu` fallback for Classic/TBC/Wrath. Spell-row hover highlight no longer errors with `SetBackdrop (a nil value)` — the row frame now uses `BackdropTemplate`.
- **Open Settings menu item:** switched to `Settings.OpenToCategory` with an `InterfaceOptionsFrame_OpenToCategory` fallback so the menu entry works on retail 11.0+.

---

## [v5.5.3-release] - 04/13/2026

### Fixed

- **frFR typo:** corrected `valeures` → `valeurs` in the Change Log font reset description (confirmed by @Surfingnet on #21).

---

## [v5.5.2-release] - 04/13/2026

### Added

- **French (frFR) localization** contributed by @Surfingnet (#21) — full translation of all 134 strings, including the v5.5.0 additions (ignored spells panel, right-click context menus).

---

## [v5.5.1-release] - 04/13/2026

### Fixed

- **Login crash on Crit Log creation (#20):** removed stray `RegisterForClicks` calls on non-Button frames introduced in v5.5.0. Right-click context menus on spell rows and the CritMatic icon continue to work via `OnMouseUp` as before.

---

## [v5.5.0-release] - 04/12/2026

### Added

- **Spell icons in alert notifications:** the "New Crit!" popup now shows the spell icon with a matching bounce animation.
- **Resizable Crit Log:** drag the corner/edge to resize the Crit Log widget.
- **Right-click context menus:** right-click any spell in the Crit Log to Ignore it or Delete its data. Right-click the CritMatic icon for quick access to Settings, Lock/Unlock, Reset Position, and Hide.
- **Ignored Spells settings panel:** manage ignored spells from `/cm` options instead of slash commands — select from a dropdown, remove individual spells, or clear all.
- **Hover highlights:** spell entries in the Crit Log highlight on mouseover.

### Improved

- **Tooltip performance:** per-spell max values are now cached instead of rescanning all data on every tooltip hover.
- **Spell icon accuracy:** icons are stored at record time, fixing wrong-icon display for spells with shared names across ranks.

---

## [v5.4.1-release] - 04/12/2026

### Added

- **Crit Log toggle in options panel:** You can now show/hide the live Crit Log widget from `/cm` General Settings instead of needing the `/cmcritlog` slash command.

---

## [v5.4.0-release] - 04/12/2026

### Changed

- **License changed to All Rights Reserved.** CritMatic is now proprietary software. No part of this addon may be copied, modified, or redistributed without express written permission from the copyright holder.
- Updated README with current feature list, macro tooltip support, and license notice.

---

## [v0.5.3.2-release] - 04/11/2026

### Fixed

- **Macro tooltips (issue #19):** CritMatic's crit/hit lines now appear on action-bar macros that cast a tracked spell. The tooltip hook previously bailed out whenever `GetActionInfo` returned `"macro"` instead of `"spell"`; it now resolves the macro to its current spell via `GetMacroSpell(slot)` and proceeds normally. Cast-sequence and conditional macros (`/cast [mod:shift] X; Y`) reflect whichever spell would fire next. Thanks @Alessandro-Barbieri.

---

## [v0.5.3.1-release] - 04/10/2026

### Fixed

- Interface directive now uses comma-separated multi-version format (`110207, 38000, 20505, 11508`) so the BigWigs packager correctly tags the CurseForge release with all four game flavors (Retail, Titan Reforged, TBC, Classic Era). The v0.5.3.0 upload was only tagged as 11.2.7 because the space-separated form tripped the packager's parser.

---

## [v0.5.3.0-release] - 04/10/2026

### Fixed

- **Tooltip overflow with StatWeightsClassic (issue #17):** CritMatic's crit/hit lines no longer render outside the spell tooltip frame when used alongside other tooltip addons. `Show()` is now called exactly once per render, and only when CritMatic actually added lines.
- **Silent data loss for large crits:** raised `MAX_HIT` ceiling from 40000 to 1e9 so Wrath/Retail endgame crits are recorded instead of silently dropped.
- **Operator-precedence bug in combat log handler:** player-sourced events were bypassing the `destGUID`, `eventType`, and `amount > 0` filters due to missing parentheses around the `or` clause.
- **Nil crashes in combat log handler:** added guards for `baseSpellName`, `destGUID`, and `amount` to prevent errors on unusual event shapes.
- **`RANGE_DAMAGE` events** are now properly tracked (were in the outer filter but had no extraction branch).
- **Reset buttons in options panels** no longer pollute the shared defaults table by reference. All `Reset*ToDefault` functions now use `CopyTable` against `Critmatic.db.defaults`.

### Changed

- Optimized ignored-spells/targets filtering from O(N) per combat event to O(1) hash lookups.
- Added compatibility shims for `C_Spell.GetSpellCooldown` and `GetSpellBookItemInfo` (Retail 11.x).
- Unregistered `PLAYER_LOGIN` and `GROUP_JOINED` events (registered but never handled).
- Raw-source installs now load cleanly on Classic Era, TBC, and Wrath/Titan clients without the "out of date" warning (main `## Interface:` directive now lists 110207 38000 20505 11508). Thanks @Alessandro-Barbieri (#18).

### Removed

- Dead function `IsSpellInSpellbook` (zero callers).
- Dead DB field `dataCleared`.

---

## [v0.5.2.1-release] - 04/09/2026

### Fixed

- Split Wrath Classic (30403) and Titan Reforged (38000) into separate TOC interface directives so the BigWigs packager can build both flavors

---

## [v0.5.2.0-release] - 04/09/2026

### Added

- X/Y percentage sliders for alert text position (configurable in Alert settings, with Reset and Test buttons)

---

## [v0.5.1.0-release] - 01/17/2026

### Fixed
- update interface versions to current (Classic Era 11508, Wrath 38000)

---

## [v0.5.0.0-release] - 01/16/2026

### Added

- missing localization line

### Fixed

- TBC fix's
- invalid Interface-Wrath version (38000 -> 30403)

### Changed

- Wrath titan version to 38000

---

## [v0.4.3.0-release] - 01/14/2026

### Updated:

- **Updated the in-game changelog popup to show recent release notes.**

---

## [v0.4.2.9-release] - 01/12/2026

### Fixed:

- **Fixed tooltip conflict with StatWeightsClassic** - Removed redundant tooltip Show() call that caused CritMatic tooltip info to disappear when used alongside StatWeightsClassic addon.

- **Fixed WoW 11.0 compatibility** - Removed deprecated InterfaceOptionsList_DisplayPanel hook that was causing errors in modern WoW clients.

---

## [v0.4.2.8-release] - 12/25/2023


## [v0.4.2.7.5-release] - 12/25/2023

## [v0.4.2.7.4-release] - 12/16/2023

## [v0.4.2.7.1-release] - 12/10/2023

## [v0.4.2.7-release] - 12/6/2023

### Added:

- **Added options for maxMessages, startDelay, and fadeTime settings also a way to reset them.**

## [v0.4.2.5-release] - 12/6/2023

### Added:

- **Added alert notification preview feature in options under Alert**

- **Chat customization is coming next.**
