promotional bannermobile promotional banner

Titanui

TitanUI is a modular World of Warcraft Retail UI with customizable frames, action bars, nameplates, bags, chat, raid tools, Mythic+ features, buff reminders, and shared profiles.
Back to Files

TitanUI 0.68.410.zip

File nameTitanUI 0.68.410.zip
Uploader
TemanTeman
Uploaded
Oct 5, 2026
Downloads
8
Size
56.0 MB
Flavors
Retail
File ID
9073228
Type
R
Release
Supported game versions
  • 12.1.5
  • 12.1.0

What's new

TitanUI 0.68.410 — changes for October 4, 2026 (performance and Bench)
New
- /titan cpu [seconds]: splits the CPU the game charges to "TitanUI" by source and prints the top ten (default 60 seconds; /titan cpu stop ends it early). Every module's events, timers and tickers run through the core, plus the aura, cast and range services, so the game's single "TitanUI" number covers most of the suite. The full list is saved (written on /reload or logout), and Cooldown Manager layouts are listed with what caused them. Off unless a capture is running.
- Bench: a waiting list. The panel now has two sections, WAITING LIST above BENCH, each with its own header count and Invite all button; the subtitle reads "2 waiting · 3 benched". Players ask for a place with !wl (waiting list) or !bl (bench), with a role after it if they like: !wl tank, !bl heal, !bl dps. Without a role they show as "?" (or their inspected spec); a listed player who types the command again without a role keeps the role they gave. !wl from someone on the bench moves them to the waiting list and the other way round. "!wl leave" / "!bl leave" (or !unbench) takes them off. The old !tank / !heal / !dps / !bench commands are retired. Clear empties both lists; the commands are shown at the bottom of the panel.
- Bench: whispers. The commands work by whisper too; Battle.net whispers are added as the character the friend is playing (friends outside WoW or on Classic are ignored). Raid Tools > Bench > Listen in has Guild and Whispers.
- Conflicts panel: Bottom Parse Raid Tools is listed against TitanUI Raid Tools, since you only need one. Use TitanUI turns Bottom Parse Raid Tools off; Use other addon turns TitanUI_RaidTools off. There is no Keep both.
Improved
- TitanUI core CPU went from about 13 ms per second to under 1 ms per second in /titan cpu captures, mostly from the Cooldown Manager fix below.
- Cooldown Manager: Essential and Utility were re-laid out about 9 times a second, nearly 90% of the core's CPU. The icon check compared sizes exactly, so float rounding (39.99998 vs 40) looked like a change, and every layout re-anchored every icon, re-applied the panel look and restored the saved position even when nothing changed. Checks now allow for rounding, and a layout only writes what actually changed (the panel look only when its settings, theme or skin change).
- Cooldown Manager: the icon state check (dimming and greying icons on cooldown) runs once a second out of combat and 4 times a second in combat, instead of 10 times a second all the time. It checks right away when combat starts.
- Damage Meters: the timed refresh runs only in combat. It starts when combat begins, redraws once when combat ends and then stops; out of combat the meter still updates from the game's damage-meter events.
- Range fading (unit and raid frames): the timed re-check runs once a second out of combat and twice a second in combat, on a timer instead of an every-frame OnUpdate. A frame's alpha is only written when its range actually changes. Group members still update instantly from the game's range events.
- Code review of this version's changes (globals, API use, garbage in hot paths, scaling, nil handling):
  - Damage Meters: in combat the event-driven redraw now keeps to the window's "Refresh rate" (it redrew on every damage-meter event, up to 20 times a second, regardless of the slider); out of combat it is still forced so the final numbers are never stale. The three redraw callbacks are created once instead of once per event.
  - Cooldown Manager: a layout no longer builds a label string, a point table per icon or a look string per run; icon mouse state is read back from the frame before writing (a reset by the game or Edit Mode is put right); a value the game won't let addons read never counts as a change; Icon scale falls back to 1 if the saved value isn't a number.
  - Core: module timer and ticker labels are built once per timer instead of on every tick; the range re-check creates one closure per start instead of one per tick, and its combat switch rides the range frame's own events (one frame fewer); /titan cpu's wrapped scripts report an error from where it happened, so BugSack's stack shows the failing line, not the wrapper; the aura and cast capture labels are cached.
  - Bench: a Battle.net friend playing Classic is ignored (can't be invited); the chat handler is set before its events are registered; an unused local removed.
  - Inspect and character showcase: the item-name fallback no longer calls the removed GetItemInfo global (C_Item.GetItemInfo is used when the Mythspire helper is missing).
  - Whole suite: no accidental globals, no removed Blizzard APIs outside secure snippets, no combat-log use.
- Retail audit of the whole suite (combat lockdown and taint, event load, pixel layout, outside references):
  - Bags: the bag bar is a plain frame again instead of a secure handler (its show / hide in vehicles and pet battles runs through a state driver, which works on plain frames), so it can't become a protected frame that taints what it touches. The game's bag buttons are only re-parented when their parent or shown state actually differs.
  - Core aura, cast, range and heal prediction services: each unit event only refreshes the frames showing that unit (every service keeps a frame-by-unit index) instead of walking every registered frame on every UNIT_AURA, UNIT_SPELLCAST_* and UNIT_HEALTH. Heal prediction reuses one scratch record per frame instead of building tables per update. The keyboard / mouse refresh is debounced.
  - Nameplates: plates whose type is hidden skip their health and threat updates; UNIT_TARGET is no longer listened to (nothing on the plate used it); UNIT_MAXHEALTH only redraws health; roster changes are coalesced; the look settings are read without building closures or key strings per plate; the aura row keeps the same gap above the health bar at every aura size (the gap scaled with the icons); names never wrap; the health and cast bar edges are re-synced to the pixel grid when the plate's scale changes.
  - Unit frames: a target, focus or pet change refreshes only those frames; one shared guarded-call helper replaces 17 per-frame closures; aura requests and layouts are cached per frame and only rebuilt when a setting changes; names and cast names are bounded on both sides and never wrap; borders, power backdrops and aura icon edges are pixel sizes; the flow texture repeats instead of stretching.
  - Raid frames: roster refreshes are coalesced (0.15 s) and include tank / assist assignments; UNIT_FACTION only re-checks friendliness for the player and bosses; the player's dispel spell is looked up once and refreshed on talent / spec / spell changes instead of per aura; the health-effects pass only re-reads settings when they changed; names are anchored to both edges, clipped to one line and shortened without breaking accented characters; the target health bar, holder and dispel highlight edges are pixel sizes.
  - Raid Tools: roster-driven rebuilds are coalesced (0.1 s / 0.15 s). Chat: the roster colour lookup and alert keywords are cached per roster instead of rebuilt per message, and role assignments are coalesced. Resource bars: the Spellfire talent check is cached and refreshed on spell changes, the native-bar suppression runs at most every 2 seconds, and the Mage sphere aura read is direct. Damage Meters: the session list only rebuilds when a session is added or ended, not on every current-session tick. Encounter Timeline: unit cast removals return early when fallback cast tracking is off or the unit isn't a boss.
  - Auras: the buff and debuff containers anchor point-to-point to their movers instead of through scaled offsets. Buff Reminders: the glow edge is a pixel size. Cooldown Manager: bar names stop at the duration text and never wrap. Macro buttons: names are centred between the edges on one line.
  - Addon metadata: LibSharedMedia-3.0 (TitanUI, Unit Frames, Raid Frames) and LibOpenRaid-1.0 (Raid Tools) are declared as optional dependencies so they load first when installed. No EllesmereUI, ElvUI or other outside UI code is referenced anywhere except the Conflicts panel's detection list; the only outside libraries used are the ones declared. Module enable order tiers are named FRAMES / PANELS / SUPPLEMENTAL.
  - Not changed on purpose: the merchant page size (a feature, no protected call), the unit frames' global UNIT_* registration (early-outs are cheaper than per-unit registration churn), Buff Reminders' per-aura engine rebuild, Player Arcs' refresh closures, the Cooldown Manager's icon check accumulator, and the scaled bag panel backdrop.
Removed
- Bench: community chat is no longer listened to (whispers replace it).
Fixed
- Bench: commands typed in community chat were always dropped. The game sends the community channel name with the chat number in front ("5. Community:..."), which the check never matched. (Communities were then replaced by whispers; the same fix went into Bottom Parse Raid Tools' Bench.)
- Tooltips: the item comparison tooltips (the "Equipped" ones beside an item) had no background. They sit next to the main tooltip, and the delve tooltip fix treated that as being drawn inside it.
- Bags: Tab Settings (and right-clicking a bank tab) in combat tried to hide the protected bank panel, which the game blocks; it now says "Bank tab settings open after combat." and opens them when combat ends if the bank is still open.
Tests
- 60 functional tests, all passing (the mock now passes xpcall arguments like the game, so SafeCall and the CPU capture take their in-game path): added the core service unit index (a unit event only touches that unit's frames), the unit frame aura request cache, bank tab settings waiting for combat, the waiting list (two lists, moves, leave words, per-list Invite all, panel layout), the review checks (event redraw rate, reused layout records, mouse state read-back, unreadable values, Classic friends), the range check rate, the cooldown icon check rate, the combat-only damage meter refresh, cooldown viewer layout cost, the CPU capture, Bench whispers and !bench, the Bottom Parse Raid Tools conflict, and comparison tooltip backgrounds.

This mod has no additional files