feat(settings-refactor): bump configuration version to 10 with wipe migration
This commit is contained in:
@@ -34,7 +34,7 @@ public class ConfigKeyBind
|
||||
[Serializable]
|
||||
public class Configuration : IPluginConfiguration
|
||||
{
|
||||
private const int LatestVersion = 9;
|
||||
private const int LatestVersion = 10;
|
||||
|
||||
public int Version { get; set; } = LatestVersion;
|
||||
|
||||
|
||||
+30
-72
@@ -1,6 +1,7 @@
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using ChatTwo.Ipc;
|
||||
using ChatTwo.Resources;
|
||||
using ChatTwo.Ui;
|
||||
@@ -107,94 +108,51 @@ public sealed class Plugin : IDalamudPlugin
|
||||
// Drop them on load to guarantee the session-only invariant.
|
||||
Config.Tabs.RemoveAll(t => t.IsTempTab);
|
||||
|
||||
#pragma warning disable CS0618 // Type or member is obsolete
|
||||
// TODO Remove after 01.07.2026
|
||||
// Migrate old channel values
|
||||
if (Config.Version <= 5)
|
||||
// Hellion Chat v9 → v10 — Settings UX Polish wipes the configuration so
|
||||
// the new 8-tab layout starts from defaults instead of mapping every
|
||||
// previous setting to its new position. The chat database lives in a
|
||||
// separate file and is not touched. A backup of the pre-wipe JSON is
|
||||
// placed next to the live config as a manual restore safety net.
|
||||
if (Config.Version < 10)
|
||||
{
|
||||
foreach (var tab in Config.Tabs)
|
||||
var configDir = Interface.ConfigDirectory.FullName;
|
||||
var liveConfigPath = Path.Join(configDir, $"{Interface.InternalName}.json");
|
||||
var backupPath = Path.Join(configDir, $"{Interface.InternalName}.json.pre-v10-backup");
|
||||
|
||||
try
|
||||
{
|
||||
if (tab.ChatCodes.Count > 0)
|
||||
if (File.Exists(liveConfigPath))
|
||||
{
|
||||
tab.SelectedChannels = tab.ChatCodes.ToDictionary(pair => pair.Key, pair => (pair.Value, pair.Value));
|
||||
tab.ChatCodes.Clear();
|
||||
File.Copy(liveConfigPath, backupPath, overwrite: true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Backup failure is non-fatal — the wipe still runs, the user
|
||||
// just loses the safety net for manual restore.
|
||||
Plugin.Log.Warning(ex, "[SettingsRefactor] Could not write pre-v10 config backup");
|
||||
}
|
||||
|
||||
if (Config.InactivityHideChannels.Count > 0)
|
||||
Config = new Configuration
|
||||
{
|
||||
Config.InactivityHideChannelsV2 = Config.InactivityHideChannels.ToDictionary(pair => pair.Key, pair => (pair.Value, pair.Value));
|
||||
Config.InactivityHideChannels.Clear();
|
||||
}
|
||||
|
||||
Config.Version = 6;
|
||||
SaveConfig();
|
||||
}
|
||||
}
|
||||
#pragma warning restore CS0618 // Type or member is obsolete
|
||||
|
||||
// Hellion Chat v6→v7: seed Privacy-First defaults.
|
||||
if (Config.Version <= 6)
|
||||
{
|
||||
Config.PrivacyFilterEnabled = true;
|
||||
Config.PrivacyPersistChannels = [..Privacy.PrivacyDefaults.PrivacyFirstWhitelist];
|
||||
Config.PrivacyPersistUnknownChannels = false;
|
||||
// Existing ChatTwo users skip the first-run wizard — the
|
||||
// migration toast already explains what changed and they
|
||||
// can reopen the wizard from Settings → Privacy if they
|
||||
// want to pick a different profile.
|
||||
Config.FirstRunCompleted = true;
|
||||
Config.Version = 7;
|
||||
Version = 10,
|
||||
FirstRunCompleted = true,
|
||||
};
|
||||
SaveConfig();
|
||||
|
||||
Notification.AddNotification(new Dalamud.Interface.ImGuiNotification.Notification
|
||||
{
|
||||
Title = HellionStrings.Migration_Notification_Title,
|
||||
Content = HellionStrings.Migration_Notification_Content,
|
||||
Title = HellionStrings.SettingsRefactor_Migration_Title,
|
||||
Content = HellionStrings.SettingsRefactor_Migration_Content,
|
||||
Type = Dalamud.Interface.ImGuiNotification.NotificationType.Info,
|
||||
InitialDuration = TimeSpan.FromSeconds(15),
|
||||
});
|
||||
}
|
||||
|
||||
// Hellion Chat v7→v8: webinterface removed in 0.2.0. Old config
|
||||
// entries (WebinterfacePassword, AuthStore, etc.) get dropped on
|
||||
// the next save because their properties no longer exist on the
|
||||
// Configuration class. The bump is recorded so the notification
|
||||
// only fires once.
|
||||
if (Config.Version <= 7)
|
||||
{
|
||||
Config.Version = 8;
|
||||
SaveConfig();
|
||||
|
||||
Notification.AddNotification(new Dalamud.Interface.ImGuiNotification.Notification
|
||||
{
|
||||
Title = HellionStrings.Migration_Webinterface_Removed_Title,
|
||||
Content = HellionStrings.Migration_Webinterface_Removed_Content,
|
||||
Type = Dalamud.Interface.ImGuiNotification.NotificationType.Info,
|
||||
InitialDuration = TimeSpan.FromSeconds(20),
|
||||
});
|
||||
}
|
||||
|
||||
// Hellion Chat v8→v9: Auto-Tell-Tabs feature seeded with
|
||||
// property-initializer defaults (enabled, limit 15, history 20,
|
||||
// section header on). No data migration needed — just bump the
|
||||
// version and notify the user once so the feature does not
|
||||
// surprise them.
|
||||
if (Config.Version <= 8)
|
||||
{
|
||||
Config.Version = 9;
|
||||
SaveConfig();
|
||||
|
||||
Notification.AddNotification(new Dalamud.Interface.ImGuiNotification.Notification
|
||||
{
|
||||
Title = HellionStrings.AutoTellTabs_Migration_Title,
|
||||
Content = HellionStrings.AutoTellTabs_Migration_Content,
|
||||
Type = Dalamud.Interface.ImGuiNotification.NotificationType.Info,
|
||||
InitialDuration = TimeSpan.FromSeconds(20),
|
||||
InitialDuration = TimeSpan.FromSeconds(25),
|
||||
});
|
||||
}
|
||||
|
||||
if (Config.Tabs.Count == 0)
|
||||
{
|
||||
Config.Tabs.Add(TabsUtil.VanillaGeneral);
|
||||
}
|
||||
|
||||
LanguageChanged(Interface.UiLanguage);
|
||||
ImGuiUtil.Initialize(this);
|
||||
|
||||
+4
@@ -192,4 +192,8 @@ internal class HellionStrings
|
||||
internal static string Privacy_AutoTellTabs_Preload_Name => Get(nameof(Privacy_AutoTellTabs_Preload_Name));
|
||||
internal static string Privacy_AutoTellTabs_Preload_Description => Get(nameof(Privacy_AutoTellTabs_Preload_Description));
|
||||
internal static string Privacy_AutoTellTabs_Preload_Hint => Get(nameof(Privacy_AutoTellTabs_Preload_Hint));
|
||||
|
||||
// Hellion Chat — Settings UX Polish v10 wipe migration
|
||||
internal static string SettingsRefactor_Migration_Title => Get(nameof(SettingsRefactor_Migration_Title));
|
||||
internal static string SettingsRefactor_Migration_Content => Get(nameof(SettingsRefactor_Migration_Content));
|
||||
}
|
||||
|
||||
@@ -438,4 +438,12 @@
|
||||
<data name="Privacy_AutoTellTabs_Preload_Hint" xml:space="preserve">
|
||||
<value>Greift nur, wenn Auto-Tell-Tabs im Chat-Tab aktiviert sind.</value>
|
||||
</data>
|
||||
|
||||
<!-- Hellion Chat — Settings UX Polish v10 Wipe-Migration -->
|
||||
<data name="SettingsRefactor_Migration_Title" xml:space="preserve">
|
||||
<value>Settings umstrukturiert</value>
|
||||
</data>
|
||||
<data name="SettingsRefactor_Migration_Content" xml:space="preserve">
|
||||
<value>Hellion Chat 0.5.0 hat die Settings in thematische Tabs umstrukturiert. Deine Chat-Datenbank und dein Nachrichtenverlauf bleiben unverändert. Settings wurden auf Defaults zurückgesetzt. Falls du das Privacy-Profil neu wählen willst, findest du den Reopen-Button im Datenschutz-Tab. Ein Backup der vorherigen Config liegt unter HellionChat.json.pre-v10-backup neben der aktiven Config-Datei.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -438,4 +438,12 @@
|
||||
<data name="Privacy_AutoTellTabs_Preload_Hint" xml:space="preserve">
|
||||
<value>Only takes effect when auto tell tabs are enabled in the Chat tab.</value>
|
||||
</data>
|
||||
|
||||
<!-- Hellion Chat — Settings UX Polish v10 wipe migration -->
|
||||
<data name="SettingsRefactor_Migration_Title" xml:space="preserve">
|
||||
<value>Settings reorganised</value>
|
||||
</data>
|
||||
<data name="SettingsRefactor_Migration_Content" xml:space="preserve">
|
||||
<value>Hellion Chat 0.5.0 reorganised the settings into themed tabs. Your chat database and your message history stay untouched. Settings have been reset to defaults; if you want to pick a privacy profile again, the reopen button is in the Privacy tab. A backup of your previous config is at HellionChat.json.pre-v10-backup next to the live config file.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
Reference in New Issue
Block a user