# GSE

## [3.3.15-6-g3337d8f](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/tree/3337d8f59a2aeebb5626f68f5538a1f4f36cdc0b) (2026-05-07)
[Full Changelog](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/compare/3.3.15...3337d8f59a2aeebb5626f68f5538a1f4f36cdc0b) [Previous Releases](https://github.com/TimothyLuke/GSE-Advanced-Macro-Compiler/releases)

- #1890 more editor and icon related fixes  
- LastUpdated: UTC via GetServerTime + macro tracking + clear PlatformID on rename  
    Holistic fix for the cross-account multi-write bouncing class. When one  
    Companion installation has the same sequence/macro/variable on two WoW  
    accounts and is syncing both, each /reload writes its own slightly-  
    different copy of the record and the server alternates between them,  
    firing a Discord toast on every flip (observed at ~9 toasts in 4 min  
    for one author 2026-05-08).  
    Resolution: server side picks the newer-stamped copy. That requires  
    the addon stamp every record with a comparable timestamp.  
    Changes:  
      * GSE/API/StringFunctions.lua: GSE.GetTimestamp() now returns UTC via  
        date('!%Y%m%d%H%M%S', GetServerTime()). Was client-local time which  
        made cross-timezone comparison nonsensical.  
      * GSE/API/Storage.lua: UpdateMacro stamps node.LastUpdated. Macros  
        previously never tracked LastUpdated at all. Plus new function  
        GSE.BackfillLastUpdated -- idempotent, gated by a SavedVariables  
        flag, walks GSE.Library / GSEVariables / GSEMacros and stamps any  
        pre-existing record missing the field.  
      * GSE/API/Events.lua: PLAYER\_ENTERING\_WORLD calls  
        GSE.BackfillLastUpdated so legacy records light up on first login  
        after the user updates the addon.  
      * GSE\_GUI/Editor.lua: sequence rename (newname-flag path) clears  
        sequence.MetaData.PlatformID and the GSEPlatformIDs sidecar entry  
        under the original origin key. Prevents the v4-renamed-to-v5 case  
        where both sequences inherit the same server \_id and bounce.  
      * GSE\_GUI/Editor\_Variable.lua: variable rename (OnTextChanged  
        callback) clears GSEVariablePlatformIDs[oldName].  
      * GSE\_GUI/Editor\_Macro.lua: macro rename (OnEnterPressed callback)  
        clears GSEMacroPlatformIDs[oldName].  
    Pairs with:  
      * gse-api commit 9afbc3b -- server-side enrich.js stamps LastUpdated  
        when the incoming payload doesn't carry one.  
      * GSE-Companion commit 667ea56 -- preserves top-level LastUpdated on  
        upload (was being silently stripped during rawData rebuild).  
- #1908 Fix multiclick button settings  
- #1893 sync updates  
- #1893 More Sync checks  
- #1890 Fix Patreon icon selector  
