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(