promotional banner

Aurora

Minimalistic UI theme for World of Warcraft
Back to Files

12.1.0.10

File nameAurora-12.1.0.10.zip
Uploader
Gethe88Gethe88
Uploaded
Sep 22, 2026
Downloads
309
Size
869.2 KB
Flavors
File ID
8947628
Type
R
Release

What's new

12.1.0.10

Added

  • add: WoW Forever support. Aurora loads and skins on the Forever beta (1.60.x, client folder _classic_beta_, interface 16001). Despite the 1.x version this is not a classic port: Blizzard built Forever on the Mainline UI architecture with a Camelot game overlay, so it is handled as a Mainline-family flavor. private.isForever is gated on the interface range (16000–19999) rather than on WOW_PROJECT_ID, which reports Mainline there, and AURORA_DEBUG_PROJECT = 60 selects it. The Forever client also matches Aurora_Mainline.toc, so Aurora has no TOC of its own for the flavor: that one file declares ## Interface: 120100, 16001 and picks AddOns_Mainline.xml or the generated AddOns_Forever.xml per line, with [AllowLoadGameType standard] against [AllowLoadGameType camelot][ExcludeLoadGameType standard, classic] — the extra Exclude is needed because a client that does not know the camelot token treats an unknown AllowLoadGameType as a match. Camelot-only skins live in Blizzard_X\Camelot\ beside Mainline\, mirroring Blizzard's own paths. Nothing here changes retail [forever]
  • add: the Camelot character panelCharacterFrame (six mode tabs and the right-hand pane host), PaperDollFrame (ranged and ammo slots, gear-slot border art hidden by atlas so the bare ammo slot is covered, the model control bar), ReputationFrame, SkillsFrame, PVPRankFrame, BankFrame (page tabs, no TabSystem) and EquipmentFlyout (Camelot's new four-direction popout button). Every CharacterFrameSidePaneTemplate builds its contents from one FramePoolCollection of four row templates, so the category and icon rows are skinned once in CharacterFrame.lua and that covers the reputation, skills, currency and PvP rank panes together [forever]
  • add: the three Forever-only addons. Blizzard_Statistics — mode tab 6 of the character panel, which retail has no counterpart for since achievements absorbed statistics. Blizzard_LegacySystem — the Progress Track window: frame, side tabs, reward track and challenge page; the talent-style legacy tree page is deliberately left stock, because its contents inherit TalentButtonSquareTemplate and friends, which Aurora skins on no flavor, and doing it here would mean writing the shared talent-tree treatment as a side effect of a Forever-only addon. Blizzard_SwingTimer — the main-hand, off-hand and ranged bars; they are Edit Mode systems, so nothing re-anchors them [forever]
  • add: the remaining Camelot surfaces — the classic pet journal and PetStableFrame (Blizzard_StableUI splits per flavor), the professions book as a page inside ProfessionsFrame (Camelot's TOC excludes the standalone ProfessionsBookFrame) plus the unlearn button, the crafting schematic form, the TokenDetailFrame side pane, collections side tabs and the count-style toy tracker, the bag bar and the micro menu bar art, and Camelot's nameplate level badge. The badge is skinned with widget calls only — no Aurora backdrop: that frame belongs to the restricted nameplate system, where Base.SetBackdrop writes BackdropMixin methods onto the frame table and the taint resurfaces as secret-number errors on the next nameplate reuse cycle. It is gated on selectedBorder, which exists only in the Camelot copy, so retail's badge is untouched [forever]
  • add: /aurora skinaudit — lists the skins whose pcall failed this session, with the client build and interface version. Skins run behind pcall, so a skin written against frames a client does not have fails silently; this turns a login on an unfamiliar flavor into a work list, and it is how the Forever pass was verified wave by wave [shared]
  • add: dev/forever_report.py, regenerating the Camelot-vs-Mainline gap analysis from the two source trees and the manifests, with Camelot files in collapsed addons surfaced in section 3. dev/updatexmls.py grew two report sections of its own: section 9 finds skin templates a flavor calls but never registers — which is what surfaced the nil calls fixed below, and which ignores Lua comments so disabled calls stop reporting — and section 10 lists positional child and region picks (select(n, ...) against a frame's children) for review, those being exactly what breaks when a client adds a child. Named hooksecurefunc targets the flavor's own tree does not define are flagged too, and each Camelot manifest entry is now marked additive or replacement: the distinction decides whether a Camelot file needs a guard in the existing Mainline skin or a skin of its own [shared]
  • add: Skin.UIPanelArrowDropdownButtonTemplate — a 15x16 arrow dropdown whose whole look is one gold common-dropdown-a-button atlas. Aurora had no skin for it, so callers reached for Skin.DropdownButton, which is written against WowStyle1DropdownTemplate and leaves the gold arrow alone; on retail that is the yellow button beside the spellbook search box [all]
  • add: Skin.ModelSceneControlFrameTemplate — the zoom/rotate/reset bar above a model scene. Camelot shows it on the character panel where retail does not, so it sat there as five common-button-square-gray buttons over the model [all]

Fixed

  • fix: every bag after the first lost its skin. ClickableTitleFrame was removed from ContainerFrameTemplate — a deletion, not a rename; bags drag at frame level now — and the line re-anchoring it had been throwing, silently, behind the skin pcall, taking the rest of the function with it. Removing it exposed a second fault underneath: Skin.ContainerMoneyFrameTemplate is called by the backpack skin and had never been defined, on any flavor, so it had been killing that function since it was written and only the first throw hid it. Both are fixed. The money frame delegates to Skin.SmallMoneyFrameTemplate, which Aurora deliberately no-ops, rather than no-opping here, so bags follow if money frames are ever skinned [mainline/forever]
  • fix: the pet bar's auto-cast decorations were unskinned, and every line after them in that skin function stopped applying. Blizzard replaced the AutoCastable texture and the AutoCastShine frame with an AutoCastOverlay frame holding .Corners and .Shine; the old field names survived in the skin and had been throwing behind the pcall. The original intent is carried over — the overlay covers the button so its corner art lands on the square button's corners, and the rotating "ants" are pulled inside the button edge instead of overhanging it by 5px [mainline]
  • fix: the spellbook category tabs kept Blizzard's gold plate. SpellBookCategoryTabTemplate inherits TabSystemButtonTemplate, not a panel tab, and Init() puts it in square icon mode — but only the text half of TabSystemButtonArtTemplate was ever handled, so routing these through Skin.PanelTabButtonTemplate skinned art they were not showing. Icon tabs now get their own treatment: square art zeroed, icon cropped and fitted, sized 32x32 to match Blizzard's tab height. It is applied from the tab system's hooks rather than once at skin time, because the tab pool hands the same button back on RemoveAllTabs/AddTab and a button skinned while its icon was still textureless is locked out of ever being treated as an icon tab by IsSkinned — measured on the spellbook, of six pooled tabs four were right, one was raw 44x32 and one was sized but unfitted. Same template, same bug on retail and Forever [mainline/forever]
  • fix: the profession recipe category headers were never actually skinned. The hook zeroed LeftPiece/RightPiece/CenterPiece, keys that exist nowhere in ListHeaderVisualTemplate — its three-slice is Left/Middle/Right with a HighlightLeft/Middle/Right set over it. Not a Camelot difference: the template is byte-identical in both trees, so this was equally broken on retail. The highlight trio keeps its job and loses Blizzard's art. The crafting page's two Create buttons are skinned as well; they are built in Lua by ProfessionsCraftingPageMixin:CreateControls, which runs after this skin, so the existing guards had simply found nil and skipped them [all]
  • fix: Skin.WowStyle2DropdownTemplate was undefined — the one genuinely live call to an unregistered skin template, reached by Blizzard_HouseEditor for the pet behaviour and customize-panel dropdowns, and killing the rest of that skin each time. It is a DropdownButton like the WowStyle1 ones, differing only in mixin and art, so it takes the same skin [mainline]
  • fix: Skin.UIPanelScrollBarButton had likewise never been defined, although its callers expect it to leave a retexturable arrow at _auroraTextures[1]. Its only callers today are the Oribos scroll arrows, whose Blizzard templates are gone from every source tree; the skin is defined rather than the callers deleted, because Aurora dispatches skins dynamically in several files and "no static caller" is not proof of unreachable [mainline]
  • fix: the open-mail divider was hidden by region indexselect(9, ...), which counts the inherited ButtonFrameTemplate regions and does not hold on Forever, where it returned nil and took the rest of the mail skin with it. Both halves share one texture and are matched on it now, so the count no longer matters [mainline/forever]
  • fix: ModelPreviewFrame's template close button was found at child index 4, an index that shifts on Forever, where ButtonFrameTemplate gains four gamepad focus children (FrameGlow, LeftJumpHint, RightJumpHint, FocusJumpHint). The historical index stays the first guess, so retail behaviour is unchanged, and the search by shape runs only when it does not hold [all]
  • fix: side tabs showed a gold border around every icon and a glow that kept re-painting itself. TabGlowAnimation loops the glow's alpha, so SetAlpha alone never stuck; the animation is stopped. The icon is masked into a tab silhouette by common-sidetab-mask and is now cropped square like every other Aurora icon — and re-cropped after UpdateIconInterior, which SetChecked calls last on every state change and which re-sets the texcoords to a shallower crop, leaving each icon's own bevelled edge showing. The selected and hover textures keep their roles and lose their tab shape [all]
  • fix: Frame-based progress bars no longer throw out of Skin.FrameTypeStatusBar. Camelot's ColoredProgressBarTemplate is a Frame driving a masked fill through its mixin, with none of the SetStatusBar* API that function uses, so one such frame threw "SetStatusBarTexture is not a function" and took its caller's whole skin with it. They route to the new Skin.ColoredProgressBarTemplate instead; on retail every caller passes a genuine StatusBar, so nothing changes there [all]
  • fix: RatingMenuFrame's classic branch called Skin.OptionsButtonTemplate, defined nowhere in Aurora and naming a Blizzard template that exists in no source tree — a fossil from an older client. The branch is unreachable as things stand, but it is pointed at the button skin the retail branch uses rather than left calling a nil [mainline]
  • fix: the skins retail shares with Camelot now tolerate Forever's trimmed frames, where before they threw on the first missing member and lost everything below it. Friends (no WhoFrame, no FriendsFrameTab2, no WhoList_InitButton hook, no trial-state hook), Inspect (no InspectFrameTab3, guarded paperdoll slots and InspectPaperDollFrame_OnShow), TokenUI (no currency popup), Mail (paging buttons resolved from InboxFrame), TrainerUI (cost display from ClassTrainerFrame.money), Professions (no standalone book, no maximize button), the group finder (per-flavor tab and scrollbar templates, role buttons only when the template is registered), ScriptErrorsFrame (CloseButton, Forever's rename of Close), the spec frame, the tracking button, the character-sheet hook, the parchment page textures, the filter dropdown and the transfer log toggle. Each is a guard or a per-flavor pick, so retail is unaffected [forever]

Changed

  • chg: the shared PaperDollFrame and ReputationFrame skin bodies moved to Skin\shared\, with thin per-flavor callers under Mainline\ and Camelot\; Blizzard_StableUI splits the same way, and the manifests point at the new paths. No behaviour change on retail [shared]
  • chg: Skin.LargeSideTabButtonTemplate is now shared across five surfaces — the Camelot character panel's mode tabs, the bank page tabs, Professions, Collections and the Legacy system — and it crops the bank page tab icons itself rather than each caller doing it [all]
  • chg: mainmenubar defaults on for Forever and stays off everywhere else. On retail the bar theming is redundant for most users, who run Bartender4 or Dominos; on Forever there is no such expectation, and the bag bar, micro menu and action bar end caps are all gated behind this one flag, so defaulting it off left three finished skins dead on that client [forever]
  • chg: the dev-only nil-frame warnings for DropdownButton and FilterButton name the caller, and frames in addons Aurora does not skin are marked as not-a-gap in the Forever report so they stop showing as work [shared]

Known Issues

  • On the 1.60.1 Forever beta (build 69913) the client never restores account-level SavedVariables, so AuroraConfig is empty at every load and only the defaults apply. Confirmed by the Forever developers; not an Aurora bug. Whether mainmenubar should default on for Forever permanently is a separate, still-open call [forever]
  • Camelot's gamepad addons are deliberately unskinned — 81 frames, 73 of them in Blizzard_GamepadActionBars. None of it renders without a controller attached, so none of it can be verified; the gamepad focus children that leak into ordinary Camelot panels are handled where they matter. Revisit if a controller-using tester appears [forever]
  • The Legacy system's tree page renders with Blizzard's styling, as above [forever]
  • The Camelot bank, and slot and pane positioning across the character panel, have had a static and skin-audit pass but no in-game walk-through [forever]
  • The ShouldShowMawBuffs guard added in 12.1.0.8 still owns a Blizzard global, and the 25%-of-taintLog cost measured for 12.1.0.9 is unchanged. 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_InsertFrame taint described under 12.1.0.2 is unchanged [mainline]

Detailed Changes

This mod has no additional files