Seti's Buff Bars - Version 0.5.2

Release maintenance:
- Removed the /sbb blizzard and /sbb refresh slash commands; the equivalent GUI controls remain available.
- Startup chat confirmation now displays the installed addon version.


0.5.2
- Removed direct C_UnitAuras.GetAuraDataByIndex/AuraUtil.ForEachAura reads from group snapping. WoW 12.1 can make those aura lists secret, which caused taint errors when UpdateSnappedGroups ran.
- Buff/Debuff snap links now rely on Blizzard CustomAuraContainer frame anchoring for live layout changes; drag-time sticky geometry uses a safe one-bar approximation when the active aura count is intentionally unavailable.
- UNIT_AURA no longer forces UpdateSnappedGroups, avoiding aura-presence-dependent layout work while protected aura state is secret.


0.5.1
- Prevent SBB Buff, Debuff and Weapon Buff displays from showing Blizzard Edit Mode example aura data.
- SBB bars are temporarily hidden while WoW Edit Mode is active and restored/refreshed when Edit Mode closes.

0.5.0
- Release build promoted from 0.4.28.
- Removed the legacy slash-command settings for width, height, spacing, scale, maximum Buffs/Debuffs, enabling Buffs/Debuffs/Weapon Buffs, global Grow Up, and per-group growth commands. These settings remain available through the options window.


0.4.28
- Added the supplied SBB_Icon.tga as the addon's in-game AddOns-list icon and set the addon category to Buffs & Debuffs.
- Bar Direction now displays Left as Left to Right and Right as Right to Left while preserving the existing LEFT/RIGHT profile values internally.
- Font Settings section titles renamed from Aura Name Text / Aura Stack Text to Buff Name Text / Buff Stack Text.
- Renamed the group icon-position labels to Buff Icon Position, Debuff Icon Position, and Weapon Buff Icon Position.

0.4.27
- Reworked the Bar Texture preview dropdown so each texture uses a 46px-tall row instead of the cramped 16px AceGUI pullout spacing.
- Texture names now sit in a dedicated dark title strip above the preview, keeping every name legible regardless of how light or patterned the texture is.
- Added SBB-only variable-height pullout layout support so taller texture rows do not overlap; all other AceGUI dropdowns keep their normal sizing.
- Replaced the global DDI-Statusbar item dependency with an SBB-specific AceGUI/LibSharedMedia item type so another addon's LibDDI registration cannot change SBB's preview layout.

0.4.26
- Bar Texture now uses the WoWAce LibDDI-1.0 DDI-Statusbar AceGUI item type so texture choices are shown as visual status-bar previews with the texture name over the preview.
- Added LibDDI-1.0 as an optional dependency and a standalone DDI-Statusbar-compatible fallback so previews remain available even when no external LibDDI copy is loaded.
- Extended the shared AceGUI dropdown helper to support an item type without changing the behaviour of the other SBB dropdowns.

0.4.25
- Moved all EllesmereUI bar-texture integration out of Core.lua into the dedicated EllesmereMedia.lua module.
- Imports the full EllesmereUI bar-texture catalogue into LibSharedMedia when EllesmereUI is loaded, rather than registering only Plating.
- Uses EllesmereUI's live BuildBarTextureTables(true) catalogue when available so SBB follows the installed EllesmereUI version automatically, with a current 18-texture fallback catalogue for compatibility.
- Existing profile selections such as Plating remain compatible because EllesmereUI display names are retained as the LibSharedMedia keys.

0.4.24
- Fixed Bar Texture profile persistence after the AceDB migration. Media selections are now retained as profile data even when LibSharedMedia has not registered that texture yet.
- Stopped the legacy Plating -> Blizzard conversion from rerunning when an AceDB profile is selected; that conversion now runs only during the one-time pre-AceDB import.
- Removed startup validation that overwrote saved texture/font names with LSM defaults. Missing media uses a temporary visual fallback without changing the profile.
- Added a LibSharedMedia registration callback so a selected texture/font is reapplied automatically if its provider registers later in the login sequence.

0.4.23
- Added specialization-specific profile support using LibDualSpec-1.0 v1.30.0 on top of the existing AceDB-3.0 profile database.
- The Profiles tab now includes LibDualSpec's standard Enable spec profiles control and a profile selector for each specialization.
- When enabled, changing specialization automatically selects the profile assigned to that spec; the underlying profiles remain normal shared AceDB profiles.
- Existing 0.4.21+ AceDB profiles remain compatible and no profile data is duplicated or reset.

0.4.22
- Fixed startup failure after the AceDB migration where VALID_STRATA was no longer defined before GetConfiguredStrata() used it.
- Restored the valid frame-strata lookup as an initialization-safe local constant; existing AceDB profiles and migrated frameStrata values are unchanged.

0.4.21
- Migrated profile storage from SBB's custom flat/profile mirror to the standard AceDB-3.0 profile system.
- Added the standard AceDBOptions-3.0 profile manager, rendered by AceConfigDialog-3.0 in a dedicated Profiles tab in the standalone SBB options window.
- Profiles now support Ace's standard Current Profile, New, Existing Profiles, Copy From, Delete a Profile, and Reset Profile controls.
- Existing SBB profile names, settings, active profile, and options-window position are migrated automatically once into AceDB's profiles/profileKeys/global SavedVariables structure.
- Profile switching/copy/reset immediately reapplies SBB settings; profile controls are disabled during combat to avoid protected aura-layout changes.
- Embedded only the required AceDB, AceDBOptions, AceConfigRegistry, and AceConfigDialog components alongside the existing AceGUI libraries.

0.4.20
- Renamed the weapon-effect group to Weapon Buffs throughout all user-facing addon text.
- Updated the settings tab, enable/maximum labels, mover title, fallback bar label, help/descriptive text, TOC notes, and documentation.
- Internal weaponAura saved-setting keys are unchanged so existing profiles remain fully compatible.

0.4.19
- Removed the Global > Timeless Bars option and all supporting timeless-fill overlay/duration-hook logic.
- Existing saved timelessBarFill values are discarded during migration.
- Moved Global Bar Overrides upward so it begins immediately below the Bar Texture / Timer Text Units row.

0.4.18
- Reworked Timeless Bars Full mode to update from each Buff StatusBar's native SetTimerDuration call instead of polling StatusBar:GetTimerDuration().
- The secure post-hook receives the exact DurationObject Blizzard assigns to that Buff button, preventing recycled timer state from filling unrelated timed bars.
- Full/Empty changes now force Blizzard to reapply the current Buff duration binding so existing bars repaint immediately. Debuffs and Weapon Buffs remain excluded from timeless logic.

0.4.17
- Fixed Timeless Bars Full mode using stale/recycled StatusBar duration bindings.
- Timeless Full/Empty remains Buff-container only. Each Buff bar now evaluates its current native timer DurationObject when repainting, so timed buffs cannot inherit a previous permanent aura state.

0.4.16
- Fixed the startup error caused by calling private AuraButton:GetAuraDuration() from the public CustomAuraButton object supplied to initializeFrame.
- Timeless Buff detection now registers the native DurationBar first, then caches the stable per-button DurationObject exposed by that Buff button's own StatusBar during initialization.
- Timeless Bars remains Buff-only; Debuffs and Weapon Buffs do not create or update timeless-fill overlays.

0.4.15
- Timeless Bars now applies only to the Buff container; Debuffs and Weapon Buffs no longer create or update timeless-fill overlays.
- Timeless detection now evaluates each Buff button's stable CustomAuraButton DurationObject, cached during trusted frame initialization, instead of StatusBar:GetTimerDuration().
- This keeps the full/empty result tied to the Buff button that owns the aura and prevents unrelated Debuff updates or recycled StatusBar timer bindings from changing random Buff bars.

0.4.14
- Reworked Timeless Bars = Full around WoW 12.1 secret durations instead of trying to read or compare DurationObject values in addon Lua.
- Permanent-vs-timed classification now uses DurationObject:EvaluateTotalDuration() with a native Step curve; the resulting secret-safe alpha is passed directly to an always-shown timeless overlay.
- Changing Timeless Bars now also refreshes Blizzard aura bindings on the following frame so the setting repaints immediately.


0.4.13
- Fixed Timeless Bars = Full detection for WoW 12.1: StatusBar:GetTimerDuration() returns a DurationObject, not a numeric duration.
- Timeless detection now reads DurationObject:GetTotalDuration(); a readable zero-duration aura receives the full-width texture, while secret/positive timed durations remain entirely Blizzard-driven.
- Retained the safe blank-duration-text fallback for the brief state before Blizzard attaches a DurationObject.

0.4.12
- Fixed Timeless Bars = Full so permanent Buff and Debuff bars now display the selected status-bar texture at full width.
- Timeless Full now uses a dedicated addon-owned fill texture instead of trying to pre-set Blizzard's native duration StatusBar value, which Blizzard can reset during aura refreshes.
- Timed aura countdown bars remain driven by Blizzard's native duration binding; the timeless fill overlay is hidden whenever native duration text is present or secret.

0.4.11
- General: resized the Profile dropdown and New Profile edit box to the same 0.32 width as Global > Bar Texture while preserving their two-row profile layout.
- General: moved Hide Blizzard's default buffs and debuffs directly beneath Lock bar anchors.
- Reduced the standalone options window width from 720 to 660 pixels while retaining the 560 pixel height.

0.4.10
- Reworked Font Settings into a compact two-column layout: Outline / Effect now sits under Font, and Colour sits under Size. Font, Size and Outline / Effect use the same 0.32 control width as Global > Bar Texture.
- Reworked the Global top section so Bar Texture sits beneath Overall Scale, Timer Text Units remains beneath Frame Strata, and Timeless Bars sits beneath Bar Texture.
- Reworked Global Bar Overrides into two columns: Bar Spacing sits beneath Bar Width; Grow and Bar Direction sit beneath Bar Spacing; Aura Icon Position sits beneath Grow; Background Colour sits beneath Bar Direction.
- Global Grow, Bar Direction and Aura Icon Position dropdowns now match the Bar Texture width.
- Reworked Buff, Debuff and Weapon Buff Dimensions so Bar Spacing sits beneath Bar Width while keeping the group dropdowns and Maximum slider matched to the Bar Texture width.
- Reduced the standalone options window from 860x680 to 720x560 to fit the more compact layout.

0.4.09
- Re-spaced the Font Settings controls as four evenly distributed columns across the full available width.
- Corrected colour-control title text to use the same gold labelled-control appearance as AceGUI dropdown titles.
- Renamed Show Buffs, Show Debuffs and Show Weapon Buffs to Enable Buffs, Enable Debuffs and Enable Weapon Buffs.
- Reworked each aura-group top section so Bar Direction and Aura Icon Position are the left-aligned first row, with Grow directly beneath Bar Direction and Maximum directly beneath Aura Icon Position at matching widths.
- Buff Maximum now ranges from 1-40 and the default for new profiles is 32.
- Debuff Maximum now ranges from 1-24 and the default for new profiles is 16.
- Updated /sbb maxbuffs and /sbb maxdebuffs command limits to match the option sliders; saved values above the new limits are clamped on load.

0.4.08
- Standardised every colour-picker title to appear above its colour swatch.
- Colour-picker titles now use the same GameFontNormalSmall styling and labelled-control spacing as AceGUI dropdown titles.
- Applied the layout consistently to Bar Colour, Background Colour, Font Colour and Global Background Colour controls.

0.4.07
- Aligned Timer Text Units vertically beneath Frame Strata in the Global tab.
- Changed Timer Text Units display choices to HH:MM:SS and HH:MM while retaining the existing saved-profile values internally.
- Renamed Timer Reduces From to Bar Direction throughout the Global, Buffs, Debuffs and Weapon Buffs tabs.
- Renamed Spell Icon Position to Aura Icon Position throughout the same tabs.
- Reworked the Global Bar Overrides control row so Grow, Bar Direction and Aura Icon Position use equal widths and equal spacing, with Background Colour at the far right.
- Reworked each aura-group tab so Grow, Bar Direction and Aura Icon Position share one evenly spaced equal-width dropdown row.

0.4.06
- Reworked Font Settings rows so Font, Size, Outline / Effect and Colour use equal widths and evenly fill the available row width.
- Moved the Font Settings Colour label above its AceGUI colour swatch to match the other labelled controls.
- Removed the Global heading and renamed Overall Frame Strata to Frame Strata.
- Evenly distributed Overall Scale, Frame Strata and Timeless Bars across the full Global top row while retaining their existing control widths.
- Renamed Bar Texture (LibSharedMedia) to Bar Texture, reduced it to the same width as Frame Strata/Timeless Bars, and placed Timer Text Units beside it at the same width with a 25px gap.
- Evenly distributed the Global Bar Overrides Bar Width, Bar Height and Bar Spacing sliders across the full row.
- Replaced every Grow Up checkbox with a Grow dropdown offering Grow Up and Grow Down while preserving the existing boolean profile settings.

0.4.05
- Opening SBB from Settings > AddOns now closes Blizzard Settings without transitioning back to the Escape/Game Menu.
- Explicitly closes the Game Menu before opening the standalone SBB options window.
- Opens SBB on the following frame so Blizzard's panel-hide processing cannot leave its menus visible behind SBB.

0.4.04
- Removed the R/G/B and Opacity numeric fields from the tabbed settings pages.
- Added R, G and B text boxes (0-255) directly to the native Blizzard/AceGUI colour-picker popup.
- Added an editable Opacity % value (0-100) to the same popup; all numeric fields stay synchronized with the native wheel/opacity controls.
- The native Blizzard colour wheel, opacity slider, hex entry and OK/Cancel behaviour remain unchanged.

0.4.03
- Added native AceGUI R, G and B numeric text boxes (0-255) beside every colour picker.
- Added a native AceGUI Opacity (%) text box (0-100) beside every colour picker.
- RGB and opacity fields stay synchronized with live native colour-picker changes and Cancel restoration.

0.4.02
- Removed the Seti's Buff Bars custom colour picker and custom colour-select AceGUI widget.
- All Bar Colour, Background Colour, Font Colour and Global Background Colour controls now use AceGUI-3.0's native ColorPicker widget.
- Enabled alpha/opacity on every SBB colour control, preserving translucent bar/background/font colours.
- AceGUI now opens Blizzard's modern Retail ColorPickerFrame, retaining wheel/value selection, opacity, hex entry, preview/live updates, confirmation and Cancel restoration.
- Removed the custom colour picker media textures because they are no longer used.

0.4.01
- Rebuilt the standalone options interface around AceGUI's native TabGroup, ScrollFrame and Flow layout rather than fixed SetPoint coordinates.
- Converted the settings controls to native AceGUI widgets for buttons, checkboxes, dropdowns, edit boxes, headings, labels and sliders while retaining the addon-standard square colour swatches/custom colour wheel.
- Replaced the stock AceGUI Frame root with an addon-local AceGUI-compatible movable container that does not set an explicit frame strata or frame level, preventing the options window from sitting above the custom colour picker.
- Native AceGUI dropdown scrolling now handles long LibSharedMedia font and texture lists, removing the old custom scrollable dropdown popup.
- Settings > AddOns remains a lightweight Seti's Buff Bars launcher with an Open Options button.

0.4.00
- Major options UI migration: moved the full configuration interface out of Blizzard Settings > AddOns into a standalone movable AceGUI-3.0 window.
- Preserved the existing General, Font Settings, Global, Buffs, Debuffs, and Weapon Buffs tab layout and controls.
- The options window remembers its moved position and is opened with /sbb options (or /sbb config).
- Settings > AddOns now contains only the Seti's Buff Bars title and an Open Options launcher button.
- Embedded the current WoWAce AceGUI-3.0 core and Frame container used by the custom options window.

0.3.76
- Added Global > Timeless Bars with Empty/Full choices for permanent Buff and Debuff duration bars.
- Timeless bar fill is primed through the existing native CustomAuraButton duration-bar binding, without reading protected aura duration data in addon Lua.
- Added Global Bar Overrides > Background Colour using the addon standard custom colour wheel and clickable square swatch.
- Choosing the global background colour copies it to Buffs, Debuffs and Weapon Buffs; individual group background colours can still be adjusted afterward.

0.3.75
- Removed all aura tooltip anchoring to Buff, Debuff and Weapon Buff bars.
- Buff and Debuff CustomAuraButton tooltips now use Blizzard's native ANCHOR_CURSOR_RIGHT anchor and follow the mouse.
- Weapon Buff GameTooltip now uses UIParent as its safe owner with ANCHOR_CURSOR_RIGHT, so it follows the mouse without any GameTooltip:SetPoint() call or dependency on a secure bar.
- Icon-side and Grow Up/Grow Down settings no longer affect tooltip position.

0.3.74
- Fixed GameTooltip:SetPoint() taint on Weapon Buff hover caused by anchoring the global tooltip directly to a SecureActionButtonTemplate bar.
- Weapon Buff GameTooltip now remains fully owned and positioned relative to UIParent; no GameTooltip point depends on a protected/restricted Weapon Buff frame.
- Directional Weapon Buff placement is preserved using the unrestricted mouse position plus configured bar dimensions: icons RIGHT -> tooltip LEFT, icons LEFT -> tooltip RIGHT; Grow Up uses the bottom corner and Grow Down uses the top corner.
- Buff/Debuff tooltip handling is unchanged and continues to use Blizzard's native CustomAuraButton tooltip anchor path.

0.3.73
- Moved Buff, Debuff and Weapon Buff tooltips from the fixed HUD tooltip area to the individual hovered aura bar, matching the default UI style.
- Tooltip side follows icon position: icons on the RIGHT place the tooltip on the LEFT of the bar; icons on the LEFT place the tooltip on the RIGHT.
- Tooltip corner follows group growth: Grow Up anchors from the hovered bar's bottom outside corner; Grow Down anchors from its top outside corner.
- Buff/Debuff bars continue to use Blizzard's protected AuraButtonTooltip and native CustomAuraButton OnEnter path; no restricted mouse script hooks were added.
- Weapon Buff GameTooltip keeps UIParent as its safe owner while its geometry is positioned beside the hovered secure bar, preserving secure right-click cancellation.
- Tooltip anchors are refreshed when icon-side or growth settings are changed.

0.3.72
- Restored Buff/Debuff mouseover tooltips using the fixed-HUD anchoring pattern used by ordinary action-button tooltips.
- Blizzard AuraButtonTooltip is now passed through GameTooltip_SetDefaultAnchor during initialization, allowing normal HUD-tooltip positioning hooks to place it, and CustomAuraButton uses ANCHOR_NONE when it becomes the secure owner.
- No OnEnter/OnLeave hook is installed on Blizzard's restricted CustomAuraButton; Blizzard still securely supplies the aura identity, tooltip contents and Buff right-click cancellation.
- AuraButtonTooltip remains separate from GameTooltip so WoW 12.1 secret/forbidden aura aspects cannot contaminate the global HUD tooltip.
- Weapon Buff tooltips/cancellation, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are unchanged from 0.3.71.

0.3.71
- Fixed Buff/Debuff tooltips not appearing after the HUD-tooltip positioning change.
- Blizzard uses a dedicated AuraButtonTooltip for protected CustomAuraButton auras, rather than the normal GameTooltip. The addon now lets GameTooltip_SetDefaultAnchor (and tooltip addons that hook it) establish the HUD position on GameTooltip, then copies only that safe geometry to AuraButtonTooltip before aura buttons become restricted.
- AuraButtonTooltip is no longer assigned UIParent as an owner during initialization; Blizzard's intrinsic secure OnEnter remains responsible for assigning the protected aura-button owner, populating the tooltip and hiding it on leave.
- Buff right-click cancellation, Weapon Buff secure cancellation, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are unchanged from 0.3.70.

0.3.70
- Fixed ADDON_ACTION_FORBIDDEN when right-clicking a Weapon Buff.
- Weapon Buff bars now use Blizzard's SecureActionButtonTemplate with the native cancelaura action and a permanent target-slot, so temporary enchant removal is executed by Blizzard's secure click handler instead of addon Lua calling C_PaperDollInfo.CancelTemporaryEnchantment directly.
- Each Weapon Buff bar is permanently tied to Main Hand, Off Hand, or Ranged slot; the visible bars are sorted by remaining duration during layout so secure target-slot attributes never need to change in combat.
- Protected Weapon Buff show/hide/reposition changes are deferred until PLAYER_REGEN_ENABLED when necessary, preventing combat taint while preserving timer updates.
- Tooltips, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are otherwise unchanged from 0.3.69.

0.3.69
- Fixed the WoW 12.1 taint error caused by HookScript("OnEnter") on Blizzard's restricted CustomAuraButton frames.
- Buff and Debuff aura buttons are no longer hooked or assigned replacement mouse handlers; Blizzard's intrinsic secure tooltip and right-click cancellation handlers remain untouched.
- Buff/Debuff tooltips now use ANCHOR_PRESERVE and the standard HUD tooltip position is primed at login with GameTooltip_SetDefaultAnchor, so the native protected aura tooltip can appear at the HUD tooltip location without modifying a forbidden OnEnter handler.
- Weapon Buff tooltips, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are unchanged from 0.3.68.

0.3.68
- Buff and Debuff aura tooltips now use Blizzard's normal HUD tooltip anchor instead of appearing immediately to the right of the aura bar.
- The native CustomAuraButton still populates the protected aura tooltip and handles right-click Buff cancellation; Seti's Buff Bars only re-anchors the already-populated tooltip through GameTooltip_SetDefaultAnchor with UIParent.
- This also lets HUD-tooltip addons such as ArchonTooltip position Buff and Debuff tooltips consistently with spell/action tooltips.
- Weapon Buff HUD tooltips, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are unchanged from 0.3.67.

0.3.67
- Fixed Weapon Buff tooltip taint caused by owning GameTooltip directly from the movable Weapon Buff bar.
- Weapon Buff hover now uses Blizzard's normal HUD tooltip anchor with UIParent as the safe owner, matching spell/action tooltips and allowing tooltip addons such as ArchonTooltip to position the tooltip normally.
- Weapon Buff right-click cancellation, aura ordering, ElkBuffBars-style fill scaling, snapping and stacking are unchanged from 0.3.66.

0.3.66
- Added native aura tooltips when hovering Buff and Debuff bars.
- Buff bars now use Blizzard's CustomAuraButton right-click cancellation path, so right-clicking a removable Buff dismisses it without exposing WoW 12.1 secret aura data to addon Lua.
- Weapon Buff bars now show the equipped weapon/item tooltip on hover, including its temporary enchant information.
- Right-clicking a Weapon Buff cancels its temporary weapon enchant outside combat using C_PaperDollInfo.CancelTemporaryEnchantment.
- Aura ordering, ElkBuffBars-style fill scaling, snapping, stacking and gap positioning are unchanged from 0.3.65.

0.3.65
- Replaced the shared 60-second bar scale with ElkBuffBars-style per-aura scaling.
- Buff and Debuff bars now leave their range to Blizzard's native DurationBar binding, so each bar shows remaining time as a fraction of that aura's own original duration.
- Weapon Buff bars now use 0 to that enchant's own total duration, matching the same remaining/original-duration behaviour.
- Aura ordering, snapping, three-group stacking and gap positioning are unchanged from 0.3.64.

0.3.64
- Changed Buff, Debuff and Weapon Buff fill lengths to use one shared absolute remaining-time scale instead of each aura's own original duration.
- Auras with the same time remaining now have the same bar length (for example, every aura showing 4s has an identical fill).
- The common scale is 60 seconds: auras with more than one minute remaining stay full until they enter their final minute, then shrink linearly toward zero.
- Blizzard still supplies and updates Buff/Debuff remaining-time values through the native DurationBar binding; Seti's Buff Bars only applies a fixed 0-60 display range, avoiding arithmetic or comparisons on WoW 12.1 secret aura durations.
- Aura ordering, snapping, three-group stacking and gap positioning are unchanged from 0.3.63.


0.3.63
- Reworked native aura ordering around Blizzard's stable ExpirationOnly/Normal priority order instead of relying on a reversed comparator.
- Buff/Debuff flow layout now runs from the group's outside edge back toward its anchor, so Grow Up shows shortest at the top and Grow Down shows shortest at the bottom while the longest/permanent auras remain nearest the anchor.
- Player UNIT_AURA bursts are now coalesced for 0.05 seconds before a full native priority rebuild, ensuring a newly-applied longer aura is reinserted ahead of shorter existing auras after Blizzard finishes the current aura update pass.
- Aura expiration values are still never compared in addon Lua, preserving WoW 12.1 secret-value safety.
- Snapping, three-group stacking and gap positioning are unchanged.



0.3.62
- Fixed dynamic duration reordering when a new longer Buff or Debuff is applied after shorter auras are already visible.
- Player UNIT_AURA changes now queue a one-frame, coalesced native CustomAuraContainer rebuild so Blizzard's secure ExpirationOnly priority table is repopulated and the frames are laid out in the new duration order immediately.
- Ordering remains longest-to-shortest from the anchor outward: Grow Up has the shortest aura at the top; Grow Down has the shortest aura at the bottom.
- Aura duration comparisons remain inside Blizzard's WoW 12.1 AuraContainer code rather than addon Lua, avoiding secret-value taint.
- Snapping, three-group stacking, empty-group collapse and gap positioning are unchanged from 0.3.61.


0.3.61
- Restored duration ordering for Buffs, Debuffs and Weapon Buffs so each group always runs from longest remaining duration at the anchor/growth origin to shortest remaining duration at the outside edge.
- Grow Up now places the shortest aura at the top of the group.
- Grow Down now places the shortest aura at the bottom of the group.
- Permanent auras remain on the long-duration side of the ordering, nearest the anchor.

0.3.60
- Fixed the residual locked-layout gap when an empty aura group sits between two populated snapped groups.
- A locked empty middle group now collapses as a zero-height bridge and suppresses only its own outgoing spacing, leaving exactly one normal configured gap between the two visible groups instead of two stacked gaps.
- Unlocked empty anchors still retain their normal spacing so magnetic snapping and visible anchor placement are unchanged.
- Player aura and weapon-enchant changes now refresh saved snap links out of combat, so an empty group collapses immediately and normal spacing returns as soon as that group gains an aura.
- PLAYER_REGEN_ENABLED performs a deferred snap refresh for aura changes that occurred while protected layout changes were blocked in combat.

0.3.59
- Fixed the small vertical jump/gap that occurred when snapping to an empty aura group while anchors were unlocked.
- Empty Buff, Debuff and Weapon Buff groups now use the visible mover edge for both LibSimpleSticky's magnetic preview and the saved post-drop attachment, so the bar no longer moves by the group spacing on mouse-up.
- As soon as the target group gains an aura, the saved stack automatically resumes attaching to the real outer aura-group edge.
- Existing three-group chaining, left/centre/right alignment, locked empty-group collapse and WoW 12.1 secret-value protections are retained.

0.3.58
- Fixed horizontal jumping when snapping to an empty Buff or Debuff group.
- Saved stack placement no longer relies on the live CustomAuraContainer width, which can collapse to zero when the group has no active auras.
- LEFT/CENTRE/RIGHT stack alignment is now resolved from the target group's configured width and stable left origin, so an empty target cannot place one group's right edge on another group's left edge.
- Existing three-group chaining, empty-anchor stacking/collapse, LibSimpleSticky magnetic dragging, and WoW 12.1 secret-value protections are retained.

0.3.57
- Fixed empty-anchor horizontal snapping when moving an existing two-group stack onto a single empty aura group.
- LibSimpleSticky now aligns the complete horizontal envelope of the moving connected stack, not only the root mover frame, so left/centre/right matching remains like-for-like.
- A lone empty target group now exposes the actual full-width addon anchor rectangle directly to the sticky proxy while unlocked, preventing the target from behaving like a centre line.
- Existing three-group stacking, locked empty-group collapse, Bartender-style magnetic dragging, and WoW 12.1 secret-value protections are retained.

0.3.56
- Fixed asymmetric three-group snapping: a single group can now magnetise onto the true top/bottom outer edge of an existing two-group stack.
- Sticky targeting now treats saved stack links as an undirected connected component and calculates the visible outer envelope, so the result no longer depends on which group was originally dragged onto which.
- The exact outer stack member selected by LibSimpleSticky is now saved as the new group's target, keeping chained stacks stable after the drop.
- Existing Bartender/LibSimpleSticky magnetic movement, empty-group anchor stacking, locked empty-group collapse, and WoW 12.1 secret-value protections are retained.

0.3.55
- Fixed three-group snapping so Buffs, Debuffs and Weapon Buffs can all participate in the same saved stack instead of stopping after two groups.
- LibSimpleSticky proxies now expose the outer edge of the existing stack chain in the dragged group's growth direction, so the third group magnetises to the true top/bottom of the current stack.
- Linked groups are now eligible as safe sticky targets; their geometry is reconstructed from the independent root mover plus saved links rather than reading restricted Blizzard frame coordinates.
- Empty groups remain valid snap targets while unlocked because their visible anchor still occupies a stack slot.
- When anchors are locked, empty groups are treated as zero-height sections so groups after them collapse into the gap instead of reserving an invisible bar-height.
- Empty Weapon Buff groups now use a near-zero-height aura-origin proxy while locked, matching the collapse behaviour of Buff and Debuff containers.
- Kept the Bartender/LibSimpleSticky magnetic dragging and WoW 12.1 secret-value protections introduced in the previous builds.

0.3.54
- Fixed the WoW 12.1 UntrustedLayoutScriptExecution taint raised when a LibSimpleSticky helper proxy was anchored to a restricted Buff/Debuff/Weapon Buff mover.
- Sticky helper frames are now anchored only to UIParent at a copied safe out-of-combat coordinate, so they never inherit forbidden aspects.
- Snap detection now targets the ACTUAL visible outer edge of the target group: down-growing source groups magnetise to the target group's bottom, while up-growing source groups magnetise to its top.
- Buff/Debuff target edges are calculated from the current HELPFUL/HARMFUL aura count plus the configured bar height/spacing and screen limit; Blizzard aura-button/container geometry is still never read.
- Weapon Buff target edges use the addon's own visible weapon-buff bars.
- Left/centre/right Bartender-style alignment is retained and recorded directly by LibSimpleSticky.
- Saved stack links still use the existing live target attachment after the drop, so linked groups continue to follow target group growth without anchors stacking on each other.

0.3.53
- Changed LibSimpleSticky targets from the other group's visible anchor to addon-owned aura-group edge proxies. Anchors no longer magnetise directly to each other.
- Down-growing groups now snap their anchor below a valid bar-edge position at the bottom of the target group; up-growing groups snap above a valid bar-edge position at the top of the target group.
- Sticky detection uses configured bar height/spacing and possible bar slots rather than Blizzard CustomAuraContainer geometry, avoiding WoW 12.1 secret-value reads while preserving Bartender-style magnetic dragging.
- The final saved stack link still anchors to the target group's live outer edge so linked groups follow the target as its aura section changes.

0.3.52
- Kept the LibSimpleSticky/Bartender-style drag-time snapping introduced in 0.3.51.
- Aura-group movers now use an exterior-edge-only SimpleSticky mode: left/centre/right alignment is retained, but centre/interior vertical snapping is suppressed so Buff, Debuff, and Weapon Buff anchors cannot magnetise directly on top of one another.
- Seti's Buff Bars movers use a 25-pixel vertical/horizontal magnetic capture range without changing SimpleSticky behaviour for frames owned by other addons.
- Added anchor-data validation and repair before SetPoint so incomplete/corrupt saved anchor tables from earlier snap builds fall back to valid per-group defaults instead of causing a SetPoint usage error during login.
- Repaired anchor data is written back to the active profile on the next normal settings save.

0.3.51
- Replaced the custom aura-group proximity detector with embedded LibSimpleSticky-1.0, using the same drag-time snapping approach used by Bartender4.
- LibSimpleSticky receives only Seti's Buff Bars-owned mover frames; Blizzard CustomAuraButton/CustomAuraContainer geometry is never passed into the library, avoiding WoW 12.1 secret-value arithmetic.
- Snapping is now magnetic while dragging with a 25-pixel capture range. Shift temporarily suppresses snapping, matching LibSimpleSticky behaviour.
- On release, the library-reported target is converted into the addon's saved Buff/Debuff/Weapon Buff stack relationship, including left/centre/right alignment and chained stacking.
- Linked child movers are excluded from LibSimpleSticky geometry and are appended through the saved stack chain, preventing secret coordinates from entering the library.
- Existing profile position persistence is retained; LibWindow was not added because Seti's Buff Bars already saves/restores its own mover positions.

0.3.50
- Fixed ADDON_ACTION_FORBIDDEN during initialization by removing the direct AddForbiddenAspects() call from Seti's Buff Bars mover frames.
- Mover frames continue to use Blizzard's DisableUntrustedLayoutScriptsTemplate when it is available, allowing the restriction to be established by Blizzard's template code rather than a protected addon call.
- Snap/stack detection and saved snap links are otherwise unchanged from 0.3.49 so this build isolates the protected-function fix.

0.3.49
- Rebuilt group snapping for WoW 12.1 so it no longer tries to calculate the live Buff/Debuff group edge from CustomAuraContainer frame counts.
- Snap detection now uses only Seti's Buff Bars-owned mover geometry and a safe configured snap corridor, so dropping an anchor over/along another aura group can engage without reading secret aura layout values.
- After a snap is detected, the source mover is anchored directly to the target CustomAuraContainer edge; Blizzard's layout engine therefore keeps stacked groups attached automatically as the target gains or loses auras.
- Added the required UntrustedLayoutScriptExecution opt-in for mover frames that follow a CustomAuraContainer.
- Added an addon-owned Weapon Buff span proxy so Buffs, Debuffs and Weapon Buffs can all be used as stack targets.
- Removed the 0.1-second snap geometry polling; saved snap chains now follow target layout changes through relative frame anchoring.

0.3.48
- Fixed the remaining WoW 12.1 secret-number error when snapping Buff/Debuff groups.
- Snap calculations no longer read GetLeft/GetRight/GetTop/GetBottom from Blizzard CustomAuraButton frames; those coordinates can be secret in 12.1.
- Visible group bounds are now derived from Seti's Buff Bars-owned mover geometry, configured bar size/spacing, growth direction, lock state, and active aura count.
- Added secret-value guards around all geometry used by the snap system so restricted coordinates are never passed into math operations.

0.3.47
- Fixed a WoW 12.1 secret-value error when attempting to snap Buff/Debuff aura groups.
- Snap-bound calculations no longer test Blizzard CustomAuraButton visibility with IsShown(), which can return a secret boolean.
- Visibility checks are retained only for Seti's Buff Bars-owned mover and weapon-buff frames; Blizzard aura-button bounds are taken from the active aura-group frame list directly.

0.3.46
- Reworked group snapping to follow ElkBuffBars' proven stick-to-group model instead of proximity-testing the entire dragged aura block.
- On drag release, the source anchor now compares its growth-origin edge with the target group's opposite outer edge and snaps when their left, centre, or right edges are within the same 25-pixel capture area used by ElkBuffBars.
- Snapped groups are positioned directly from the target group's live bounds, so changing aura counts keeps Buffs, Debuffs, and Weapon Buffs stacked without relying on accumulated movement deltas.
- Existing snap links from 0.3.44/0.3.45 are retained and migrated to left alignment.

0.3.45
- Fixed group snapping so the visible unlocked anchor itself is used as the magnetic snap target when dragged near another aura group.
- Final placement still uses the complete visible Buff, Debuff, or Weapon Buff group bounds, so snapped groups stack flush above/below one another without overlapping.
- Increased the snap capture area slightly to make dropping an anchor beside another group reliable while preserving horizontal alignment.

0.3.44
- Buff, Debuff, and Weapon Buff groups now snap vertically to one another when an unlocked anchor is dropped close to another group.
- Snapping uses the full visible group bounds, so groups stack above/below one another instead of overlapping when multiple auras are shown.
- Snapped relationships are saved per profile and restored after /reload or profile changes.
- Snapped groups continue following the group they are attached to as visible aura counts change outside combat; dragging a snapped source group detaches it for free positioning.

0.3.43
- Unlocked bar anchors now occupy their own layout slot instead of overlapping the first aura bar.
- Aura sections begin immediately beyond the visible anchor in their configured growth direction.
- Locking the anchors collapses the aura section into the anchor's saved position; unlocking restores the separate anchor slot.
- Applied the same anchor-slot behaviour to Buffs, Debuffs, and Weapon Buffs.

0.3.42
- Fixed bar-anchor length resetting to the default size after /reload.
- Movers now restore the active profile's Buff, Debuff, and Weapon Buff width/height immediately during login instead of waiting for a later settings refresh.

0.3.41
- Fixed bar anchors not refreshing their live aura layout immediately after being moved.
- Releasing an anchor now reapplies the bar layout straight away, so disabling/re-enabling a bar group is no longer required.
- Buff and Debuff containers now repopulate immediately when anchor position changes alter the available on-screen bar count.

0.3.40
- Adopted the user's manually adjusted positioning as the new baseline.
- Version metadata updated to 0.3.40.

0.3.39
- Moved the New Profile edit box 10 pixels left so its visible left edge aligns with the Profile dropdown above it.
- Kept the Create Profile and Remove Profile button positions unchanged.

0.3.38
- Corrected the General-tab New Profile edit-box alignment. The field now moves right so its visible left edge aligns with the Profile dropdown above it.
- Kept the Create Profile button in its previously shifted-right position.

0.3.37
- Aligned the New Profile edit box with the visible left edge of the Profile dropdown.
- Moved the Create Profile button the same distance to the right to keep the row balanced.

0.3.36
- Moved New Profile and Create Profile underneath the Profile dropdown on the General tab.
- Moved Remove Profile to the right of the Profile dropdown.
- Shifted the remaining General controls down to keep the profile controls separated and aligned.

0.3.35
- Moved the New Profile field and Create Profile button 40 pixels left on the General tab.
- Added a Remove Profile button for deleting the currently selected custom profile.
- The Default profile is protected and cannot be removed; removing the active custom profile switches back to Default.

0.3.34
- Added a Profile dropdown at the top of the General tab. Existing users are migrated into a Default profile without losing their current settings.
- Added New Profile and Create Profile controls. Newly created profiles start from the addon's default settings and become active immediately.
- Profile selection restores all bar, font, colour, visibility, position, and Global/per-group settings while keeping each profile independent.

0.3.33
- Removed the introductory description from the top of the Global tab and shifted all Global controls upward.
- Removed the main settings scrollbar entirely; all main tabs now fit within the settings viewport.
- Removed the introductory descriptions from General, Buffs and Debuffs and shifted their controls upward to reclaim the space.
- Swapped the top-tab positions of Font Settings and Global, so Font Settings now appears before Global.

0.3.32
- Removed the duplicate page-title heading from the top of General, Global, Font Settings, Buffs, Debuffs, and Weapon Buffs.
- Shifted each tab's description and controls upward to use the space previously occupied by the page-title heading.
- Reduced the stored page heights accordingly so the layout remains compact.

0.3.31
- Added Global Bar Overrides below the Global tab separator for Bar Width, Bar Height, Bar Spacing, Grow Upwards, Timer Reduces From, and Spell Icon Position.
- Changing a Global override propagates that value to Buffs, Debuffs, and Weapon Buffs.
- Buff, Debuff, and Weapon Buff tabs remain independently editable afterward, so a per-group change only affects that group.

0.3.30
- Restored Buff, Debuff, and Weapon Buff Bar Colour / Background Colour selectors directly underneath Spell Icon Position.
- Removed the main settings scrollbar from Weapon Buffs (and all non-Global tabs) after layout updates, preventing Blizzard's scroll-frame template from making it reappear.

0.3.29
- The main settings scrollbar is now shown only on the Global tab; General, Font Settings, Buffs, Debuffs, and Weapon Buffs no longer display it.
- All editable text boxes now use centred text alignment, including numeric slider values and colour-picker fields.

0.3.28
- Moved the Font Settings Size sliders 5 pixels to the right.
- Reduced editable slider value-box width by 3 pixels.
- Made every numeric slider value editable throughout the settings; values can be changed by dragging the slider or typing directly into the value box.

0.3.27
- Removed the opacity percentage text displayed beside every colour-selection swatch; opacity remains available in the colour picker.
- Centred the Font Settings Size sliders in the gap between the Font and Outline / Effect controls.
- Moved the Font Settings Colour selectors 15 pixels to the right.
- Replaced the Font Settings Size value label with an editable number box; values can still be changed with the slider or typed directly.

0.3.26
- Changed all settings colour swatches to square buttons for a consistent appearance across Font, Buff, Debuff, and Weapon Buff options.
- Renamed the Font Settings colour control from 'Font Colour' to 'Colour'.

0.3.25
- Moved the Outline / Effect controls left on the Font Settings tab.
- Moved the Font Colour controls left so the colour swatch and opacity percentage remain fully inside the settings frame.

0.3.24
- Added an independent Font Colour control to Aura Name Text, Timer Text, and Aura Stack Text on the Font Settings tab.
- Font colours use the addon's existing custom colour wheel and opacity controls, matching the Bar Colour and Background Colour selectors.
- Font colour changes apply immediately to Buffs, Debuffs, and Weapon Buffs and are saved in the addon settings.

0.3.23
- Reduced the stack-count inset so the number sits slightly closer to the bottom-right edge of the aura icon.

0.3.22
- Moved aura stack/charge text to the bottom-right corner of the icon.
- Stack-count handling remains generic and uses Blizzard's native application-count binding for all classes and specializations.
- Removed class/spec-specific examples from the stack-count implementation notes.

0.3.21
- Fixed Buff/Debuff stack counts by removing the custom NumericRuleFormatter from SetApplicationCount.
- Stack counts now use Blizzard's native default CustomAuraButton application-count path, which safely handles secret aura application values and displays counts greater than 1.
- Simplified the stack FontString to a normally styled overlay region before it is registered with Blizzard.
- Applies generically to stacked player auras across all classes and specializations.

0.3.20
- Reworked Buff/Debuff stack-count formatting to use Blizzard's native NumericFormatter path explicitly.
- Counts of 2 or more are formatted inside the secure aura pipeline; a single application remains hidden.
- Stack text now stays permanently anchored to its overlay carrier instead of rebuilding the secret-text region's anchors during restyles.
- Forced the stack region to a visible OVERLAY sublevel before it is registered with SetApplicationCount.

0.3.19
- Reworked Buff/Debuff stack-count rendering to use a dedicated overlay carrier frame above the StatusBar and icon artwork.
- The stack FontString remains registered with Blizzard's native SetApplicationCount binding, but is no longer re-registered during restyles.
- Stack text now has a guaranteed visible draw layer and explicit icon-sized layout while preserving the selected Stack font, size and effect.

0.3.18
- Fixed Buff/Debuff stack numbers still not being visible.
- Aura application-count FontStrings now have an explicit icon-sized rectangle, avoiding zero-sized secret-text regions under WoW 12.1's native aura binding.

0.3.17
- Fixed Buff/Debuff Aura Stack Text not showing the application count.
- Stack-count FontStrings are now re-registered with Blizzard's native SetApplicationCount binding after restyling, so active stack numbers repaint immediately.

0.3.16
- Fixed the first Aura Name font change after login sometimes leaving the aura name blank.
- Font changes are now applied after the dropdown click completes, then Blizzard's aura text bindings are refreshed in two passes across subsequent frames.

0.3.15
- Fixed some Aura Name fonts appearing blank immediately after selection.
- Font changes now force Blizzard's native aura bindings to refresh on the next frame, repopulating active Buff/Debuff text without requiring /reload.

0.3.14
- Fixed Aura Name font changes not repainting immediately on active Buff/Debuff bars.
- After changing the Aura Name font, the Blizzard secure spell-name binding is re-registered so the selected font applies immediately without the text going blank or requiring /reload.

0.3.13
- Version metadata updated to 0.3.13.
- Includes the current scrollable font dropdown and font-selection fixes.
- Font (LibSharedMedia) selectors now open a fixed-height scrollable list instead of expanding to the full installed font list.
- The font list shows up to 12 entries at once, supports the mouse wheel and scrollbar, and opens centred near the currently selected font.

0.3.10
- Moved all shared font controls from the Global tab into a dedicated Font Settings tab.
- The Global tab now contains only shared scale, media, frame-strata and timer-unit options.

0.3.9
- Reduced the vertical spacing between the Global Aura Name Text, Timer Text, and Aura Stack Text sections.
- Overall Frame Strata and Timer Text Units dropdowns now use the same width as the Outline / Effect dropdowns.

0.3.8
- Fixed the Global Aura Name Text, Timer Text, and Aura Stack Text headings drifting away from their controls inside the scroll frame.
- The subsection headings remain white and use an explicit 14px font size: larger than the control labels and smaller than the Font Settings heading.

0.3.7
- Moved the Global media separator 15 pixels lower and shifted the Font Settings content down to preserve spacing.
- Increased the white Aura Name Text, Timer Text, and Aura Stack Text subsection headings so they sit between the Font Settings header and the control-label font sizes.

0.3.6

Seti's Buff Bars 0.3.6

A clean WoW 12.1+ buff/debuff bar addon using Blizzard's native CustomAuraContainerTemplate.

Features
- Native player Buff and Debuff bars
- Expiration-time sorting
- Independent Grow Up / Grow Down
- Screen-edge limiting
- EllesmereUI bar textures
- Optional suppression of Blizzard's normal player aura icons
- Temporary weapon enchant bars (Main Hand / Off Hand / Ranged)
- Independent temporary-enchant mover and growth direction
- AddOns Settings panel with Blizzard-style General, Global, Font Settings, Buffs, Debuffs, and Weapon Buffs tabs
- Temporary enchant bars show the applied enchant name when Blizzard tooltip data exposes it
- Temporary enchant bars use purple by default

Commands
/sbb options      Open the AddOns settings panel
/sbb unlock       Unlock the Buffs, Debuffs, and Weapon Buffs movers
/sbb lock         Lock movers
/sbb reset        Reset all mover positions
/sbb              Show command help

0.2.4: Weapon Buffs now track Blizzard temporary weapon-effect state directly so hidden/no-icon effects such as Tidecaller's Guard, Earthliving Weapon and Mana Oils display reliably; purple styling and spell names retained. Also assigns AuraContainer units after groups for reliable UNIT_AURA registration.

0.2.4:
- Top-facing Settings tabs
- Per-section width, height, and spacing for Buffs, Debuffs, and Weapon Buffs
- Overall Frame Strata setting
- Migrates 0.2.3 global dimensions into each section


0.2.5 changes:
- Buffs, Debuffs and Weapon Buffs each have independent Bar Colour and Background Colour pickers.
- LibSharedMedia-3.0 is embedded (with LibStub/CallbackHandler) and the General tab has a global status-bar texture selector.
- EllesmereUI is optional. When enabled, its full bar-texture catalogue is imported into LibSharedMedia from EllesmereMedia.lua. Without EllesmereUI, Seti's Buff Bars uses the other available LibSharedMedia textures.


0.2.6 changes:
- Timer/status fill now exactly matches the background region dimensions.
- Background Colour pickers include an alpha/opacity slider.
- Default Buff bar colour is #00A0FF.
- Default LibSharedMedia bar texture is Blizzard.
- Existing untouched 0.2.5 defaults migrate automatically; customised values are preserved.

0.2.7
- Replaced stock colour picker with a Seti Buff Bars custom HSV colour wheel.
- Added brightness control and live colour preview.
- Colour opacity can be set with either a 0-100 slider or numeric entry for bar and background colours.


0.2.8
- Added synchronized R, G and B numeric fields (0-255) to the custom colour picker.
- Added a synchronized hexadecimal colour field accepting values such as #00A0FF or 00A0FF.
- RGB/hex edits update the wheel, brightness, preview and saved colour immediately.


0.2.9
- Replaced the HSV picker model with a direct additive RGB colour wheel and RGB wheel texture.
- The picker now stores and edits RGB values directly; brightness remains a separate intensity control.
- R, G and B numeric fields now have proper spacing.
- R, G and B labels are anchored above their own input boxes so they cannot sit underneath adjacent fields.


0.2.10
- Reworked the custom colour dialog to a clean default-style wheel with no separate brightness slider.
- RGB (0-255), Hex (#RRGGBB), Opacity slider and Opacity numeric entry remain visible and synchronized.
- RGB fields use wider gutters and labels remain directly above their own fields.


0.2.12
- Reworked the custom colour picker to match the classic Blizzard-style layout more closely.
- Kept the hue/saturation wheel and added a dedicated vertical selected-colour-to-black shade/value strip.
- RGB (0-255), Hex (#RRGGBB), live preview, Opacity slider and Opacity numeric entry remain synchronized.
- Clicking/dragging the shade strip updates RGB/Hex immediately; RGB/Hex edits reposition both wheel and shade indicators.


0.2.14
- Replaced the horizontal opacity control with a vertical selected-colour-to-transparent strip and numeric percentage underneath.
- Moved RGB fields inward with wider spacing.
- Settings colour swatches are now directly clickable; removed the separate Choose Colour buttons.


0.2.16
- Centred the opacity numeric field precisely beneath the opacity strip using a compact custom edit box.
- Reduced the opacity field to just over three digits wide.
- Reduced the Hex field to fit six hexadecimal digits and retained the fixed # label outside the box.
- Reduced unused bottom space in the colour picker for a tighter layout.


0.2.16
- Restyled the R/G/B fields to match the compact opacity/Hex edit boxes.
- Matched RGB field height, border, font, and padding with the compact picker controls.
- Centred the Hex heading directly above the Hex input field.

0.2.17
- Aligned the R, G, B, and Hex edit boxes on one vertical centreline beneath the Preview swatch.
- Tightened the spacing between the RGB stack and Hex control.


0.2.20
- Adjusted RGB picker row spacing to R -32, G -68, B -106 for a more even vertical layout.

0.2.22
- Aura timer textures now use remaining time and shrink as timers count down.
- Added per-section Timer Reduces From (Left/Right) options for Buffs, Debuffs, and Weapon Buffs.

0.2.22: Added per-section Left/Right spell icon positioning for Buffs, Debuffs, and Weapon Buffs.

0.3.6
- Added a horizontal separator below Bar Texture and Timer Text Units on the Global tab.
- Reduced the Aura Name Text, Timer Text, and Aura Stack Text section-heading font size.
- Changed those three text-style section headings from yellow to white.

0.3.5
- Added a vertical scrollbar to the AddOns settings content area so lower controls stay inside the Blizzard Settings frame.
- Global Timer Text Units dropdown now matches the Overall Frame Strata dropdown width.
- Shortened the Global font dropdowns and moved Size and Outline / Effect left into three evenly spaced columns.
- Added a Font Settings header above the Global text-style controls.

0.3.4
- Fixed Global settings layout so the Outline / Effect dropdowns remain fully inside the settings panel.
- Version numbering will be incremented for every addon change from this release onward.

0.3.3
- Weapon Buffs now obey the global Hours/Minutes/Seconds timer mode and show seconds when enabled.
- Removed whitespace between timer values and unit letters (for example, 35m21s).
- Native Buff/Debuff SecondsFormatter now strips interval whitespace.

0.3.2
- Fixed native Buff/Debuff duration text creation on WoW 12.1.
- Uses C_StringUtil.CreateSecondsFormatter() instead of a Lua SecondsFormatterMixin.
- Restores secure timer text while keeping LibSharedMedia font styling.

0.3.1
- Added a Global settings tab. Overall Scale, Overall Frame Strata and Bar Texture moved from General to Global.
- Added independent LibSharedMedia font selectors for Aura Name, Timer Text and Aura Stack Text.
- Added independent font sizes for Aura Name, Timer Text and Aura Stack Text.
- Added font effects: None, Monochrome, Outline, Outline Slug, Thick Outline and Drop Shadow.
- Aura stack text is now centred on the spell/weapon icon.
- Added Timer Text Units: Hours / Minutes / Seconds or Hours / Minutes only.
- Global text changes apply to Buffs, Debuffs and Weapon Buffs.
