Patch release focused on the left ribbon.
Fixes
- Ribbon icons vanish / reorder after a workspace switch.
LeftRibbonManagernow re-injects its icons onlayout-change(Obsidian, core Workspaces, and Workspaces Plus all tear the ribbon down and rebuild it onchangeLayout), and restores them to the configured order only when they're actually out of order. Closes #67, closes #81. - Icon mappings for not-yet-loaded commands are no longer deleted.
injectIcons()used to pruneadvancedToolbar.mappedIconsentries whose command wasn't registered at load — losing mappings for slow-loading plugins or plugins absent on mobile, then syncing that loss. It now just skips applying the icon. Helps #147, #148. loadSettingshardened against a corrupt / partially-writtendata.json. Non-object payloads are rejected and the nestedhide/advancedToolbargroups are deep-merged instead of shallow-assigned, so a malformed value no longer collapses settings to defaults on the next save. Helps #131.
Also adds 9 regression tests for LeftRibbonManager (previously untested).
Full detail: #205