diff --git a/HellionChat/Plugin.cs b/HellionChat/Plugin.cs index e90b135..3d49324 100755 --- a/HellionChat/Plugin.cs +++ b/HellionChat/Plugin.cs @@ -637,18 +637,20 @@ public sealed class Plugin : IAsyncDalamudPlugin internal void SaveConfig() { - // Strip session-only Auto-Tell-Tabs before serialization; restore after. - var snapshot = Config.Tabs.ToList(); + // Session-only Auto-Tell-Tabs aren't persisted, so they move aside + // before serialization and re-attach after. Cloning only the temp + // subset keeps the allocation proportional to AutoTellTabsLimit + // (<=15) instead of the full tab list. + var tempTabs = Config.Tabs.Where(t => t.IsTempTab).ToList(); Config.Tabs.RemoveAll(t => t.IsTempTab); Interface.SavePluginConfig(Config); - Config.Tabs.Clear(); - Config.Tabs.AddRange(snapshot); + Config.Tabs.AddRange(tempTabs); - // F2.1: snapshot-restore preserves IsTempTab tabs but the mid-step - // RemoveAll bypasses AutoTellTabsService, so re-peg the counter. - // Null-conditional because SaveConfig can fire before Phase-2 init. + // F2.1: the mid-step RemoveAll bypasses AutoTellTabsService, so + // re-peg the counter. Null-conditional because SaveConfig can fire + // before Phase-2 init. AutoTellTabsService?.ResyncTempTabCounter(); }