# GSE

## [3.3.20-22-ge8e2b4a](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/tree/e8e2b4abef1518c1e9d21e86307d4cbce5b49fec) (2026-06-13)
[Full Changelog](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/compare/3.3.20...e8e2b4abef1518c1e9d21e86307d4cbce5b49fec) [Previous Releases](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/releases)

- #1930 Fix localisation strings  
- #1930 Fix missing Localisation string  
- Merge pull request #1933 - #1930 Skin selection dropdown (Native/Modern/addon)   
    #1930 Skin selection dropdown (Native/Modern/addon) + relocate GUI helpers to GSE\_Utils  
- #1930 Skin selection dropdown (Native/Modern/addon) + relocate GUI helpers to GSE\_Utils  
    Replaces the two mutually-exclusive Native/Modern skin checkboxes in the options  
    panel with a single Skin dropdown offering Native, Modern, and a dynamic  
    addon-specific entry (labelled "ElvUI" or "EllesmereUI", shown only when that  
    addon is installed).  
    - New saved variable GSEOptions.SkinMode ("NATIVE"/"MODERN"/"ADDON"; unset =  
      AUTO). AUTO uses the installed addon skin when present, otherwise Native; an  
      explicit choice is always honoured. Migrates the old boolean  
      GSEOptions.UseModernSkin (true -> "MODERN", otherwise AUTO) and keeps it in  
      sync for downgrade safety.  
    - Provider selection in GSE\_GUI/Skin.lua now honours the mode: ElvUI/EllesmereUI  
      only drives GSE's look when the effective mode is "ADDON", so choosing Native  
      or Modern is respected even with one installed (previously the external  
      provider always won).  
    - Moves the front-end-only helpers (skin accessors, UI-scale subsystem,  
      frame-positioning math) out of core GSE/API/InitialOptions.lua into a new  
      GSE\_Utils/Appearance.lua. The macro engine never calls them; GSE\_Utils is the  
      lowest shared front-end dependency (GSE\_Options and GSE\_GUI both depend on it),  
      so they stay available without forcing the LoadOnDemand GSE\_GUI to load. Core  
      keeps only the saved-variable defaults + migration.  
    No change to the macro engine. luacheck (std=lua51) / busted unaffected: no spec  
    or core file references the moved functions.  
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>  
- #1914 Fix random spell flash  
- #1928 post mnerge update  
- Merge remote-tracking branch 'refs/remotes/origin/master'  
- #1928 Fix loading of large sequences into the editor  
- #1920 SKyriding Keybinds  
- #1925 Guard retail api reference and fall back to classic one when not available  
- Merge branch 'master' of https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler  
- #1927 NativeUI: rewire reparented slim-scrollbar OnValueChanged  
    anchorModernSlimScrollBar reparents the stock UIPanelScrollFrameTemplate  
    scrollbar off its ScrollFrame onto a BackdropTemplate Frame so it can  
    render outside the ScrollFrame's SetClipsChildren(true) clip region.  
    After the reparent, Blizzard's UIPanelScrollBar\_OnValueChanged still  
    ran self:GetParent():SetVerticalScroll(value) — but GetParent() was now  
    the BackdropTemplate frame, which has no SetVerticalScroll. Every  
    scroll tick threw "attempt to call a nil value" out of  
    SecureScrollTemplates.lua:24.  
    Notes was the visible crash because the editor's pixel-scroll path  
    swaps OnValueChanged after reparenting; the Notes box (and the  
    Debugger output pane) kept the stock handler. Capture the original  
    ScrollFrame before SetParent and re-point OnValueChanged at it.  
    Additive: guarded by GetParent().SetVerticalScroll existence so a  
    non-ScrollFrame parent silently skips; callers that install their own  
    handler still win on top; unskinned setups never enter the branch.  
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>  
- #1914 Fix EllesmereUI Disabled backgrounds  
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>  
- #1924 variable editor: re-evaluate the preview with arguments  
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>  
- #1924 adjust variable scoping to ensure they are loaded correctly  
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>  
- #1914 Minor editor quirks  
- #1923 Fix Alt+Rightclick to lock tracker position  
- #1897 CHange popup text to match current function.  
- #1914 Editor fixes and disable dev mode for non devs  
- #1920 fix toggling sequence names  
- #1920 Toggle Sequence Name display for Overrides in options  
- #1920 remove dependency on state of CVar ActionButtonUseKeyDown  
