OldschoolUI 1.3.0
What's new
# Changelog
All notable changes to OldschoolUI are documented here. Format based on
[Keep a Changelog](https://keepachangelog.com/); versions follow the tag pushed
to CI (the BigWigs packager substitutes `@project-version@` in every `.toc`).
## [1.3.0] - 2026-07-26
### Added
- **Profiles with import/export** (new, in the core options): separate settings
per character or role. All OldschoolUI modules switch together — Core and each
module own a separate database, and a profile is applied across every one of
them at once. Profiles can be created, copied, deleted and reset, and exported
as a text string to back up or share a setup (a single module can be exported
on its own, which keeps the string short enough to paste anywhere).
- **OUI_WorldMap** (new module): the world map is now **movable** — Blizzard
anchors it through the panel layout system, which is why it previously snapped
back — as well as scalable, and it **fades while you move** so it can stay open
while running. Optional player/cursor coordinates, and the OUI panel and border
instead of the ornate Blizzard frame.
- **OUI_Tooltip** (new module): OUI panel and pixel border, class-coloured player
names, a styled health bar, the unit's current target, optional cursor
anchoring, optional spell/item IDs and an option to hide tooltips in combat.
- **Test mode** (`/ouitest`): puts unit frames, raid frames and the damage meter
into a preview state so a layout can be arranged solo instead of in a raid.
- **Group timer — raid runs you join late or continue:** per-boss times are now
recorded both as an absolute time and as the gap since the previous kill. When
a raid lockout already has kills on it, the timer switches to gaps, because an
absolute "time since zone-in" is meaningless for the bosses still standing.
Crucially, such runs no longer write to the absolute records, so one late join
can no longer ruin an instance's best splits. Selectable per taste
(automatic / always absolute / always gaps).
- **Group timer — pause:** `/ouigt pause` toggles the timer manually, and a break
announced in raid or party chat pauses it automatically; the next boss kill
resumes it. Raid breaks no longer inflate every remaining boss time.
- **Blizzard frames** now styled to match: quest giver and gossip, loot window,
guild bank and the profession window.
### Changed
- **Damage meter DPS now matches Details out of the box.** Throughput is divided
by the fight duration by default; activity-time DPS (aDPS, which ignores idle
gaps and therefore reads higher) is one toggle away. Total damage was already
identical — only the divisor differed.
- **The profession window is left alone when TradeSkillMaster is loaded.** TSM
restyles that window itself, and two addons re-applying styles to the same
frame is a fight neither wins. Without TSM, the OUI styling applies as before.
### Fixed
- **Quest giver text was unreadable.** The quest titles carry a colour escape
inside the string itself, which always overrides a frame's text colour — the
same names printed dark in the chat window too. The escapes are now stripped so
the text follows the skin.
- **The profession window was styled only sometimes.** Its UI loads on demand and
finishes building after the first styling pass, which the one-shot guard then
locked in.
- **Damage meter performance:** the live-DPS readout allocated a table for every
damage event and pruned the list with an O(n) shift, and the death recap did the
same for every hit taken. In raid AoE that is thousands of allocations per
second. Both now use fixed ring buffers and allocate nothing after the first
call.
- The live-DPS window is no longer written to disk, so a reload can no longer show
a stale "current DPS" from the previous session.
- Development-only debug instrumentation was removed from the group timer and the
bonus-roll module.
This mod has no additional files

