# GSE

## [3.3.16-5-g67e8087](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/tree/67e80873a298ed7bccb8a86a3edd5cb1a49efc6d) (2026-05-09)
[Full Changelog](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/compare/3.3.16...67e80873a298ed7bccb8a86a3edd5cb1a49efc6d) [Previous Releases](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/releases)

- #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  
