12.1.0.9
What's new
[12.1.0.9]
Added
- add: NamePlates skin for the classic flavors — era, TBC and Mists now resolve
Blizzard_NamePlates\Classic\. Blizzard unified the nameplate file set across flavors, so the file is a deliberate verbatim copy of the Mainline skin plus a flavor note; every symbol it touches was verified present in all three trees (NamePlateDriverMixin,OnNamePlateAdded,NamePlateAurasMixin:RefreshAuras/:RefreshLossOfControl,HealthBarsContainer, the aura/debuff/crowd-control/loss-of-control list frames,ForEachNamePlate, and all threeSetClassNameplateBar*driver methods — the driver methods exist on classic even though the frames never arrive, so thehooksecurefunccalls are safe and stay in for parity). Health and cast bars are deliberately not skinned:Base.SetBackdropwrites BackdropMixin functions and_backdropInfodirectly onto the bar, which taints it, and on the next nameplate reuse cycleCompactUnitFrame_UpdateHealPredictionthen readsGetMinMaxValues()tainted and errors on a secret number. Only the aura icons are cropped. Keep the two files in sync — a plain diff between them should show only the flavor note [classic] - add: TimeManager skin for the classic flavors — clock globe and stopwatch frame/tab art removed, the stopwatch check and the alarm dropdowns and edit box skinned. Blizzard splits this addon per flavor, but the frame structure the skin touches is the same in both trees:
TimeManagerFrameinheritsButtonFrameTemplate, the alarm dropdowns hang offAlarmTimeFrameby parentKey, and the stopwatch textures keep their$parent*names. The one real difference is that classic's alarm dropdowns inheritWowStyle1ThinDropdownTemplatewhere retail usesWowStyle1DropdownTemplate, whichSkin.DropdownButtonalready handles; the explicit dropdown widths are cosmetic tuning picked against the retail template, so they are what to eyeball on a classic client rather than anything that can fail loudly [classic] - add: vanilla-style group finder row templates — browse results (
LFGBrowseSearchEntryTemplate), listing activity rows (LFGListingActivityRowTemplate) and the lazily-created category buttons, closing the deferral left in the skin header. All three families are recycled by their container, so each is skinned from an update/add hook rather than once at load. Meaningful art is kept per the file's existing policy — party, class and newcomer icons on a result row, the Enumerate and Solo role art, and the category icons; what gets recoloured is the ADD-blended highlight and selected bars, the parts that actually fight the theme, using the same blend reset plus Aurora highlight colour as the classic AuctionUI rows. TheRoleCountNoScriptsTemplateicon swaps are inlined becauseSkin.RoleCountNoScriptsTemplateis Mainline-only [classic]
Fixed
- fix: the chat edit-box border hook threw
attempt to index local 'channeleditBox' (a nil value)at login (×3 for a user with channel-bound chat windows).Hook.ChatFrameEditBoxMixinUpdateHeaderreadChatFrameUtil.GetActiveWindow()— which returnsACTIVE_CHAT_EDIT_BOX, the edit box the user currently has open — instead of the edit box it was handed. That is nil wheneverUpdateHeaderruns outside a user-opened edit box, which is exactly the reported path:UPDATE_CHAT_WINDOWS→ChatFrameMixin:UpdateDefaultChatTarget→editBox:UpdateHeader()fires as chat settings arrive at login, and reaches theCHANNELbranch for any window whose default target is a channel. A mis-port dating to the WoW 12 removal ofChatEdit_GetChannelTarget(editBox); it also read the wrong window's channel colour whenever it did not crash. It now useseditBox:GetChannelTarget(), matching Blizzard's ownUpdateHeaderatChatFrameEditBox.lua:641, with a comment recording whyGetActiveWindow()is the wrong object so the next API rename does not repeat it [mainline]
Known Issues
- The
ShouldShowMawBuffsguard added in 12.1.0.8 owns a Blizzard global, which taints it permanently for every later reader. A 4½-minute field log on a shipped build has since put a number on that cost: 38,407 of 152,518 lines (25%) are RealUI_Skins reading the global, sustained at ~140/sec, becauseScenarioObjectiveTrackerMixin:OnEventreads it inside itsUNIT_AURAbranch. That is a rare error traded for a continuously tainted aura path, and it makestaintLogclose to unusable for any other diagnosis on an affected setup. The trade should be re-priced rather than left standing [mainline] - The world-event/scenario UI widgets still render with Blizzard's styling while that skin is gated [mainline]
- The
GameTooltip_InsertFrametaint described under 12.1.0.2 is unchanged [mainline]
This mod has no additional files

