promotional bannermobile promotional banner

PlaterToT

Short label so you can see “who is this mob targeting?"
Back to Files

PlaterTOT 5.0.1.zip

File namePlaterTOT 5.0.1.zip
Uploader
SKSHINSKSHIN
Uploaded
Aug 25, 2026
Downloads
923
Size
311.4 KB
Flavors
Classic TBC
File ID
8730149
Type
R
Release
Supported game versions
  • 2.5.6

What's new

# PlaterTOT Changelog

All notable changes to this project will be documented in this file.  
이 파일은 **영문** 본문 아래에 같은 버전별 **한글** 요약을 둡니다.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

---

## [Unreleased]

---

## [5.0.1] - 2026-08-25

**Chore — patch bump:** Version 5.0.1 for the current Anniversary ship.

**한글:** 현재 배포본 패치 버전 5.0.1.

---

## [5.0.0] - 2026-08-19

**Chore — major CurseForge republish:** Major version bump to N.0.0 for CurseForge republish (local patch builds were ahead of / misaligned with the CF listing).

**한글:** CurseForge 재등록용 메이저 버전 N.0.0 강제 상향 (로컬 패치 버전이 CF 등록본보다 낮거나 어긋나 있던 상태 정리).

---

## [4.1.9] - 2026-08-19

**Fixed — battleground RAID:** Battleground/arena: do not send RAID, RAID_WARNING, or RAID addon-presence (avoids yellow raid-channel errors). TOC Interface list updated for Anniversary.

**한글:** 전장·투기장에서 공대 채팅·경보·RAID presence를 보내지 않음 (노란 공대 메시지 방지). TOC Interface를 애너버서리 클라에 맞춤.

---

## [4.1.8] - 2026-08-05

**Finisher ready flash:** At 5 combo points with energy ≥ Eviscerate, the energy bar/number stay **green** and **flash** (bright green pulse) instead of turning blue.

**한글:** 버블 5 + 절개 기력 충족 시 파랑 대신 **초록 번쩍** (기력바·숫자).

---

## [4.1.7] - 2026-08-05

**Rogue energy colors (SS / Eviscerate):** Green only when energy can cover **Sinister Strike** (talent cost). At **5 combo points**, if energy ≥ **Eviscerate** (35), bar and energy number turn **blue**. Text color matches the bar fill. Preview uses SS 40 / Eviscerate 35.

**한글:** 초록은 **사악한 일격** 기력 충족일 때만. **버블 5개**이고 기력 ≥ **절개(35)**이면 기력바·기력 숫자 모두 **파랑**. 미리보기는 SS 40 / 절개 35.

---

## [4.1.6] - 2026-08-05

**Rogue / Druid energy bar — builder ready color:** Energy bar fill turns **green** when current energy is enough for a combo builder (Sinister Strike / Hemorrhage / Mutilate / Shred / Mangle / Rake, etc.). Cost comes from `GetSpellPowerCost` so talents like Improved Sinister Strike (45→40) are reflected. Falls back to talent scan / 40 if the API is unavailable. Preview uses the simulated builder cost (40).

**한글:** 도적·드루(표범) 기력바가 **콤보 빌더 스킬 기력 이상**이면 초록으로 표시. 사악한 일격 등 비용은 API로 읽어 특성(예: 사악한 일격 연마 45→40) 반영. 미리보기는 시뮬 비용 40 기준.

---

## [4.1.5] - 2026-08-04

**Rogue / Druid raid mark fix:** Plater keeps resetting `PlaterRaidTargetFrame` anchors, so relocating the original icon never stuck. Now hides Plater’s mark while combo UI is active and draws an overlay above the combo digit (hooks `Plater.UpdatePlateRaidMarker` so it stays put). Size/scale follow Plater’s frame.

**한글:** Plater가 징표 위치를 계속 되돌려 올려두기가 안 되던 문제 수정. 콤보 UI가 떠 있을 때 Plater 징표는 숨기고 **콤보 숫자 위 오버레이**로 표시. Plater 갱신 훅으로 유지. 크기·스케일은 Plater 설정을 따름.

---

## [4.1.4] - 2026-08-03

**Raid mark size:** Live relocation no longer resizes the raid target icon (keeps Plater/Blizzard size). Only the settings preview sample uses a fixed 18px icon.

**한글:** 인게임에서 징표를 콤보 위로 옮길 때 **크기는 변경하지 않음** (Plater/기본 크기 유지). 설정 미리보기 해골만 18px 고정.

---

## [4.1.3] - 2026-08-03

**Settings preview — raid mark toggle:** Turning off the rogue/druid combo checkbox moves the sample skull back to the default spot (left of the health bar) instead of hiding it, so the up/down placement difference is visible.

**한글:** 설정 미리보기에서 도적·드루 콤보 체크를 끄면 해골이 사라지지 않고 **체력바 왼쪽(기본 자리)으로 내려가** 위치 차이를 보여 줍니다.

---

## [4.1.2] - 2026-08-03

**Rogue / Druid combo — raid mark placement:** While the combo/energy block is shown on the current target, the raid target icon is re-anchored **above the combo digit** so it no longer covers the energy bar. Restored when combo UI hides or the target changes. Settings preview shows a sample skull mark in the same spot.

**한글:** 도적·드루(표범) 콤보/기력 UI가 떠 있는 동안 **징표를 콤보 숫자 바로 위**로 옮겨 기력바가 가려지지 않게 함. UI가 사라지거나 타깃이 바뀌면 원래 위치로 복원. 설정 미리보기에도 해골 샘플 징표를 같은 자리에 표시.

---

## [4.1.1] - 2026-07-22

**Changed — maintenance:** Maintenance build / version bump. No feature changes.

**한글:** 유지보수 배포(버전 갱신). 기능 변경 없음.

---

## [4.1.0] - 2026-07-08

**Settings preview — energy/combo simulation:** Preview no longer advances combo on a fixed timer. **White tick bar** filling to 100% grants **+20** energy (2.025s cycle). **Combo 1→4** advances only when energy **≥ 40** (spends 40); **combo 4→5** only when **≥ 35** (spends 35). **Off-hand proc:** every **1.8s**, **20%** chance for **+15** (independent of combo). Cycle starts at **100** energy / combo **1**; after **5 combo** (~1.4s hold) resets to **100** / combo **1**. Thicker horizontal energy bar; duplicate preview/live energy **OnUpdate** cleanup.

**한글:** 설정 미리보기 기력·콤보 시뮬 개선. **흰 막대 100% → +20**, **1~4콤 ≥40 / 5콤 ≥35** 일 때만 콤보 상승(각 −40/−35). **1.8초마다 20% +15** 보조무기. 100 시작·5콤 후 리셋. 기력바 두께·갱신 중복 정리.

---

## [4.0.0] - 2026-07-08

**Rogue / Druid (cat) — combo + energy on target health bar:** `PlaterTOTComboPoints.lua` expanded into one left-side block on the current target’s Plater health bar: **combo digit** (1~4 white, 5 yellow pulse), **energy value above a horizontal energy bar** (yellow fill = current energy), and a **white tick marker** (2s energy regen timer, left→right). At **5 combo**, the target health bar gets the same **Pixel Glow** as Hunter/Warrior. **0 combo** hides the digit only; energy bar stays. Settings toggle **도적 · 드루이드(표범) · 콤보 포인트 · 기력 · 타이머 · 체력바 좌측 표시** (default on). Preview cycles combo 1→5 with tick animation.

**Energy tick:** Timer runs at **full energy** (100/100, 110/110). Tick speed follows **measured +20 gains**, `UnitPowerRegen` / `GetPowerRegen` fallback, and default **2.025s** — so **110 max energy** and **Adrenaline Rush**-style faster regen are reflected. Removed red 100% flash. Classic **SetDrawLayer** capped at sublevel 7 (fixes settings open error).

**Minimap / settings:** Minimap **T** button opens settings reliably (LibDBIcon + fallback position/drag, deferred init). **`/ptot config`** alias. Settings open uses multiple Classic/Retail paths. Duplicate energy **OnUpdate** removed.

**한글:** 도적·드루(표범) **콤보 숫자 + 기력 수치 + 가로 기력바 + 흰 틱 타이머**를 **현재 대상 체력바 왼쪽**에 한 세트로 표시. 5콤보 시 체력바 금색 Pixel Glow. 0콤보는 숫자만 숨김. 만 기력·110上限·아드레날린 가속 틱 반영. 빨간 100% 플래시 제거. 미니맵 버튼·`/ptot config`·Classic SetDrawLayer 오류 수정. 설정 **도적 · 드루이드(표범) · 콤보 포인트 · 기력 · 타이머 · 체력바 좌측 표시**.

---

## [3.6.0] - 2026-07-08

**Combo point bubbles:** New `PlaterTOTComboPoints.lua`. Rogue and Druid **cat form** combo points on the **left** of the current target's Plater health bar as digits **1 2 3 4 5** (filled count highlighted). Settings toggle **도적 · 드루(표범) · 콤보 포인트 · 체력바 좌측** (default on). Preview shows 3/5 sample.

**한글:** 도적·드루(표범) 콤보 포인트를 **현재 대상 체력바 왼쪽**에 **1~5 숫자**로 표시(쌓인 만큼 밝게). 설정 **직업 효과** 체크(기본 켜짐). 미리보기 3/5 샘플.

---

## [3.5.0] - 2026-07-08

**Built-in cursor glow:** New `PlaterTOTCursor.lua` — CursorTrail-style **Glow (Gold)** shape at the cursor with user-chosen color only. Settings: **커서 효과** section with **커서 효과 사용 · Glow (Gold)** toggle (default off) and **빨·주·노·초·파·남·보** color dropdown (default 노). Saved to `cursorEffectEnabled`, `cursorEffectColorIndex`. No need for the CursorTrail addon.

**한글:** CursorTrail **Glow (Gold)** 형태의 커서 글로우를 PlaterTOT에 내장. 설정 **커서 효과**에서 사용 여부(기본 끔)와 **빨·주·노·초·파·남·보** 드롭다운으로 색상 선택(기본 노). **저장** 후 게임에 반영. CursorTrail 애드온 불필요.

---

## [3.4.0] - 2026-07-07

**Warrior — reactive health bar effect:** New `PlaterTOTWarrior.lua`. When **Overpower** (after dodge) or **Revenge** (after block/dodge/parry) is usable in combat, Pixel Glow wraps the current attackable target's Plater health bar (same detection as Hunter: `IsUsableSpell` + cooldown filter). Settings toggle `showWarriorReactiveGlow` (**전사 · 제압 · 복수 · 체력바 효과**, default on). Login announce for warriors.

**한글:** 전사 **제압**(회피 후) / **복수**(막기·회피·방패 막기 후) 사용 가능 시 현재 대상 체력바에 Pixel 효과. 설정 **직업 경보** 체크 1개(기본 켜짐).

---

## [3.3.1] - 2026-07-07

**Hunter — health bar glow only:** Removed center-screen spell icons for Kill Command and Mongoose Bite. Reactive detection unchanged; when either skill is usable in combat, **Pixel Glow** wraps the current attackable target's Plater health bar only. Settings merged to one toggle `showHunterReactiveGlow` (**사냥꾼 · 살상명령/살쾡이의 이빨 체력바 글로우**). Legacy keys `showKCAlert`, `showMBAlert`, `showHunterTargetGlow` migrate automatically.

**한글:** 화면 중앙 아이콘 2개 제거. **살상 명령**(치명타 후) / **살쾡이의 이빨**(회피 후) 사용 가능 시 **현재 대상 체력바**에만 Pixel 글로우. 설정 **직업 경보** 체크 1개로 통합(기본 켜짐). 구 설정 3개는 자동 이전.

---

## [3.3.0] - 2026-07-07

**Hunter — reactive skill usable alerts:** New `PlaterTOTHunter.lua` chunk with a generic reactive-alert factory. When a Hunter is in combat and a reactive skill becomes usable, a spell icon with orbiting Autocast Shine glow is shown near screen center:
- **Kill Command** (`살상 명령`, spell `34026`) — usable after a crit; icon at `UIParent CENTER` x −72; requires a living pet. Toggle `showKCAlert`.
- **Mongoose Bite** (`살쾡이의 이빨`, spells `1495/14269/14270/14271/36916`) — usable after a dodge; icon at x +72. Toggle `showMBAlert`.

Detection uses `IsUsableSpell` + real-cooldown filter (ignores GCD; the 5s reuse timer suppresses the alert) matching the WeakAuras "Action Usable" approach for reactive abilities. **Glow:** Plater's `LibCustomGlow` Autocast Shine — orbiting particles around the icon (action-bar autocast style), not a static rotating star. Fallback: spinning `UI-ActionButton-Border`. **Target nameplate:** when either alert is active, the same orbit glow wraps the current attackable target's Plater health bar (and TOT bar if shown). Toggle `showHunterTargetGlow`. No instance restriction (works while leveling/dungeons). Toggles added under settings **직업 경보** (`사냥꾼 · 살상 명령`, `사냥꾼 · 살쾡이의 이빨`, `사냥꾼 · 대상 체력바`, default on). Hunter login announce line lists which alerts are active.

**Note:** Kept as a separate file to avoid the `PlaterTOTWarnings.lua` 200-local-per-chunk limit. Icon-only alert (no repeated sound) since these skills proc frequently.

**한글:** 사냥꾼이 전투 중 반응형 스킬을 쓸 수 있게 되면 화면 중앙 근처에 아이콘이 뜹니다. **살상 명령**(치명타 후, 소환수 생존 시) 과 **살쾡이의 이빨**(회피 후) 을 지원합니다. 글로우는 Plater `LibCustomGlow` **오토캐스트 궤도**로 표시합니다. **현재 공격 대상** 네임플레이트 체력바(TOT 바 포함) 주변에도 같은 궤도 글로우가 돕니다. 5초 재사용 대기시간 중에는 뜨지 않습니다. 설정 **직업 경보** 에서 각각 끌 수 있습니다(기본 켜짐).

---

## [3.2.6] - 2026-06-19

**Fix:** `PlaterTOTWarnings.lua` load order — define `classicTalentTreeSuggestsTank` / `paladinHasRighteousFury` locally (fixes line 130 nil global spam every 0.5s).

**한글:** 경고 모듈이 본체보다 먼저 로드되며 `classicTalentTreeSuggestsTank` 미정의 → 0.5초마다 Lua 오류(턱 소리) 나던 문제 수정.

---

## [3.2.5] - 2026-06-16

**Mage armor warning:** Recognize **Molten Armor** (KR: **타오르는 갑옷**, spell IDs incl. `30482`, `43046`, SoD `428741`).

**한글:** **타오르는 갑옷** 사용 시 갑옷 없음 오경보가 나던 문제 수정.

---

## [3.2.4] - 2026-06-16

**Fix:** Unchecked warning toggles were not saved — `GetChecked()` is falsy when off, so `or readWarningToggle()` kept restoring ON.

**한글:** 경고 체크 해제 후 저장해도 켜진 채로 남던 버그 수정.

---

## [3.2.3] - 2026-06-16

**Settings:** Warning checkboxes apply on **Save** only (same as sliders); closing/reopening the panel restores saved values.

**한글:** 경고 체크박스도 **저장** 버튼을 눌러야 반영. 저장 전 변경은 닫으면 되돌아감.

---

## [3.2.2] - 2026-06-16

**Warlock warnings split:** Separate toggles for **armor** (`showDAArmorWarning`) and **Soul Link** (`showDASoulLinkWarning`). Legacy `showDAWarning` migrates to both; `/platertot da armor on|off` and `da sl on|off` added.

**한글:** 흑마법사 **갑옷** / **영혼의 고리** 경고를 설정·슬래시에서 각각 켜고 끌 수 있음.

---

## [3.2.1] - 2026-06-16

**Settings:** **던전·공격대 안에서만** moved to a separate **경고 표시 범위** block above class buff toggles.

**한글:** 인던 전용 체크를 직업별 경고 위 **별도 구역**으로 분리.

---

## [3.2.0] - 2026-06-16

**Settings — buff warnings:** Checkboxes at the top of the options panel for Paladin RF, Warlock DA, Mage armor/intellect, Druid OC, and instance-only gate. Unchecking immediately disables that warning path (existing `PlaterTOTDB` keys / slash toggles unchanged).

**한글:** 설정창 상단에 직업별 버프 꺼짐 경고 ON/OFF 체크박스 추가. 끄면 해당 경고·사운드가 즉시 중단됩니다.

---

## [3.0.0] - 2026-06-16

Major release focused on the **settings panel UI** and **minimap button**.

### Added

- **Minimap button** — Plater `cast_bar` texture with a **T** overlay (hides the default dash). **LibDBIcon** + **LibDataBroker-1.1**: left-click toggles ESC → AddOns → PlaterTOT; drag to reposition (saved in `PlaterTOTDB.minimap`).

### Changed

- **Settings sliders — knob (thumb) UI** — Current value is shown **inside a wide scroll-bar knob** (`UI-ScrollBar-Knob`), not floating above the track. Knob width grows slightly for longer strings (`75%`, `-40`, `8 px`). Knob size increased for readability (v2.5.38).
- **Settings sliders — track** — Thin **4px red** rail replaces the invisible / thick gray Blizzard track so the knob reads clearly against the bar.
- **Settings sliders — layout** — Four sliders in a **2×2 grid** (two per row); panel height reduced accordingly. **Min/max** labels under each slider removed (value is on the knob only).
- **Release version** — **3.0.0** (settings UI + minimap polish since 2.5.29).

### Fixed

- **Minimap icon clipping** — LibDBIcon position/border adjusted so the button no longer draws outside the minimap circle.

**한글:** **3.0.0** — 설정 슬라이더 대개편(노브 안 현재값·얇은 빨간 레일·한 줄 2개·최소/최대 숨김) + 미니맵 **T** 아이콘(LibDBIcon, 좌클릭 설정 토글). 미니맵 원 밖으로 나가던 아이콘 위치 수정.

---

### Changed
- **Settings preview header** — Removed redundant current-value line above the preview (values already shown on each slider).

**한글:** 미리보기 상단 현재값 줄 제거 — 슬라이더에 이미 표시됨.

---

## [2.5.28] - 2026-06-16

### Changed
- **Larger settings preview** — Nameplate mock-up scaled **1.4×** (health bar, debuff icons, stage area). Settings panel height adjusted to fit.

**한글:** 설정 미리보기 **1.4배** 확대.

---

## [2.5.27] - 2026-06-16

### Fixed
- **Settings preview header layout** — Current TOT values (`높이 · offset · lift · 너비`) moved to a second line below the description so text no longer overlaps.

**한글:** 미리보기 상단 — 설명과 현재 값 줄 분리, 겹침 수정.

---

## [2.5.26] - 2026-06-16

### Added
- **Settings preview health bar text** — Shows Plater **life percent/amount** and **level** on the mock target health bar (font, anchor, outline, colors from enemy NPC profile). Sample: 100% HP at level 60.

**한글:** 설정 미리보기 — Plater 체력바 **체력%/수치·레벨** 텍스트 표시.

---

## [2.5.25] - 2026-06-16

### Changed
- **Settings panel Save button** — Replaced Close with **저장 (Save)**. Sliders update the preview only; pressing Save writes to SavedVariables, applies layout to live nameplates, and closes the settings panel. Closing without Save discards unsaved slider changes.

**한글:** 설정창 **저장** 버튼 — 슬라이더는 미리보기만, 저장 시 이름표 반영·설정 저장 후 닫기.

---

## [2.5.24] - 2026-06-16

### Fixed
- **Settings preview unit name** — Uses Plater `actorname_text_anchor`, font, outline, color, and max width on the health bar (same path as live enemy NPC nameplates). Name is parented to the health bar instead of a fixed position above it.

**한글:** 설정 미리보기 적 이름 — Plater `actorname_text_anchor`·폰트·색·외곽선·최대 너비를 실제 이름표와 동일하게 적용.

---

## [2.5.23] - 2026-06-16

### Fixed
- **Settings preview accuracy** — Main health bar and TOT bar now show **100% fill** (was ~72% / ~62%). Preview applies Plater **target selection overlay** and **target neon highlight** on the main nameplate like a live selected target.

**한글:** 설정 미리보기 — 체력바·TOT 바 100% 채움, Plater 타겟 선택 오버레이·네온 하이라이트 반영.

---

## [2.5.22] - 2026-06-16

### Fixed
- **Lua runtime error after 2.5.21 file split** — RF/DA/MA/MI/OC poll timers (`rfPollElapsed`, etc.) were moved to `PlaterTOTWarnings.lua` as locals but `PlaterTOT.lua` still referenced them as globals, causing hundreds of `OnUpdate` errors per second. Polling now runs via `PlaterTOTWarnings.pollUpdates()`.

**한글:** 2.5.21 파일 분리 후 경고 폴링 변수가 모듈 내부로 옮겨졌는데 메인 파일이 전역으로 참조해 `rfPollElapsed` nil 오류가 초당 수십~수백 번 발생하던 문제 수정.

---

## [2.5.21] - 2026-06-16

### Fixed

- **Lua local limit**: Split class-warning logic into `PlaterTOTWarnings.lua` and settings preview into `PlaterTOTPreview.lua` to fix `main function has more than 200 local variables` on load.

### 한글

- **Lua local 한도**: 경고·미리보기 코드를 별도 파일로 분리해 `200 local variables` 경고 수정.

---

## [2.5.20] - 2026-06-16

### Fixed

- **Settings sliders on Classic/TBC**: Named `OptionsSliderTemplate` sliders so `GetName()` is never nil (fixes `attempt to concatenate a nil value` when opening settings).

### 한글

- **설정 슬라이더**: Classic/TBC에서 슬라이더 이름 없음으로 설정 창 오류 나던 문제 수정.

---

## [2.5.19] - 2026-06-16

### Changed

- **Settings preview**: Uses the same Plater profile textures, health bar size, TOT bar builder, target indicator (Silver etc.), debuff row lift/anchor, and neon highlight logic as live nameplates.

### 한글

- **설정 미리보기**: Plater 프로필 체력바·TOT·디버프·타겟 인디케이터·네온을 실제 이름표와 같은 코드로 표시.

---

## [2.5.18] - 2026-06-16

### Fixed

- **Settings integration**: Panel no longer pops up as a standalone dialog on `/reload`. Opens only inside the game **Settings / Interface Options** (ESC → AddOns → PlaterTOT). Minimap left-click toggles that settings window.

### 한글

- **설정 통합**: `/reload` 직후 단독 설정창이 뜨지 않음. **ESC → 설정(애드온) → PlaterTOT** 안에서만 표시. 미니맵 좌클릭은 설정 창 열기/닫기.

---

## [2.5.17] - 2026-06-16

### Added

- **Minimap icon**: Left-click toggles the settings panel; Shift+drag repositions the button.
- **Settings panel UI**: Live preview plus sliders for TOT height (%), vertical offset, debuff/aura lift, and bar width padding. Changes apply immediately to visible nameplates.

### 한글

- **미니맵 아이콘**: 좌클릭으로 설정 창 열기/닫기, Shift+드래그로 위치 이동.
- **설정 창 UI**: TOT 높이·offset·lift·너비 여백 슬라이더 + 미리보기. 조정 즉시 이름표에 반영.

---

## [2.5.16] - 2026-06-16

### Performance

- **TOT update loop**: Cache layout/state per nameplate — skip redundant `SetText`/`SetPoint`/`SetSize`, run `applyTOTTargetIndicator` only when bar size changes, update health fill only when % changes.
- **Debuff aura lift**: `Plater.SetAnchor` only on TOT show/hide or `tot lift` change (+ `UpdatePlateSize` hook), not every 0.15s tick.
- **Nameplate mana**: Fallback poll **0.05s → 0.15s**; skipped when mana bar disabled; `UNIT_POWER_*` remains primary.
- **Class warnings on `UNIT_AURA`**: Coalesced to at most once per **0.35s** (RF/DA/MA/MI/OC + tank-threat sync).

### 한글

- **TOT 갱신**: 이름표별 캐시로 불필요한 UI·인디케이터 재적용 제거, 체력 %·레이아웃 변경 시에만 갱신.
- **디버프 올림**: TOT 표시/숨김·`tot lift` 변경·Plater 리사이즈 때만 앵커 재설정(0.15초마다 반복 호출 제거).
- **마나 띠**: 보조 폴링 0.15초, 마나 OFF 시 폴링 중지, 이벤트 갱신 우선.
- **`UNIT_AURA` 경보**: 0.35초에 최대 1회로 묶어 전투 중 aura 스파이크 완화.

## [2.5.15] - 2026-06-16

### Changed

- **Fine TOT / debuff spacing**: TOT vertical offset **0 → 1** (bar slightly higher); aura lift **5 → 3** (debuff row slightly lower). Prior defaults migrated once on load.

### 한글

- **TOT·디버프 간격 미세 조정**: TOT 세로 보정 **0 → 1**(막대 아주 약간 위), 디버프 올림 **5 → 3px**(아주 약간 아래). 기존 기본값은 로드 시 한 번 적용.

## [2.5.14] - 2026-06-16

### Changed

- **TOT vertical position**: Default `totBarAnchorExtraY` **-2 → 0** (TOT bar sits slightly higher above the health bar; prior -2 migrated once).

### 한글

- **TOT 세로 위치**: 기본 보정 **-2 → 0** (대상의 대상 막대를 약간 위로). 기존 -2 저장값은 로드 시 한 번 0으로.

## [2.5.13] - 2026-06-16

### Changed

- **TOT aura lift default**: `totAuraLiftPx` **10 → 5** (existing default 10 migrated once on load).

### 한글

- **디버프 올림 기본값**: TOT 표시 시 버프/디버프 위로 올리는 값 **10px → 5px** (기존 10 저장값은 로드 시 한 번 5로).

## [2.5.12] - 2026-06-16

### Changed

- **TOT bar height default 75%**: `totBarHealthFraction` default **50% → 75%** (migrates prior 50/80 defaults once). When TOT is visible, Plater buff/debuff rows nudge **+10px** upward (`totAuraLiftPx`) so icons sit above the TOT band; `/platertot tot lift 10` (0–24).

### 한글

- **TOT 막대 75%**: 기본 높이 **50% → 75%** (예전 50/80% 저장값은 한 번 75%로). TOT 표시 중 디버프/버프 줄을 **10px 위로** 올려 겹침 완화. `/platertot tot lift 10` (0~24).

## [2.5.11] - 2026-06-16

### Changed

- **TOT bar height default**: `totBarHealthFraction` default **80% → 50%** of Plater health bar height (less overlap with debuffs; `/platertot tot fraction` unchanged). Existing saves still at the old default 80% are migrated once on load.

### 한글

- **TOT 막대 기본 높이**: 체력바 대비 **80% → 50%**. 디버프와 겹치기 쉬웠던 막대를 더 낮게. 예전 기본값(80%)만 로드 시 한 번 50%로 맞춤. `/platertot tot fraction 50` 등으로 조절 가능.

## [2.5.10] - 2026-06-16

### Fixed

- **TOT bar covering debuff row**: Lowered default vertical offset, clamp TOT below Plater aura/debuff clearance (profile offsets + live `BuffFrame` height), reduced frame level so debuff icons draw on top, and cap upward target-highlight neon so it does not extend into the debuff band.
- **Slash:** `/platertot tot offset -2` (-40~40) for manual vertical fine-tuning.

### 한글

- **TOT 막대가 디버프 가림**: 기본 세로 위치를 낮추고 Plater 디버프 영역 아래에 맞춤. FrameLevel 을 낮춰 디버프 아이콘이 앞에 보이게 하고, 위쪽 네온 하이라이트도 디버프 밴드에 닿지 않게 제한.
- **슬래시:** `/platertot tot offset -2` (-40~40) 로 세로 미세 조정.

## [2.5.9] - 2026-06-11

### Added

- **Mage intellect warning**: Warns when Arcane Intellect / Arcane Brilliance is off or expiring soon. Toggle `PlaterTOTDB.showMIWarning` (default `true`). Slash: `/platertot mi on|off|debug`. Mage login announce now covers armor + intellect (`갑옷/신비`).

### 한글

- **마법사 신비 경보**: 신비한 지능 / 신비한 총명함이 꺼져 있거나 만료 임박 시 경고. 토글 `PlaterTOTDB.showMIWarning` (기본 `true`). 슬래시: `/platertot mi on|off|debug`. 마법사 접속 안내 문구를 갑옷/신비 통합으로 변경.

---

## [2.5.8] - 2026-06-11

### Added

- **Mage armor warning**: Warns when Mage Armor / Ice Armor / Frost Armor is off or expiring soon (same pattern as Warlock DA). Toggle `PlaterTOTDB.showMAWarning` (default `true`). Slash: `/platertot ma on|off|debug`.

### 한글

- **마법사 갑옷 경보**: 마법사 갑옷 / 얼음 갑옷 / 서리 갑옷이 꺼져 있거나 만료 임박 시 경고(흑마 DA와 동일 패턴). 토글 `PlaterTOTDB.showMAWarning` (기본 `true`). 슬래시: `/platertot ma on|off|debug`.

---

## [2.5.7] - 2026-06-11

### Added

- **Title attribution tamper guard**: New settings panel (`/platertot config`) with official author title; prefix tampering blocks nameplate TOT features and shows 「불법 수정된 애드온입니다.」 overlay when the panel is open.

### 한글

- **제목 변조 감지**: 설정 패널(`/platertot config`) 및 원작자 제목 접두사 보호. 변조 시 TOT 기능 차단, 설정창에 「불법 수정된 애드온입니다.」 오버레이.

## [2.5.6] - 2026-06-09

- Suppressed the Warlock armor / `Soul Link` logout false alert: when `Logout` / `Quit` is confirmed or `PLAYER_LOGOUT` fires, the DA warning is hidden immediately and Soul Link checks are paused for a short grace window so buff/pet teardown during disconnect does not flash `영혼의 고리 OFF`.
- Other class warnings (`Righteous Fury`, `Omen of Clarity`) are unchanged; only the Warlock DA / Soul Link path is gated on logout.

### 한글

- 접속 종료 시 흑마 `영혼의 고리 OFF` 오경보를 막도록 수정: `Logout` / `Quit` 확인 또는 `PLAYER_LOGOUT` 시 갑옷/영혼의 고리 경보를 즉시 숨기고, 종료 직전 버프·소환수 해제 순서 때문에 잠깐 뜨던 `영혼의 고리 OFF` 점멸·사운드를 억제합니다.
- `정의의 격노`, `청명의 전조` 경보는 그대로이며, 이번 변경은 흑마 갑옷/영혼의 고리 경보에만 적용됩니다.

---

## [2.5.5] - 2026-05-05

- Changed the Warlock `Soul Link` warning gate to only check while a living pet actually exists, and added a short transition grace after `UNIT_PET` / control-loss changes so griffon/taxi pet despawns do not fire a one-shot false alert before the state settles.
- Added a short common transition grace for all class warnings (`Righteous Fury`, `Warlock armor / Soul Link`, `Omen of Clarity`) so zone/portal/control transitions do not produce a one-shot false alert while aura data is still settling.

### 한글

- 흑마법사의 `영혼의 고리` 경고 조건을 `살아 있는 소환수가 실제로 있을 때만 검사`하도록 바꿨고, `UNIT_PET` / 조작 상실 같은 전환 직후에는 짧은 유예 시간을 둬서 그리핀/비행 경로 탑승 시 소환수 해제 직전에 1회 오경보가 나는 문제도 막았습니다.
- `정의의 격노`, `흑마 갑옷/영혼의 고리`, `청명의 전조` 경보 전체에 공통 전환 유예를 추가해, 포탈/인던 진입이나 조작 전환 직후 버프 정보가 아직 덜 정리된 순간에 1회 오경보가 나는 문제를 줄였습니다.
---

## [2.5.4] - 2026-05-05

- Added a Warlock self-buff warning path in the same style as the existing `Righteous Fury` / `Omen of Clarity` alerts.
  - New toggle: `PlaterTOTDB.showDAWarning` (default `true`).
  - The armor requirement is satisfied when either `Demon Armor` or `Fel Armor` is active, and `Soul Link` is checked separately as an always-on companion buff.
  - When either the armor buff or `Soul Link` is missing, a red pulsing warning is shown (`갑옷 OFF`, `영혼의 고리 OFF`, or `갑옷/영혼의 고리 OFF`) and the default raid warning sound repeats every 5 seconds.
  - When the armor buff is active but has less than 3 minutes remaining, the warning switches to a yellow countdown (`갑옷 2분 30초` style) without pulsing.
  - Unlike the RF / OC warnings, the Warlock armor warning is shown anywhere (not dungeon-only). It is refreshed from `UNIT_AURA` / spellbook update events and is included in `/platertot` status, slash commands (`da on|off|debug`), and login announce lines.

### 한글

- 흑마법사용 자버프 경보를 기존 `정의의 격노` / `청명의 전조`와 같은 스타일로 확장.
  - 새 토글: `PlaterTOTDB.showDAWarning` (기본값 `true`).
  - 갑옷 조건은 `악마의 갑옷` / `마의 갑옷(Fel Armor)` 중 하나만 켜져 있으면 충족되고, `영혼의 고리`는 별도로 항상 켜져 있어야 합니다.
  - 갑옷 또는 `영혼의 고리` 가 빠져 있으면 빨간색 점멸 경고(`갑옷 OFF`, `영혼의 고리 OFF`, `갑옷/영혼의 고리 OFF`)와 함께 기본 공격대 경보 사운드가 5초마다 반복 재생됩니다.
  - 갑옷 버프가 켜져 있지만 남은 시간이 3분 미만이면 점멸 없이 노란색 카운트다운(`갑옷 2분 30초` 형식)으로 전환됩니다.
  - `정의의 격노` / `청명의 전조`와 달리 이 경보는 인던 밖에서도 항상 표시되며, `UNIT_AURA` / 주문 갱신 이벤트에서 즉시 재평가되고, `/platertot` 상태줄, 슬래시 명령(`da on|off|debug`), 접속 안내 문구에도 포함.
---

## [2.5.3] - 2026-04-20

### Added

- **Instance-only gating for RF / OC alerts**: The Righteous Fury (정의의 격노) and Omen of Clarity (청명의 전조) on-screen alerts are now suppressed outside of party (5-man) and raid instances by default. Existing guards (sound muted while dead/ghost, spec/learn checks, toggle off) are preserved — this is an additional condition layered on top.
  - New SavedVariable: `PlaterTOTDB.warningInstanceOnly` (default `true`). When `true`, alerts only show if `IsInInstance()` returns instanceType `"party"` or `"raid"`. Open world (`"none"`), battlegrounds (`"pvp"`), arenas (`"arena"`), and scenarios (`"scenario"`) all suppress the warning frame.
  - When the gate suppresses an alert, the warning frame is hidden, the last-state cache is reset to `false`, and the per-alert sound throttle is reset so the first re-alert plays cleanly upon dungeon entry.
  - New helpers: `isInPartyOrRaidInstance()` and `warningAllowedByInstance()` centralize the check; `updateRFWarning()` and `updateOCWarning()` both call the gate after their existing guards.
- **Auto-refresh on zone change**: The event handler now also listens for `ZONE_CHANGED_NEW_AREA` and `ZONE_CHANGED` (in addition to `PLAYER_ENTERING_WORLD`) and re-runs `updateRFWarning()` / `updateOCWarning()` so the alerts toggle on the moment you step into a dungeon and turn off the moment you step out.

### Changed

- **Slash command surface**:
  - Added `/platertot instance on` and `/platertot instance off` (aliases `inst on` / `inst off`) to toggle the new instance-only gate at runtime; both call `updateRFWarning()` / `updateOCWarning()` immediately after flipping the flag.
  - `/platertot` status line now reports `instance-only: ON|OFF (now: party|raid|none|pvp|arena|scenario)` so you can verify both the user setting and the live `IsInInstance()` result in one place.
  - `/platertot rf debug` and `/platertot oc debug` now include `instType`, `instOnly`, and `instAllow` fields so you can see exactly why an alert is or isn't firing.
  - Help line at the end of the slash dispatcher updated to advertise `instance on|off`.
- Bumped `ADDON_VERSION` to `2.5.3`.

### 한글

- **RF / OC 경보를 파티/공격대 인던 안에서만 울리도록 게이트 추가**: 기존 가드(사망/유령 시 사운드 차단, 전문화·학습 여부 체크, 토글 OFF)는 그대로 유지하고, 그 위에 "파티 인던 또는 공격대 인던 안에 있을 때만 경보 표시" 라는 조건을 한 단계 더 얹음. 야외/도시/전장/투기장에서는 경보가 뜨지 않음.
  - 새 SavedVariable: `PlaterTOTDB.warningInstanceOnly` (기본값 `true`). `IsInInstance()` 의 두 번째 반환값이 `"party"` 또는 `"raid"` 일 때만 경보 표시. `"none"`(야외) / `"pvp"`(전장) / `"arena"`(투기장) / `"scenario"` 는 모두 차단.
  - 게이트가 경보를 막을 때 프레임 `Hide()`, lastState 캐시 `false` 리셋, 그리고 사운드 throttle 카운터(`rfSoundElapsed` / `ocSoundElapsed`)도 0으로 리셋. 던전에 들어간 직후 첫 알림 사운드가 깔끔하게 다시 울리도록 보장.
  - 공통 헬퍼 `isInPartyOrRaidInstance()` / `warningAllowedByInstance()` 로 체크를 중앙화. `updateRFWarning()` / `updateOCWarning()` 둘 다 기존 가드 다음 단계에서 이 헬퍼를 호출.
- **존 변경 시 자동 갱신**: 이벤트 핸들러에 `ZONE_CHANGED_NEW_AREA` / `ZONE_CHANGED` 등록 추가 (기존 `PLAYER_ENTERING_WORLD` 와 동일 분기에서 `updateRFWarning()` / `updateOCWarning()` 호출). 던전 입장하자마자 경보가 켜지고, 나가는 즉시 꺼짐.
- **슬래시 명령 보강**:
  - `/platertot instance on` / `/platertot instance off` (단축형 `inst on` / `inst off`) 추가 — 런타임에 인던 전용 게이트를 켜고 끌 수 있음. 토글 직후 `updateRFWarning()` / `updateOCWarning()` 즉시 재실행.
  - `/platertot` 상태줄에 `instance-only: ON|OFF (now: party|raid|none|pvp|arena|scenario)` 표시. 사용자 설정값과 실시간 `IsInInstance()` 결과를 한 줄로 동시에 확인.
  - `/platertot rf debug` / `/platertot oc debug` 출력에 `instType` / `instOnly` / `instAllow` 항목 추가. 경보가 왜 떴는지/왜 안 떴는지를 한눈에 파악 가능.
  - 슬래시 도움말 줄에 `instance on|off` 항목 추가.
- 버전 표기 `2.5.2` → `2.5.3`.

---

## [2.5.2] - 2026-04-20

### Changed

- **Center RaidNotice banner is now green for activation messages**: The on-screen banner for `정의의 격노 경보 활성화` / `청명의 전조 경보 활성화` now uses an explicit green color `(r=0.20, g=1.00, b=0.20)` passed to `RaidNotice_AddMessage`, overriding the default `RAID_WARNING` red. This matches the chat line color for the same active state and reads more naturally (positive feedback = green).

### 한글

- **화면 중앙 활성 안내 배너 색상을 초록으로 변경**: `정의의 격노 경보 활성화` / `청명의 전조 경보 활성화` 의 화면 중앙 RaidWarning 배너에 명시적으로 초록색 `(r=0.20, g=1.00, b=0.20)` 을 지정. 기본 `RAID_WARNING` 의 빨간색 대신 채팅 줄(활성=초록) 과 컬러를 통일해 자연스럽게 보이도록 함.

---

## [2.5.1] - 2026-04-20

### Changed

- **Login announce wording polished**:
  - Removed the diagnostic "v… 로드 — … 5초 내 안내 출력 예정" pre-line entirely. Only the final announce line remains.
  - Whole chat line is now colored (green for active, red for inactive, gray for non-applicable classes) instead of coloring only the verb.
  - Paladin label split: Protection paladins → `보호 성기사 접속 확인 …`, all others → `일반 성기사 접속 확인 …`.
  - Druid inactive reason shortened: `(청명의 전조 탤런트 미학습)` → `(미학습)`.
  - Other classes line shortened: `… 경보 모듈 대상 직업 아님` → `… 경보 대상 직업 아님`.
- **Center RaidNotice banner only on activation**: The big on-screen RaidWarning banner is now shown only for the active states (Prot Pally → 정의의 격노 경보 활성화, OoC Druid → 청명의 전조 경보 활성화). Inactive / non-applicable cases use chat only.

### 한글

- **접속 안내 멘트 정리**:
  - "v… 5초 내 안내 출력 예정" 진단 줄 완전 제거. 이제 최종 안내 1줄만 출력.
  - 채팅 줄 전체에 색상 적용(활성 초록, 비활성 빨강, 비대상 회색). 동사만 색칠하던 기존 방식 변경.
  - 성기사 라벨 분리: 보호 → `보호 성기사 접속 확인 …`, 그 외 → `일반 성기사 접속 확인 …`.
  - 드루이드 비활성 사유 축약: `(청명의 전조 탤런트 미학습)` → `(미학습)`.
  - 비대상 직업 멘트 축약: `… 경보 모듈 대상 직업 아님` → `… 경보 대상 직업 아님`.
- **화면 중앙 RaidNotice 배너는 활성 상태일 때만 표출**: 보호 성기사 / OC 학습 드루이드만 큰 배너로 한 번 더 알림. 비활성·비대상은 채팅 1줄만 출력.

---

## [2.5.0] - 2026-04-20

### Changed (BREAKING for the announce path)

- **Single, isolated announce path with on-screen RaidNotice**: Removed every announce call from the main `onEvent` (PLAYER_LOGIN / PLAYER_ENTERING_WORLD / talent-update branches). The login announce is now driven by **one dedicated frame at the bottom of the file** that:
  1. Listens for `PLAYER_LOGIN` and `PLAYER_ENTERING_WORLD`. Whichever fires first starts an `OnUpdate` poll.
  2. Polls `ptotTalentDataReady()` every 0.25 s. As soon as talent data is ready (or after a hard 5 s timeout), prints the announce line **once**.
  3. Outputs to **chat AND `RaidNotice_AddMessage(RaidWarningFrame, ...)`** simultaneously, so a giant centered on-screen banner appears no matter how spammy the chat is.
  4. Is fully independent from the main `onEvent`, so even if a helper there raises a silent error, the announce still fires.
- This eliminates the previous problem where multiple competing trigger paths (file-load timer, main onEvent timer, backup timers, talent-update handler) made it possible for the announce to be silently swallowed or buried under loading-time chat spam.

### Fixed

- **Announce buried under login-time chat spam**: Even when the announce was firing, in busy environments (LFG channel + many addon load lines + party/guild chat) the single chat line was easy to miss. The new RaidWarning popup makes it impossible to miss.

### 한글

- **안내 경로 단일화 + 화면 중앙 RaidNotice 추가**: 메인 `onEvent` (PLAYER_LOGIN / PLAYER_ENTERING_WORLD / 탤런트 갱신) 의 안내 호출을 모두 제거. 안내는 이제 파일 끝의 **전용 프레임 1개** 가 단독으로 처리:
  1. `PLAYER_LOGIN` 또는 `PLAYER_ENTERING_WORLD` 중 먼저 오는 이벤트로 `OnUpdate` 폴링 시작.
  2. 0.25 초 간격으로 `ptotTalentDataReady()` 검사. 준비되거나 5초 타임아웃 도달 시 **딱 1회** 출력.
  3. 출력은 **채팅 + `RaidNotice_AddMessage(RaidWarningFrame, ...)` 동시** — 화면 중앙에 큼지막한 빨간 배너로 떠서 채팅이 아무리 시끄러워도 절대 못 놓침.
  4. 메인 `onEvent` 와 완전 독립.
- 이로써 여러 경쟁 트리거(파일-로드 타이머, 메인 onEvent 타이머, 백업 타이머, 탤런트 갱신 핸들러)가 서로 가드를 침범하면서 안내가 묵살되던 구조적 문제 제거.

### 수정

- **로그인 직후 채팅 스팸에 묻혀 안내가 안 보이던 문제**: 안내 자체는 동작했더라도, LFG 채널·다수 애드온 로드 메시지·길드/파티 대화가 뒤섞이면 1줄짜리 채팅을 놓치기 쉬웠음. 화면 중앙 RaidWarning 배너로 절대 놓칠 수 없게 변경.

---

## [2.4.8] - 2026-04-20

### Fixed

- **Auto announce never appearing while `/platertot announce` works**: Confirmed the function and slash registration are both fine — the failure is the *auto trigger*. File-load-time `print()`s and timers were being silently dropped because the chat frame is not yet ready that early in the login pipeline.
  - Replaced the file-load-time boot block with a **dedicated CreateFrame that listens for both `PLAYER_LOGIN` and `PLAYER_ENTERING_WORLD`**. Whichever fires first is what we wait for; the other is then unregistered.
  - On that first event, prints a short diagnostic line (`v… 로드 — <event> 수신, 자동 안내 시도 시작`) so the user can immediately verify the trigger fired, then schedules announce attempts at +1s / +3s / +6s and a guaranteed fallback at +12s.
  - This handler is fully **independent of the main `onEvent`** — even if a helper inside the main handler raises a silent error, the announce path keeps running.

### 한글

- **`/platertot announce` 는 동작하는데 자동 안내만 안 떴던 문제**: 함수와 슬래시 등록은 모두 정상이었고, 진짜 원인은 *자동 트리거 경로* 였음. 파일-로드 시점의 `print()`/타이머는 채팅 프레임이 아직 준비되지 않아 메시지가 유실되는 환경이 있음.
  - 파일-로드 시점 부팅 블록을 제거하고, `PLAYER_LOGIN` 과 `PLAYER_ENTERING_WORLD` 둘 다를 리슨하는 **전용 `CreateFrame`** 을 둠. 둘 중 먼저 오는 이벤트만 받고 그 시점에 전체 안내 스케줄을 가동.
  - 그 첫 이벤트 시점에 진단용 1줄(`v… 로드 — <event> 수신, 자동 안내 시도 시작`)을 출력해 트리거 발화 자체를 사용자가 즉시 확인할 수 있게 함. 이어서 +1s / +3s / +6s 안내 시도 + +12s 최종 폴백 스케줄.
  - 이 핸들러는 메인 `onEvent` 와 **완전 독립** — 메인 핸들러 내부에서 silent error 가 발생해도 안내 경로는 살아 있음.

---

## [2.4.7] - 2026-04-20

### Fixed

- **Login announce never appearing for any class**: Re-introduced the boot-time chat line (printed the moment the Lua file finishes loading) so the user can immediately confirm the addon is loaded. Added a fan-out of safe-pcall announce attempts at +0.2s / +1.0s / +3.0s / +6.0s and a final unconditional fallback at +12.0s, so even if `PLAYER_LOGIN` / `PLAYER_ENTERING_WORLD` fail to trigger our handler (or a helper raises a silent error), at least one announce line is guaranteed.
- **Announce silently swallowed on helper error**: `printPTOTLoadAnnounce` now wraps `isPaladinProtSpec()`, `druidLearnedOmenOfClarity()` and `invalidateOCLearnedCache()` in `pcall`, builds the line first, and only sets the session guard **after** the chat write actually happens. Previously, an early error could mark the announce as "done" without ever printing.

### 한글

- **로드 안내가 어떤 직업으로도 1줄도 안 떴던 문제**: Lua 파일이 로드되는 즉시 1줄짜리 부팅 로그를 채팅창에 강제로 출력하도록 복구. 추가로 +0.2s / +1.0s / +3.0s / +6.0s 시점에 안전 `pcall` 안내 시도 + +12.0s 최종 폴백을 걸어서, `PLAYER_LOGIN`/`PLAYER_ENTERING_WORLD` 핸들러가 잡히지 않거나 헬퍼에서 silent error 가 나도 최소 1줄은 반드시 출력됨.
- **헬퍼 에러로 안내가 묵살되던 문제**: `printPTOTLoadAnnounce` 가 `isPaladinProtSpec()` / `druidLearnedOmenOfClarity()` / `invalidateOCLearnedCache()` 호출을 모두 `pcall` 로 감싸도록 변경. 메시지를 먼저 만들고 채팅창 출력이 실제로 일어난 **다음에야** 세션 가드를 세우도록 순서 교정 — 이전 버전에선 헬퍼가 에러를 던지면 가드만 세워지고 출력이 누락될 수 있었음.

---

## [2.4.6] - 2026-04-20

### Changed

- **Login announce — unconditional, single line for every class**: The load-time announce now prints exactly one line on every login, regardless of class or talents.
  - Paladin: `... 성기사 접속 확인 : 정의의 격노 경보 기능 활성화/비활성화 (보호 전문화 아님)`.
  - Druid: `... 드루이드 접속 확인 : 청명의 전조 경보 기능 활성화/비활성화 (청명의 전조 탤런트 미학습)`.
  - Other classes (warrior, mage, hunter, …): `... <한글 직업명> 접속 확인 : PlaterTOT 경보 모듈 대상 직업 아님` (gray).
- **Toggle status no longer mentioned**: The announce assumes both warning modules are always-on and only reports the spec / talent gate result. (Slash toggles still exist for power users but are not surfaced in the announce.)
- **Talent-data ready polling**: Login path now polls `DF:GetRoleByClassicTalentTree()` / talent-tab counts every 1 s (up to 15 s) before printing, so Protection paladins / Omen-of-Clarity druids are no longer mis-reported as inactive due to data not being populated yet at PLAYER_LOGIN.

### Fixed

- **Protection paladin reported as inactive at login**: Caused by `DF:GetRoleByClassicTalentTree()` returning `NONE` before the talent tree was populated. The new polling loop waits for talent data and re-evaluates before printing.

### 한글

- **접속 안내 — 모든 직업에 무조건 1줄 출력**: 로드 안내가 이제 직업·탤런트와 무관하게 접속할 때 정확히 1줄을 출력함.
  - 성기사: `... 성기사 접속 확인 : 정의의 격노 경보 기능 활성화/비활성화 (보호 전문화 아님)`.
  - 드루이드: `... 드루이드 접속 확인 : 청명의 전조 경보 기능 활성화/비활성화 (청명의 전조 탤런트 미학습)`.
  - 그 외 직업(전사·마법사·사냥꾼 등): `... <한글 직업명> 접속 확인 : PlaterTOT 경보 모듈 대상 직업 아님` (회색).
- **토글 상태는 안내에 포함하지 않음**: 두 경보 모듈을 항상 ON 으로 가정하고, 전문화/탤런트 충족 여부만 보고. (슬래시 토글은 그대로 존재하지만 안내에는 노출 안 됨.)
- **탤런트 데이터 준비 폴링 도입**: 접속 시 `DF:GetRoleByClassicTalentTree()` 와 탤런트 탭 수를 1초 간격으로 최대 15초 폴링한 뒤 출력. PLAYER_LOGIN 시점에 탤런트가 아직 채워지지 않아 보호 성기사가 "비활성화"로 잘못 표시되던 문제 해결.

### 수정

- **보호 성기사가 접속 시 비활성화로 표시되던 버그**: PLAYER_LOGIN 시점엔 `DF:GetRoleByClassicTalentTree()` 가 `NONE` 을 돌려주는 탓이었음. 새 폴링 루프가 탤런트가 채워질 때까지 기다린 뒤 평가/출력하도록 수정.

---

## [2.4.5] - 2026-04-20

### Changed / Fixed

- 채팅창 출력 안정화 및 진단 보강. `print()` 대신 `DEFAULT_CHAT_FRAME:AddMessage()` 사용, 부팅 시점 1줄 로드 로그, `/platertot announce` 강제 출력 명령, PLAYER_ENTERING_WORLD 백업 트리거(2.5s/5.0s) 추가.

---

## [2.4.4] - 2026-04-20

### Changed

- **Load-time announce — class-confirmation format**: Replaced the multi-line "loaded" header + bullet list with a single clear class-confirmation line per applicable class:
  - Paladin login → `[PlaterTOT] 성기사 접속 확인 : 정의의 격노 경보 기능 활성화` (green) or `... 비활성화 (사유)` (red).
  - Druid login → `[PlaterTOT] 드루이드 접속 확인 : 청명의 전조 경보 기능 활성화` (green) or `... 비활성화 (사유)` (red).
  - Active = user toggle ON **and** spec/talent gate satisfied (Prot for RF, OoC learned for OC).
  - Inactive lines include the concrete reason and the slash command to flip the toggle, so the user immediately knows whether it is the toggle, the spec, or the talent that is missing.
  - Other classes (warrior, mage, etc.) print nothing — neither module applies to them.

### 한글

- **로드 안내 — 클래스 접속 확인 형식**: 여러 줄짜리 헤더+불릿 목록을 클래스별 1줄 접속 확인 메시지로 대체.
  - 성기사 접속 → `[PlaterTOT] 성기사 접속 확인 : 정의의 격노 경보 기능 활성화` (초록) 또는 `… 비활성화 (사유)` (빨강).
  - 드루이드 접속 → `[PlaterTOT] 드루이드 접속 확인 : 청명의 전조 경보 기능 활성화` (초록) 또는 `… 비활성화 (사유)` (빨강).
  - 활성 = 사용자 토글 ON **및** 전문화/탤런트 조건 충족(보호 성기사 / 청명의 전조 학습).
  - 비활성 사유 + 토글 명령을 함께 표시 — 토글 문제인지, 전문화 문제인지, 탤런트 미학습인지 즉시 구분 가능.
  - 그 외 직업은 아무 것도 출력하지 않음.

---

## [2.4.3] - 2026-04-20

### Changed

- **Load-time announce — character-targeted only**: The 2.4.2 announce printed the status of *all* warning modules regardless of the current character. Now it prints **only the modules that actually apply** to the logged-in character, and prints **nothing at all** when neither applies:
  - Protection Paladin → "정의의 격노 경보 기능 로딩됨" line only.
  - Druid with Omen of Clarity learned → "청명의 전조 경보 기능 로딩됨" line only.
  - Both → both lines.
  - Neither → no header, no lines.
- The session guard is **only** set when at least one line was printed, so a later talent/dual-spec switch that newly enables RF or OC will trigger the announce on the next eligibility transition.
- Hooked the announce into the talent/spell change events (`PLAYER_TALENT_UPDATE`, `CHARACTER_POINTS_CHANGED`, `ACTIVE_TALENT_GROUP_CHANGED`, `SPELLS_CHANGED`, `LEARNED_SPELL_IN_TAB`) so the message appears the moment the character becomes eligible.

### 한글

- **로드 안내 — 해당 캐릭터에게만 표시**: 2.4.2 까지는 캐릭터와 무관하게 두 모듈 상태를 모두 출력했음. 이제 **현재 캐릭터에 실제로 적용되는 모듈만** 출력, 둘 다 비대상이면 헤더 포함 아무 것도 출력하지 않음.
  - 보호 성기사 → "정의의 격노 경보 기능 로딩됨" 한 줄만
  - 청명의 전조 학습한 드루이드 → "청명의 전조 경보 기능 로딩됨" 한 줄만
  - 둘 다 → 두 줄
  - 어느 쪽도 아님 → 출력 없음
- 한 줄이라도 출력했을 때만 세션 가드 플래그를 세움. 즉 나중에 탤런트를 새로 찍거나 이중 특성을 보호/청명의 전조 트리로 전환하면 그 순간 안내가 뜸.
- 탤런트/스펠북/이중 특성 변경 이벤트에도 안내 호출을 연결.

---

## [2.4.2] - 2026-04-20

### Added

- **Load-time announce in chat**: After `PLAYER_LOGIN` (delayed 2s so talent/spell tables are fully populated), PlaterTOT prints a one-line summary plus per-module status:
  - Header: `PlaterTOT vX.Y.Z 로드 — 경보 모듈 로딩됨`
  - Righteous Fury line: toggle (`ON`/`OFF`) and current applicability (`보호 성기사 → 활성` / `성기사이지만 보호 아님 → 비활성` / `비-성기사 → 비활성`).
  - Omen of Clarity line: toggle and current applicability (`드루이드 + 청명의 전조 학습 → 활성` / `드루이드이지만 청명의 전조 미학습 → 비활성` / `비-드루이드 → 비활성`).
  - A short tip with the four toggle/diagnostic slash commands.
  - Guarded by a session flag so subsequent `/reload` re-fires of `PLAYER_LOGIN`/`PLAYER_ENTERING_WORLD` do not double-print.

### 한글

- **로드 시 채팅 안내 출력 추가**: `PLAYER_LOGIN` 후 2초 (탤런트/스펠북 안정화 시점) 에 한 번만 채팅창에 모듈 상태를 출력합니다.
  - 헤더: `PlaterTOT vX.Y.Z 로드 — 경보 모듈 로딩됨`
  - 정의의 격노 경보: 토글 ON/OFF + 현재 클래스/전문화 기준 활성 여부
  - 청명의 전조 경보: 토글 ON/OFF + 드루이드 여부 + **탤런트 학습 여부** 까지 반영
  - 슬래시 명령 4개 (`/platertot rf on|off`, `/platertot oc on|off`, `rf debug`, `oc debug`) 안내 한 줄
  - 세션 플래그로 중복 출력 차단 — `/reload` 후에도 1회만.

---

## [2.4.1] - 2026-04-20

### Fixed

- **OC warning false positive on non-OoC druid builds**: The 2.4.0 OC warning fired for **any** Druid even if the player had not actually learned **Omen of Clarity** (e.g. early-leveling druids, pure Feral/Balance specs without OoC). Now gated by `druidLearnedOmenOfClarity()`:
  - Primary: `IsPlayerSpell(16864)` / `IsSpellKnown(16864)`.
  - Fallback: scans the talent tabs (`GetTalentInfo`) for an entry whose name matches "청명의 전조" / "Omen of Clarity" with `currentRank > 0` (covers Classic builds where `IsPlayerSpell` does not report passive talent ranks).
  - Cached; invalidated on `PLAYER_TALENT_UPDATE`, `CHARACTER_POINTS_CHANGED`, `ACTIVE_TALENT_GROUP_CHANGED` (dual spec), `SPELLS_CHANGED`, `LEARNED_SPELL_IN_TAB`, and on each `PLAYER_LOGIN` / `PLAYER_ENTERING_WORLD`.
- `/platertot oc debug` now also reports `learnedOC=`, `IsPlayerSpell=`, `IsSpellKnown=` so missing detection paths can be diagnosed quickly.

### 한글

- **수정**: 2.4.0 의 청명의 전조 경고가 **드루이드면 무조건** 떴던 문제. 야성/조화 위주 등 OoC 를 학습하지 않은 빌드/저레벨 드루이드에서도 "OFF" 가 떠버렸음. 이제 학습 여부를 `druidLearnedOmenOfClarity()` 로 검사하여 학습한 경우에만 경고 표시.
  - 1차: `IsPlayerSpell(16864)` / `IsSpellKnown(16864)`.
  - 폴백: `GetTalentInfo` 로 탤런트 트리를 훑어 "청명의 전조" / "Omen of Clarity" 이름 + `currentRank > 0` 매칭 (패시브 탤런트가 IsPlayerSpell 에 잡히지 않는 클래식 빌드 대비).
  - 캐시 사용. 탤런트/스펠북/이중 특성 변경 이벤트와 로그인/필드 진입 시 자동 무효화.
- `/platertot oc debug` 가 학습 여부 + IsPlayerSpell/IsSpellKnown 결과까지 함께 출력.

---

## [2.4.0] - 2026-04-20

### Added

- **Omen of Clarity (청명의 전조) warning for Druids**
  - When the player is a Druid and Omen of Clarity is **off**, a large red pulsing text **"청명의 전조 OFF"** is displayed below the RF warning slot (top center, offset `-180`) so it never overlaps the Paladin RF warning.
  - When the buff has **less than 3 minutes** remaining, the text changes to a yellow countdown (e.g., "청명의 전조 2분 30초") without pulsing.
  - The same default **raid warning** UI sound (`SOUNDKIT.RAID_WARNING`, fallback `8959`) plays every **5 seconds** while OC is off — no sound while dead/ghost.
  - Detection: spell ID **16864** primary, with name fallback for "청명의 전조" / "Omen of Clarity" so build-specific ID variants still match.
  - Active for **all Druid specs** (no spec/talent gating). Auto-disabled for non-Druid classes.
  - Toggle: `/platertot oc on` or `/platertot oc off`.
  - Diagnostics: `/platertot oc debug` — prints class / detection state and dumps any matching player buff slot (id + name) so unknown spell-ID variants can be identified.

### Changed

- Status line (`/platertot`) now also reports **OC warn: ON/OFF**.
- Internal: shared `playPTOTWarningSound = playRFFuryWarningSound` so the OC warning reuses the exact same sound code path as RF (single source of truth, no duplicated sound logic).

### 한글

- **드루이드 청명의 전조 꺼짐 경고 추가**
  - 드루이드일 때 청명의 전조가 꺼져 있으면 화면 상단 중앙(RF 경고 아래, `-180` 위치)에 빨간색 깜빡이는 **"청명의 전조 OFF"** 텍스트 표시. RF 경고와 위치가 겹치지 않음.
  - 남은 시간이 3분 이내면 노란색 카운트다운 표시(예: "청명의 전조 2분 30초").
  - 꺼진 동안 5초마다 RF 와 동일한 기본 공격대 경보 사운드 재생. 사망·유령 상태에서는 사운드 없음.
  - 감지: spell ID **16864** 우선, 빌드별 ID 차이 대비로 "청명의 전조" / "Omen of Clarity" 이름 매칭 폴백.
  - **모든 드루이드 전문화**에서 작동(전문화 체크 없음). 다른 직업에서는 자동 비활성.
  - `/platertot oc on|off` 로 켜기/끄기, `/platertot oc debug` 로 상태 확인 + 매칭된 버프 슬롯(id, 이름) 덤프.

### 변경

- 상태줄(`/platertot`) 에 **OC warn: ON/OFF** 추가 표시.
- 내부: `playPTOTWarningSound` 별칭으로 RF 사운드 함수를 OC 가 그대로 재사용 — 사운드 로직 중복 없음.

---

## [2.3.1] - 2026-04-03

### Changed

- **Righteous Fury off warning sound**: Replaced custom `rf_warning2.mp3` with the default UI **raid warning** sound (`SOUNDKIT.RAID_WARNING` when available, fallback sound kit `8959`). **No sound while dead or ghost**; the on-screen **"정의의 격노 OFF"** text still shows, and sounds resume after resurrection when RF is still off.

### 한글

- **정의의 격노 꺼짐 알림음**: 커스텀 mp3 대신 **기본 공격대 경보** 계열(`SOUNDKIT.RAID_WARNING`, 없으면 `8959`). **죽음·유령 상태에서는 소리 없음**, 경고 문구만 표시. 부활 후에도 격노가 꺼져 있으면 다시 주기적으로 재생.

---

## [2.3.0] - 2026-04-02

### Added
- **Righteous Fury (정의의 격노) warning for Protection Paladin**
  - When the player is a Protection Paladin (detected via `DF:GetRoleByClassicTalentTree()`) and Righteous Fury is **off**, a large red pulsing text **"정의의 격노 OFF"** is displayed at the top center of the screen.
  - When Righteous Fury has **less than 3 minutes** remaining, the text changes to a yellow countdown (e.g., "정의의 격노 2분 30초") without pulsing.
  - A default **raid warning** UI sound plays every **5 seconds** while Righteous Fury is off (no custom mp3).
  - The warning is automatically disabled for non-Protection Paladins (Holy, Retribution) and non-Paladin classes.
  - Toggle on/off via `/platertot rf on` or `/platertot rf off`.
  - Debug info available via `/platertot rf debug`.

### 한글
- **보호 성기사 정의의 격노 꺼짐 경고 추가**
  - 보호 전문화 성기사일 때 정의의 격노가 꺼져 있으면 화면 상단 중앙에 빨간색 깜빡이는 **"정의의 격노 OFF"** 텍스트 표시.
  - 정의의 격노 남은 시간이 3분 이내이면 노란색 카운트다운 표시 (예: "정의의 격노 2분 30초").
  - 정의의 격노가 꺼진 동안 5초마다 기본 공격대 경보 계열 효과음 재생.
  - 신성/징벌 성기사 및 다른 직업에서는 자동 비활성.
  - `/platertot rf on|off` 로 켜기/끄기, `/platertot rf debug` 로 상태 확인 가능.

---

## [2.2.14] - 2026-03-09

### Fixed

- **Auto “Tank Threat Colors” looked like DPS** – Plater could leave **`Plater.PlayerIsTank` false** on some clients even when **`tank_threat_colors`** was **true** (profile matched but threat palette stayed DPS). **`syncPlaterTankThreatColors`** no longer returns early when the profile already matches; after **`RefreshTankCache`**, if we want tank colors and **`PlayerIsTank`** is still false, we set **`PlayerIsTank = true`** and call **`UpdateAllNameplateColors`** when needed.

### 한글

- **탱 위협 색 자동 맞춤이 딜 색처럼 보임** – 프로필 **`tank_threat_colors`** 는 맞는데 Plater가 **`PlayerIsTank`** 를 안 올리는 경우가 있어 위협 색이 딜 팔레트로 남던 문제. 프로필이 이미 맞아도 동기화 루틴을 돌리고, 필요 시 **`PlayerIsTank`** 보정 후 이름표 색 갱신.

---

## [2.2.13] - 2026-03-09

### Changed

- **TOT (`T : …`) bar height** – Default **`totBarHealthFraction`** is now **`0.80`** (80% of Plater **threat/health bar** height). Slash **`tot fraction`** allows **12%–92%** (was capped at 65%). Existing SavedVariables keep their value; use **`/platertot tot fraction 80`** to match.
- **Nameplate mana fill** – Back to **mana blue** (`GetColorForPowerType` / `PowerBarColor.MANA`, fallback `0.25, 0.55, 1`). **Thin white 1px border** (four `OVERLAY` lines, sublevel 6) on both the **in-health** mana strip frame and the **auxiliary** strip frame so the bar reads on threat-colored health.

### 한글

- **TOT 막대** – 기본 높이 **체력(위협)바의 80%**. `tot fraction` 허용 **12~92%**. 예전 저장값 유지 시 **`tot fraction 80`**.
- **마나 띠** – 채움 **마나 파랑** 복원, **1px 흰 테두리**(안쪽 스트립·보조 띠 공통).

---

## [2.2.12] - 2026-03-09

### Fixed

- **Yellow fixed mana strip / bar not moving** – **`mana mdebug`** used to draw a **yellow, ~45% width** fill and **return early**, so the bar **never tracked real mana** and looked “stuck.” That debug overlay is **removed**; mdebug now only toggles the **status line** flag (`/platertot`). Mana strips use the **same white, live fill** as normal.
- **Smoother updates** – Added **`pollNameplateManaBars()`** every **~0.05s** (in addition to power events and the 0.15s TOT loop) so nameplate mana **cur/max** refresh even when **`UNIT_POWER_*`** fires rarely.
- **White inner bar** – **`applyManaBarColor`** now sets both **texture vertex color** and **`SetStatusBarColor(1,1,1)`** so the fill stays white.

### 한글

- **노란색·고정 마나바** – **`mana mdebug`** 가 켜져 있으면 예전에 **노란색·약 45% 고정** 띠만 그리고 **실제 마나 갱신을 막았음**. 그 **시각 디버그 제거**; mdebug는 **`/platertot` 상태줄 표시용**만. 마나 띠는 항상 **흰색·실제 비율**.
- **갱신** – **`UNIT_POWER`** 가 드문 빌드 대비 **약 0.05초마다** 이름표 마나 폴링.
- **흰색** – StatusBar에 **`SetStatusBarColor`** 도 적용.

---

## [2.2.11] - 2026-03-09

### Fixed

- **Nameplate mana fill stuck / wrong % (e.g. ~40%)** – `updateManaBarFillForUnit` could mix **`UnitPower(..., nil)`** with a fallback **`maxp = 1`**, producing nonsense ratios. Mana is now read with **`getNameplateUnitManaCurMax`**: try **`UnitPower` / `UnitPowerMax` on the same power slot** in order **mana index `0` → `Enum.PowerType.Mana` → `nil`**, never mixing slots. Removed the **`maxp = 1`** clamp; if max cannot be read, the bar update is skipped.

### 한글

- **이름표 마나 바 % 고정(약 40% 등)** – `nil`로 읽은 값과 `maxp = 1` 폴백이 섞이면 비율이 깨짐. **`getNameplateUnitManaCurMax`**로 **같은 파워 슬롯**에서 cur/max를 함께 읽고, 순서는 **0 → Enum.Mana → nil**. **`maxp = 1` 강제 제거**; max를 못 읽으면 갱신 생략.

---

## [2.2.10] - 2026-03-09

### Changed

- **Mana strip smoothness** – Refresh auxiliary strip and in-bar mana on **`UNIT_POWER_FREQUENT`** and **`UNIT_MAXPOWER`** (in addition to `UNIT_POWER_UPDATE`), so fill tracks current/max mana closer to real-time on ticks and channeling. Unsupported events are skipped via `pcall` on register.

### 한글

- **마나 띠 갱신** – `UNIT_POWER_UPDATE` 외에 **`UNIT_POWER_FREQUENT`**, **`UNIT_MAXPOWER`**에서도 보조 띠·체력바 안쪽 마나를 갱신해 틱·채널링 등에서 현재/최대 마나에 더 가깝게 따라감. 클라이언트에 없는 이벤트는 등록 시 `pcall`로 건너뜀.

---

## [2.2.9] - 2026-03-09

### Fixed

- **Non-mana units still showing a strip** – `plateUnitHasMana` no longer treats NPCs as mana when only power slot 0 had a max, and no longer guesses mana from enemy **class**. It now returns true only when **`UnitPowerType` is mana** (token/`0`/`Enum.PowerType.Mana`) **and** `UnitPowerMax(unit) > 0` for the primary resource.
- **`mana mdebug`** – Yellow test strip only on **mana** nameplates (same rule), so warriors etc. stay clean while debugging.

### 한글

- **비마나에도 띠가 보이던 문제** – 슬롯 0만 보고 NPC를 마나로 보던 분기·적 직업 추정을 제거. **`UnitPowerType`이 마나**이고 **주 자원** `UnitPowerMax(unit) > 0`일 때만 참.
- **`mana mdebug`** – 노란 테스트 띠는 **마나 이름표에만** (전사 등은 디버그 중에도 깨끗하게).

---

## [2.2.8] - 2026-03-09

### Changed

- **Auxiliary mana strip** – Shown **only for mana units** (no more health-based green fallback for rage/energy/etc.).
- **Mana fill color** – In-health mana bar and auxiliary strip use **white** fill so the bar stays visible on Plater **threat-tinted** health bars (replaces blue/mana power color).

### 한글

- **보조 띠** – **마나 유닛만** 표시(분노·기력 등 체력 초록 대체 제거).
- **마나 채움 색** – 안쪽 마나·보조 띠 채움 **흰색**(Plater **위협색** 체력바와 겹쳐도 보이도록, 예전 파랑/파워 색 대체).

---

## [2.2.7] - 2026-03-09

### Changed

- **TOT (`T : …`) bar height** – No longer a fixed pixel height; it scales as **`Plater health bar height × totBarHealthFraction`**. New saved default **`totBarHealthFraction = 0.36`** (~36%). Allowed range **12%–65%** via **`/platertot tot fraction 0.36`** or **`/platertot tot fraction 36`** (percent when `> 1`). Status line (`/platertot` / `tt`) shows the current percent. Target-highlight neon strips follow the bar height when Plater’s profile height is unset (stored refs updated each tick when TOT is visible).

### 한글

- **TOT 막대 높이** – 고정 픽셀 대신 **`Plater 체력바 높이 × totBarHealthFraction`**. 저장 기본 **0.36**(약 36%). **`/platertot tot fraction 0.36`** 또는 **`36`**(1 초과면 퍼센트). 상태 줄에 현재 % 표시. Plater 네온 하이라이트는 프로필 높이 없을 때 막대 높이에 맞춤.

---

## [2.2.6] - 2026-03-09

### Changed

- **TOT (`T : …`) bar** – Bar height reduced from **14px to 12px**; anchor offset adjusted so the label stays aligned with the health bar top. Plater target-highlight neon default height follows the bar when profile height is unset.

### 한글

- **TOT 막대** – 높이 **14px → 12px**, 앵커 조정으로 체력바 상단과 정렬 유지. 네온 기본 높이도 막대에 맞춤.

---

## [2.2.5] - 2026-03-09

### Changed

- **Thinner default mana strip** – Default **`nameplateManaHealthFraction`** is now **`0.90`** (~**10%** of health bar height for the bottom strip, was ~20% at `0.80`). Slash **`mana fraction`** max raised to **`0.95`** (~5% strip). Existing SavedVariables unchanged; use `/platertot mana fraction 0.90` (or up to `0.95`) to match.

### 한글

- **더 얇은 기본 마나 띠** – 기본 **`nameplateManaHealthFraction` = `0.90`**(하단 약 10%, 예전 0.80은 약 20%). 슬래시 상한 **0.95**(약 5%). 기존 저장값은 유지; 맞추려면 `/platertot mana fraction 0.90` 등.

---

## [2.2.4] - 2026-03-09

### Fixed

- **Mana strip draw order** – Plater’s center health text (`lifePercent`) uses **OVERLAY sublevel 5**. Mana strip textures were also on OVERLAY **5 / 8**, so they could paint on top of the numbers. Strips now use **OVERLAY 2 (background) and 4 (fill)**, i.e. between the health bar fill and the percent text. Auxiliary mini-strip aligned; **FrameLevel** for these frames lowered slightly since ordering is handled by draw layer.

### 한글

- **마나 띠 그리기 순서** – Plater 가운데 체력 수치는 **OVERLAY 5**. 마나 띠가 **5/8**이라 수치를 가릴 수 있어 **배경 2·채움 4**로 조정(체력 채움과 수치 사이). 보조 띠 동일. **FrameLevel**은 약간 낮춤.

---

## [2.2.3] - 2026-03-09

### Changed

- **Mana / auxiliary strip height** – Uses **`(1 - nameplateManaHealthFraction) × health bar height`**, no extra 8–16px clamp on the auxiliary strip. Default **`nameplateManaHealthFraction` is now `0.80`** (new saves) so the strip is **~20%** of Plater health bar height. Existing SavedVariables keep their value; use `/platertot mana fraction 0.80` to match.

### 한글

- **마나·보조 띠 높이** – **`(1 - 비율) × 체력바 높이`**, 보조 띠 **8~16px** 캡 제거. 신규 저장 기본 **0.80**(하단 약 20%). 기존 값 유지; 맞추려면 `mana fraction 0.80`.

---

## [2.2.2] - 2026-03-09

### Changed

- **Auxiliary mini-strip (ex-`M :` label)** – Text removed; only the **background + fill bar** remains (full usable width of the health bar band). Mana = blue fill %, non-mana health fallback = green fill %. **`mana mdebug`** shows a **yellow partial fill** with no text.

### 한글

- **보조 미니 띠** – 텍스트 제거, **배경+채움**만(대역 전폭). (당시) 마나=파랑 %, 비마나=체력 초록 %. **`mdebug`** 노란 부분 채움.

---

## [2.2.1] - 2026-03-09

### Changed

- **`M :` mini-bar placement** – Anchored **inside** the threat-colored health bar on **`FrameOverlay`**: bottom band (~25% of bar height, max 16px), with **OVERLAY** textures and high **FrameLevel**, so it no longer sits under the nameplate name. When the **in-bar mana strip** is active for a mana unit, the **`M :` label hides** to avoid stacking the same info in the same band (health-fallback `M :` for non-mana units unchanged).

### 한글

- **`M :` 미니바 위치** – **`FrameOverlay`** 안 체력바 하단 밴드, **OVERLAY**·높은 **FrameLevel**. 안쪽 마나 띠 켜진 마나 유닛에서는 **M : 숨김**(중복 방지).

---

## [2.2.0] - 2026-03-09

### Changed

- **Mana strip layering & placement** – Parent the in-health mana strip to Plater’s **`healthBar.FrameOverlay`** when present so it sits above the threat-colored health fill; **`SetFrameLevel`** raised (`base + 85`), textures use **OVERLAY sublevels 5 (bg) / 8 (fill)** so they draw above Plater’s typical overlay-7 elements. **1px insets** on left/right/bottom to align with the visible bar. Bottom **25%** height still follows `nameplateManaHealthFraction` (default `0.75`).

### 한글

- **안쪽 마나 띠** – **`FrameOverlay`** 부모, 위협색 체력 채움 위. **FrameLevel**, **OVERLAY 5/8**, **1px** 인셋. 높이는 `nameplateManaHealthFraction`(당시 기본 0.75).

---

## [2.1.9] - 2026-03-09

### Changed

- **M : mini-label** – If the unit is **not** classified as mana for the strip, the same **`M : cur/max`** line shows **health** instead (green fill vs blue mana fill) so you can verify the widget on any hostile nameplate. Enemy-only filter unchanged. Inner mana overlay on the health bar still only applies to mana units.

### 한글

- **M : 라벨** – 스트립 기준 비마나면 **체력 cur/max** 표시(초록 vs 파랑). 적만 필터 동일. 안쪽 마나 오버레이는 마나만.

---

## [2.1.8] - 2026-03-09

### Fixed

- **`mana mdebug`** no longer requires **`showNameplateManaBar`** ON (debug label can show while mana strip is off).

### 한글

- **`mana mdebug`** – **`showNameplateManaBar`** 꺼져 있어도 디버그 표시 가능.

---

## [2.1.7] - 2026-03-09

### Fixed

- **M label never updating** – `/reload` or missed `NAME_PLATE_UNIT_ADDED` could leave `unitToPlate` empty so the TOT/M loop never ran. Added **`syncNameplatesToPlaterTOT()`** (scan `C_NamePlate.GetNamePlates()`, refill `unitToPlate`, ensure TOT + M widgets, refresh M) on **PLAYER_ENTERING_WORLD** (0.1s + 0.6s), **PLAYER_LOGIN**, **NAME_PLATE_UNIT_ADDED**, **`mana on` / `mana refresh`**, and immediate refresh after creating the M frame.
- **Mana detection vs ElvUI target** – Relaxed **`plateUnitHasMana`**: `tonumber(powerType)==0`, case-insensitive **MANA** token, **`UnitPowerMax(unit,0)>0`** (NPC nameplates), and **WotLK mana classes** for enemy players if the nameplate API is wrong.

### Added

- **`/platertot mana mdebug on|off`** – Yellow **`M : powerType|token|m0=…`** on hostile nameplates (ignores strict mana match) to see raw API values. Status line shows **M debug: ON/OFF**.

### 한글

- **M 라벨 안 갱신** – `unitToPlate` 비었을 때 **`syncNameplatesToPlaterTOT()`**로 전체 이름표 스캔·동기화(진입/로그인/추가/명령 등).
- **마나 판별 완화** – (당시) NPC·직업 추정 등으로 ElvUI 타겟과 맞춤.
- **`mana mdebug`** – 적 이름표에 API 원시값 노란 표시.

---

## [2.1.6] - 2026-03-09

### Added

- **Mana mini-bar label (TOT-style)** – When nameplate mana is enabled and the unit qualifies, shows **`M : current/max`** under the health bar with the same mini-bar look as **`T : …`** (Plater health textures, blue fill for mana %). Easier to see whether mana detection is active.

### 한글

- **마나 미니바 라벨** – 조건 충족 시 **`M : 현재/최대`**, TOT와 같은 Plater 텍스처·파란 채움.

---

## [2.1.5] - 2026-03-09

### Fixed

- **Mana strip invisible** – Match **TOT**: parent the mana container to **`healthBar`** (not `FrameOverlay`). Use **OVERLAY** draw layers for background + status bar texture so Plater’s health fill does not paint on top of a BACKGROUND-layer strip.

### 한글

- **마나 띠 안 보임** – TOT처럼 **`healthBar`** 부모, **OVERLAY** 레이어로 체력 채움 아래에 가리지 않게.

---

## [2.1.4] - 2026-03-09

### Changed

- **Nameplate mana layout (ElvUI-like)** – Mana is drawn **inside** the Plater health bar on the **bottom ~25%** (when `nameplateManaHealthFraction` is `0.75`), parented to **`healthBar.FrameOverlay`** so it paints **above** the health textures. **Removed `customHealthBarHeight`** splitting (avoids clipping / invisible strips below the bar). Cast bar stays on Plater’s default anchor (under the full health bar).

### Fixed

- **`UpdatePlateSize` hook** – If `actorType` or plate config was missing, the old mana UI could stick; now **`clearManaBarOverride`** runs in those cases.

### 한글

- **이름표 마나 레이아웃** – 체력바 **안쪽 하단** ~25%, **`FrameOverlay`**. **`customHealthBarHeight`** 분할 제거. 시전바는 Plater 기본.
- **훅** – 설정 없을 때 **`clearManaBarOverride`** 로 잔상 제거.

---

## [2.1.3] - 2026-03-09

### Fixed

- **Nameplate mana not visible** – Nameplate units often report `UnitPowerMax` as **0** until later; if `UnitPowerType` is mana we still show the strip. **StatusBar** always gets a fallback texture (`UI-StatusBar`) and explicit `Show()`, higher frame level so it isn’t hidden under Plater’s power bar.
- **Layout timing** – After `NAME_PLATE_UNIT_ADDED`, deferred `UpdatePlateSize`; on `PLAYER_ENTERING_WORLD`, refresh all Plater plates after a short delay.

### Changed

- **Default `nameplateManaEnemiesOnly`** is now **false** for new saves (friendly mana units / dummies); existing SavedVariables unchanged.

### Added

- Slash: **`/platertot mana refresh`** (모든 이름표 `UpdatePlateSize` 재실행), **`/platertot mana debug`** (현재 대상의 파워 타입·max·표시 여부 출력).

### 한글

- **이름표 마나 안 보임** – `UnitPowerMax` 늦게 오는 경우에도 마나 타입이면 스트립 표시. **StatusBar** 기본 텍스처·표시·프레임 레벨.
- **레이아웃 타이밍** – 유닛 추가 후 지연 `UpdatePlateSize`, 맵 진입 후 전체 갱신.
- **기본 `nameplateManaEnemiesOnly`** – 신규 저장 **false**(아군·허수아비 테스트).
- **슬래시** – `mana refresh`, `mana debug`(대상 파워 정보).

---

## [2.1.2] - 2026-03-09

### Changed

- **Nameplate mana fill** – Uses a **StatusBar** with `SetMinMaxValues` / `SetValue` and `pcall(UnitPower, unit, displayType)` / `UnitPowerMax`, matching **oUF Power / ElvUI** style updates instead of resizing a texture by width.

### 한글

- **마나 채움** – **StatusBar** + `SetValue`로 갱신(oUF/ElvUI 스타일), 텍스처 너비 조절 대신.

---

## [2.1.1] - 2026-03-09

### Fixed

- **Nameplate mana detection** – Match ElvUI-style `UnitPowerType` handling: use power **token** `"MANA"` and numeric `0` (and `Enum.PowerType.Mana` when it matches), not `Enum` alone. Fixes mana users not showing a bar when the first return value didn’t match `Enum.PowerType.Mana`.

### 한글

- **이름표 마나 판별** – 토큰 **`"MANA"`**, 숫자 **0**, `Enum.PowerType.Mana` 병행(`Enum`만으로 판별하던 문제 수정).

---

## [2.1.0] - 2026-03-09

### Added

- **Nameplate unit mana strip (Plater not modified)** – For units with mana (`UnitPowerType` mana & `UnitPowerMax` > 0), uses Plater’s `unitFrame.customHealthBarHeight` so the health bar uses a fraction of the configured height (default **75%**), and draws a **PlaterTOT mana bar** in the remaining band under the health bar. **Cast bar is re-anchored** below that strip (same offsets Plater would use from the health bar) so it does not overlap.
- **Saved:** `showNameplateManaBar` (default on), `nameplateManaHealthFraction` (default `0.75`), `nameplateManaEnemiesOnly` (default on).
- **Slash:** `/platertot mana on|off`, `mana fraction 0.75` (0.5–0.92), `mana enemiesonly on|off`. Status line (`/platertot` / `tt`) includes mana settings.
- **Updates:** `UNIT_POWER_UPDATE` + throttled TOT loop refresh the mana fill.

### Technical

- `hooksecurefunc(Plater, "UpdatePlateSize", …)` after Plater lays out each plate; one recursive `UpdatePlateSize` when applying the height split (guarded against re-entrancy).

### 한글

- **이름표 마나 스트립** – 마나 유닛에 `customHealthBarHeight`로 체력 **75%** 등 분할, 아래 밴드에 마나 바. 시전바 **재앵커**.
- **저장·슬래시·갱신** – 위 영문과 동일(당시 `mana fraction` 상한 0.92).

### 기술

- `hooksecurefunc(Plater, "UpdatePlateSize", …)`, 재진입 방지.

---

## [2.0.0] - 2026-03-09

### Added

- **Auto “Use Tank Threat Colors”** – On non-Retail clients, syncs `Plater.db.profile.tank_threat_colors` from role/talents/class signals so you don’t toggle Plater’s option by hand. **Does not modify Plater files**; survives Plater updates unless Plater removes/changes those APIs.
- **Saved setting** `PlaterTOTDB.autoTankThreatColors` (default on), `## SavedVariables: PlaterTOTDB` in TOC.
- **Slash:** `/platertot tankthreat on|off|status` (short: `tt on|off`).

### Changed

- **Release** – **2.0.0** (major version bump from 1.x).
- Sync runs on **all Classic** (including **WotLK / Mists / 20th Anniversary**); earlier logic skipped WotLK/MoP so the option never updated there.
- **Warrior:** `GetTalentGroupRole` / party role first; then Details!Framework `GetRoleByClassicTalentTree` for Protection; then defensive stance (form 18), shield (not Gladiator 24).
- **Paladin:** Righteous Fury buff spell IDs **25780** / **407627** when role APIs are empty.
- **Druid:** Bear / Dire Bear only (`GetShapeshiftFormID` **5** / **8**); any non-bear form forces DPS mode for this option (cat, caster, travel, etc.).

### Fixed

- **SavedVariables:** `PlaterTOTDB` must be global (was `local`, so settings could fail to persist).
- **MoP:** Removed reliance on undefined `IS_WOW_PROJECT_CLASSIC_MOP` global.
- **Druid form switch:** Some builds don’t fire `UPDATE_SHAPESHIFT_FORM` reliably; **poll `GetShapeshiftFormID` on the existing throttled OnUpdate** (~0.15s) so bear ↔ cat updates the checkbox.
- **UNIT_AURA** throttling (~0.4s) for RF/other auras; immediate sync on equipment, shapeshift event, group, entering world, login (delayed 1.5s).

### 한글

- **탱 위협 색 자동** – 비리테일에서 `tank_threat_colors` 동기화. **Plater 파일 미수정**. 저장·슬래시 동일.
- **변경** – 2.0.0, WotLK·MoP·20주년 포함 클래식 전체 동기화. 전사·성기사·드루 판별 로직(영문과 동일).
- **수정** – 전역 `PlaterTOTDB`, MoP 전역 제거, 드루 폼 **OnUpdate** 폴링, **UNIT_AURA** 쓰로틀.

---

## [1.0.3] - 2025-03-09

### Changed

- **Version bump** – For CurseForge re-upload (previous reject due to duplicate file). No gameplay changes from 1.0.2.

### 한글

- **버전만 상향** – CurseForge 재업로드용. 1.0.2와 동작 동일.

---

## [1.0.2] - 2025-03-09

### Changed

- **"T" color by relation** – The "T" prefix is red when the target of target is an enemy; white when friendly.
- **Target name** – Always white (no class color on name; bar fill keeps class color).

### 한글

- **"T" 색** – 대상의 대상이 적이면 빨강, 아군이면 흰색.
- **이름** – 항상 흰색(바 채움만 직업색).

---

## [1.0.1] - 2025-03-09

### Fixed

- **TOT health bar class color** – The selection overlay was drawn above the class-colored fill (ARTWORK layer), making the bar look washed out. The overlay is now on the BACKGROUND layer below the fill (sublayers 1 and 2), so the class color displays clearly on top.

### 한글

- **TOT 직업색** – 선택 오버레이를 채움 **아래** BACKGROUND로 옮겨 직업색이 선명하게 보이게 함.

---

## [1.0.0] - 2025-03-09

### Added

- **Target of Target on nameplates** – Shows who the nameplate unit is targeting above the health bar when that target is not the player.
- **Display format** – `T : [target name]` with white text and thin black outline for readability.
- **Class-colored health bar** – Bar background is semi-transparent (like Plater’s health bar); fill uses the target’s class color and is fully opaque.
- **Health-based fill** – Fill width reflects the TOT target’s current health percentage (left-to-right).
- **Bar width** – Bar length follows the text width (name length).
- **Plater integration** – Hides Plater’s built-in TOT text so only PlaterTOT’s bar is shown. Does not modify Plater files.
- **Dependency** – Declares Plater as a dependency in the TOC.
- **Compatibility** – Supports multiple WoW clients (Retail, Classic, TBC, Wrath, etc.) via Interface version tags in the TOC.

### Technical

- Uses `NAME_PLATE_UNIT_ADDED` / `NAME_PLATE_UNIT_REMOVED` and a throttled update loop for performance.
- TOT frame is parented to Plater’s health bar with a higher frame level so it draws above buff/debuff icons.

### 한글

- **이름표 TOT** – 플레이어가 아닌 대상을 잡을 때 체력바 위에 `T : 이름` 표시.
- **표시** – 흰 글·검은 외곽선, 직업색 채움·체력 비율, 너비는 텍스트에 맞춤.
- **Plater** – 기본 TOT 텍스트 숨김, 파일 미수정. TOC 의존성·다중 클라이언트 태그.

### 기술

- 이름표 이벤트 + 쓰로틀 루프, 체력바 부모·높은 프레임 레벨.

[3.0.0]: https://github.com/yourusername/PlaterTOT/releases/tag/v3.0.0
[2.1.1]: https://github.com/yourusername/PlaterTOT/releases/tag/v2.1.1
[2.1.0]: https://github.com/yourusername/PlaterTOT/releases/tag/v2.1.0
[2.0.0]: https://github.com/yourusername/PlaterTOT/releases/tag/v2.0.0
[1.0.3]: https://github.com/yourusername/PlaterTOT/releases/tag/v1.0.3
[1.0.2]: https://github.com/yourusername/PlaterTOT/releases/tag/v1.0.2
[1.0.1]: https://github.com/yourusername/PlaterTOT/releases/tag/v1.0.1
[1.0.0]: https://github.com/yourusername/PlaterTOT/releases/tag/v1.0.0

This mod has no additional files