feat(wizard): re-surface first-run wizard once for existing v1.5.2 users

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.
This commit is contained in:
2026-05-18 23:18:19 +02:00
parent 1e418ab86f
commit 9745abea0c
2 changed files with 23 additions and 0 deletions
+10
View File
@@ -100,6 +100,15 @@ public class Configuration : IPluginConfiguration
public Dictionary<ChatType, int> 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;
+13
View File
@@ -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;