# GSE

## [3.3.16-8-g6e90572](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/tree/6e9057293f92736beded62ef72bcf6824554a2bc) (2026-05-16)
[Full Changelog](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/compare/3.3.16...6e9057293f92736beded62ef72bcf6824554a2bc) [Previous Releases](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/releases)

- #1893 update build script  
- #1890 Statics: register specId 1480 (DH Devourer/Aldrachi) in SpecIDClassList  
- #1890 Colour code corrections — don't rewrite MacroBlock text mid-typing  
    The previous patch's macroEditBox OnTextChanged handler called  
    sel:SetText(value) to rewrite the visible text when decoded value  
    differed from raw input. AceGUI fires OnTextSet after SetText, which  
    resets the caret to position 0 and strips editor colour markup —  
    producing a visible cursor-jump and lost colouring whenever the user  
    typed into a MacroBlock.  
    Drop the sel:SetText branch. The handler still decodes value and  
    stores the clean form via StoreMacroEditorText(value); we just no  
    longer overwrite the live edit box while the user is interacting  
    with it. The same change applies to GSE\_QoL's CreateSpellEditBox  
    override since it mirrors the base GUI implementation.  
    Patch from external contributor (Larry, 2026-05-10).  
- #1890 Colour code corrections — UI editor decode/disable-coloring wiring  
    Editor.lua:  
      - GetCompiledMacroBodyLength — decode before measuring length.  
      - Raw editor compile/cancel — decode input before loadstring; disable  
        IndentationLib on widget release/cancel so stale colouring doesn't leak.  
      - Per-action save (cfg.sourceBox) — StoreMacroEditorText for macro fields,  
        DecodeEditorText for everything else.  
      - Raw-edit button — sanitize sequence version before opening raw editor.  
      - Macro action render — repair leaked markup on action.macro before display,  
        decode spelltext for non-macro types, decode in OnTextChanged callbacks.  
      - macroEditBox — DisableMultilineEditorColoring on creation/release; decode  
        text on change with a recursion guard before storing via StoreMacroEditorText.  
    Editor\_Actions.lua:  
      - Wrap each spellEditBox:GetText() with DecodeEditorText (or  
        StoreMacroEditorText for macro radio).  
      - Compiled-side-panel + visible-char count both decoded.  
    Editor\_Macro.lua:  
      - Macro template / compiled-template / OnTextChanged paths decode through  
        DecodeMacroEditorText / StoreMacroEditorText.  
      - Manual macro display SetText decoded.  
    Editor\_Variable.lua:  
      - OnRelease callback disables IndentationLib on the value editor.  
    MacroCompare.lua:  
      - DisableCompareColoring on close, action button, and OnRelease for both  
        diff columns.  
    MacroPreview.lua:  
      - DisablePreviewColoring on PreviewLabel OnRelease.  
    QoL.lua (GameMode > 10 retail-spell editor):  
      - Mirrors Editor.lua's macroEditBox pattern: repair-on-display, decode  
        OnTextChanged with recursion guard, DisableMultilineEditorColoring on  
        create/release, count + side-panel through decode helpers.  
- #1890 Colour code corrections — sanitize on storage and import paths  
    Storage.lua:  
      - migrateSequenceVersions / ReplaceSequence — call SanitizeSequenceEditorMarkup  
        so previously-stored sequences with leaked markup get cleaned on next save.  
      - buildAction / CompileMacroText — decode macro text before slash-command  
        detection so a leaked colour prefix doesn't hide the leading "/".  
    Utils.lua:  
      - OOCAddSequenceToCollection / OOCPerformMergeAction — sanitize before storing.  
      - processWAGOImport — scrub the imported tree.  
      - ImportSerialisedSequence — scrub COLLECTION payloads (with defensive  
        `or {}` on Sequences/Variables/Macros), MACRO, and VARIABLE imports.  
      - Adds local helpers scrubImportedEditorMarkup / scrubCollectionPayload that  
        recurse using the new GSE.Decode* helpers (with inline fallback if absent).  
- #1890 Colour code corrections — add editor-markup decode helpers  
    Adds shared helpers used across the editor, storage, and import paths to  
    strip leaked WoW colour markup (|cff…|r and || escape pairs) without  
    losing the translator-coloured display text:  
      GSE.DecodeEditorText            — strip colour markup from any string  
      GSE.DecodeMacroEditorText       — same + repair |cmd → /cmd at line starts  
      GSE.StoreMacroEditorText        — decode + recompile-then-decode for storage  
      GSE.SanitizeSequenceEditorMarkup — recursive walker over sequence tables  
    This commit lands the helpers only; storage/import/UI call-sites follow.  
- #1890 Hide the macro compilation unless the cokmpile template window is open  
- #1893 manage import queue  
