From 9745abea0ce6846e599b5c123fe3c0429727a447 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Mon, 18 May 2026 23:18:19 +0200 Subject: [PATCH] feat(wizard): re-surface first-run wizard once for existing v1.5.2 users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bestehende User haben FirstRunCompleted=true vom alten Single-Page Wizard und würden den neuen Multi-Step-Flow nie zu sehen bekommen. Neues Config-Feld WizardLastShownVersion (Default leer) trägt die Version, deren Wizard zuletzt gezeigt wurde. Plugin.LoadAsync vergleicht gegen die Konstante WizardReshowVersion ("1.5.2") und setzt FirstRunCompleted einmalig zurück, wenn die Werte abweichen. SaveConfig sofort danach, damit ein Pre-Finish-Crash die Re-Show nicht endlos wiederholt. Künftige Cycles bumpen die Konstante nur wenn der Wizard wirklich umstrukturiert wird. --- HellionChat/Configuration.cs | 10 ++++++++++ HellionChat/Plugin.cs | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/HellionChat/Configuration.cs b/HellionChat/Configuration.cs index c7b0434..9d78591 100755 --- a/HellionChat/Configuration.cs +++ b/HellionChat/Configuration.cs @@ -100,6 +100,15 @@ public class Configuration : IPluginConfiguration public Dictionary RetentionPerChannelDays = []; public DateTimeOffset RetentionLastRunAt = DateTimeOffset.MinValue; public bool FirstRunCompleted; + + // Tracks which plugin version last surfaced the first-run wizard. + // When the running version is newer than this, Plugin.LoadAsync + // re-opens the wizard once so existing users see major UX reworks + // (e.g. the v1.5.2 multi-step rewrite). Skip path and Finish both + // set FirstRunCompleted = true on close, so the wizard only fires + // once per version bump even if the user dismisses it. + public string WizardLastShownVersion = string.Empty; + public bool UseHellionFont = true; public bool ShowHonorificTitleInHeader = true; @@ -336,6 +345,7 @@ public class Configuration : IPluginConfiguration RetentionLastRunAt = other.RetentionLastRunAt; FirstRunCompleted = other.FirstRunCompleted; + WizardLastShownVersion = other.WizardLastShownVersion; UseHellionFont = other.UseHellionFont; ShowHonorificTitleInHeader = other.ShowHonorificTitleInHeader; ShowHonorificGlow = other.ShowHonorificGlow; diff --git a/HellionChat/Plugin.cs b/HellionChat/Plugin.cs index b486c8f..6286521 100755 --- a/HellionChat/Plugin.cs +++ b/HellionChat/Plugin.cs @@ -324,6 +324,19 @@ public sealed class Plugin : IAsyncDalamudPlugin new SelfTests.WizardStateSmokeStep(this), ]); + // Re-surface the wizard for existing users when a major UX + // rework ships. The constant tracks the most recent version + // whose wizard should be shown once; bump it in future cycles + // that reshape the onboarding flow. Saved immediately so a + // pre-Finish crash doesn't loop the prompt forever. + const string WizardReshowVersion = "1.5.2"; + if (Config.WizardLastShownVersion != WizardReshowVersion) + { + Config.FirstRunCompleted = false; + Config.WizardLastShownVersion = WizardReshowVersion; + SaveConfig(); + } + if (!Config.FirstRunCompleted) FirstRunWizard.IsOpen = true;