diff --git a/HellionChat/Resources/HellionStrings.Designer.cs b/HellionChat/Resources/HellionStrings.Designer.cs
index 6cc0eec..4ac3105 100644
--- a/HellionChat/Resources/HellionStrings.Designer.cs
+++ b/HellionChat/Resources/HellionStrings.Designer.cs
@@ -114,6 +114,8 @@ internal class HellionStrings
internal static string Wizard_Profile_FullHistory_GdprWarning => Get(nameof(Wizard_Profile_FullHistory_GdprWarning));
internal static string Wizard_Profile_FullHistory_Apply => Get(nameof(Wizard_Profile_FullHistory_Apply));
internal static string Wizard_Reopen_Button => Get(nameof(Wizard_Reopen_Button));
+ internal static string Wizard_Cancel_Label => Get(nameof(Wizard_Cancel_Label));
+ internal static string Wizard_Cancel_Tooltip => Get(nameof(Wizard_Cancel_Tooltip));
internal static string Export_Heading => Get(nameof(Export_Heading));
internal static string Export_Help => Get(nameof(Export_Help));
diff --git a/HellionChat/Resources/HellionStrings.de.resx b/HellionChat/Resources/HellionStrings.de.resx
index f1012f1..687d439 100644
--- a/HellionChat/Resources/HellionStrings.de.resx
+++ b/HellionChat/Resources/HellionStrings.de.resx
@@ -222,6 +222,12 @@
Wizard erneut zeigen
+
+ Später — Defaults behalten
+
+
+ Schließt den Wizard ohne Profil-Auswahl. Die Plugin-Defaults bleiben aktiv und der Wizard erscheint beim nächsten Plugin-Reload erneut.
+
Export (DSGVO Art. 15 — Auskunftsrecht)
diff --git a/HellionChat/Resources/HellionStrings.resx b/HellionChat/Resources/HellionStrings.resx
index d240515..0c736ea 100644
--- a/HellionChat/Resources/HellionStrings.resx
+++ b/HellionChat/Resources/HellionStrings.resx
@@ -222,6 +222,12 @@
Show wizard again
+
+ Later — keep defaults
+
+
+ Close the wizard without selecting a profile. The plugin defaults stay active and the wizard returns on next plugin load.
+
Export (GDPR Art. 15 — Right of access)
diff --git a/HellionChat/Ui/FirstRunWizard.cs b/HellionChat/Ui/FirstRunWizard.cs
index a3b357a..d09687d 100644
--- a/HellionChat/Ui/FirstRunWizard.cs
+++ b/HellionChat/Ui/FirstRunWizard.cs
@@ -30,14 +30,10 @@ public sealed class FirstRunWizard : Window
public override void OnClose()
{
- // Closing the wizard without picking anything = the user accepts
- // whatever defaults are already in place. Mark as complete so we
- // don't pester them again on the next launch.
- if (!Plugin.Config.FirstRunCompleted)
- {
- Plugin.Config.FirstRunCompleted = true;
- Plugin.SaveConfig();
- }
+ // OnClose fires on explicit X-click and on plugin dispose. We never
+ // implicitly accept the defaults here — the explicit "Later" button
+ // does that. If the user hasn't picked a profile yet, the wizard
+ // reopens on the next plugin load.
}
public override void Draw()
@@ -49,7 +45,12 @@ public sealed class FirstRunWizard : Window
var avail = ImGui.GetContentRegionAvail();
var cardWidth = (avail.X - ImGui.GetStyle().ItemSpacing.X * 2) / 3f;
- var cardHeight = avail.Y - ImGui.GetTextLineHeightWithSpacing();
+ // Reserve room for the footer separator + cancel button below the cards.
+ var footerReserve =
+ ImGui.GetStyle().ItemSpacing.Y * 3
+ + ImGui.GetTextLineHeight()
+ + ImGui.GetFrameHeightWithSpacing();
+ var cardHeight = avail.Y - footerReserve;
DrawCard(
"privacy-first",
@@ -87,6 +88,20 @@ public sealed class FirstRunWizard : Window
HellionStrings.Wizard_Profile_FullHistory_Apply,
ApplyFullHistory
);
+
+ ImGui.Spacing();
+ ImGui.Separator();
+ ImGui.Spacing();
+
+ if (ImGui.Button(HellionStrings.Wizard_Cancel_Label))
+ {
+ Plugin.Config.FirstRunCompleted = true;
+ Plugin.SaveConfig();
+ IsOpen = false;
+ }
+
+ if (ImGui.IsItemHovered())
+ ImGuiUtil.Tooltip(HellionStrings.Wizard_Cancel_Tooltip);
}
private void DrawCard(