feat(wizard): the profile cards and the welcome page speak the window's language
The cards were the last surface still drawn from ImGui defaults: four emoji on stock child frames, sized to a fixed 2x2 grid that clipped the longer privacy descriptions in half the supported languages. They are tiles in the row language now -- a resting surface, an accent bar down the left edge when chosen, a held hover over both, tracked caps for the heading. The emoji are FontAwesome glyphs from the icon font the rest of the plugin already uses. Each card measures its own height from its text and the pair in a row takes the taller of the two, inside a scrolling frame, because cutting a privacy choice off mid-sentence is not a thing this plugin gets to do. Step three moves onto ToggleSwitch rows and a drawn theme field with a popup built from PopupRow, using the transient widget overloads throughout: the Func/Action pair saves on every click, and this step is staged until Finish. The welcome page is opaque, unlike every other window here. Those are read at a glance over the game; this one is read once and carries a privacy decision. The fox sat on a hardcoded off-white rectangle that read as paper taped to the window -- it is a disc now, tinted from the theme accent and only lightened as far as the black linework needs, measured rather than set. Three defects surfaced while doing it, all older than this work: - The GDPR notice for full history had been translated into 25 languages and drawn nowhere since the four-step rewrite dropped it on 2026-05-18. It is on the card where the choice is made. - Two cards claimed to be recommended: the badge sat on casual while the data minimisation heading still said "(recommended)" in every language. The suffix is gone, and the word it carried became the badge label. - The wizard had no way back into it at all. /hellion wizard reopens it, and OnOpen resets the staged state so a second run cannot commit picks from a first one the user never saw. The welcome text drops the fork framing: Chat 2 and this plugin have diverged far enough that the codebases no longer line up, so it reads as history in a muted line rather than as a justification up front. In its place is the notice that plugins are a grey area in this game and do not belong in public channels. Channel names in it come from Language.<lang>.resx per language, so the German build says Sagen/Rufen/Schreien and the Polish one says Say/Yell/Shout, which is what a Polish player actually sees on an English client.
This commit is contained in:
+17
-6
@@ -190,7 +190,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
|
||||
// v1.9.0 B5: last full Draw() wall-time in ms, written once per frame at
|
||||
// the end of the UiBuilder.Draw handler. Covers the GlobalStyleScope push
|
||||
// and the font push (§7.5 First-Frame-HITCH must include atlas/style
|
||||
// and the font push (the first-frame hitch measurement must include atlas/style
|
||||
// prologue cost), not just WindowSystem.Draw — measuring the inner call
|
||||
// alone would drop the prologue and make the figure non-comparable to the
|
||||
// v1.5.6 baseline. Only accumulated here; the disk write happens in
|
||||
@@ -360,7 +360,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
Config.Version = 26;
|
||||
|
||||
// Unpinned TempTabs are session-only and dropped on every load. Pinned
|
||||
// TempTabs survive reload — Jin's tester feedback (v1.4.7).
|
||||
// TempTabs survive reload -- tester feedback in v1.4.7.
|
||||
Config.Tabs.RemoveAll(TabLifecycleHelpers.ShouldStripOnLoad);
|
||||
|
||||
// GP-04: clear stale Tab.PopOut flags now — the pool binds further down
|
||||
@@ -599,7 +599,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
_ = Task.Run(
|
||||
async () =>
|
||||
{
|
||||
// FQN: Plugin.Notification (Z.74) shadows the type name.
|
||||
// FQN: the Plugin.Notification property shadows the type name.
|
||||
Dalamud.Interface.ImGuiNotification.IActiveNotification? notif = null;
|
||||
try
|
||||
{
|
||||
@@ -956,7 +956,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
{
|
||||
_hellionSettingsCmd = Commands.Register(
|
||||
"/hellion",
|
||||
"Toggle Hellion Chat. /hellion settings opens settings, /hellion reset restores the default theme."
|
||||
"Toggle Hellion Chat. /hellion settings opens settings, /hellion wizard reopens the setup wizard, /hellion reset restores the default theme."
|
||||
);
|
||||
_hellionSettingsCmd.Execute += OnHellionSettingsCommand;
|
||||
|
||||
@@ -1051,11 +1051,22 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
InputBarLab.Toggle();
|
||||
return;
|
||||
}
|
||||
|
||||
// The wizard had no way back into it: the reopen button the resource
|
||||
// file still carries in 25 languages lost its call site in the
|
||||
// four-step rewrite, and nothing replaced it. Without this the only
|
||||
// route is closing the game and editing FirstRunCompleted by hand.
|
||||
// Toggle, not IsOpen = true, so the same command closes it again.
|
||||
if (arg.Equals("wizard", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
FirstRunWizard.Toggle();
|
||||
return;
|
||||
}
|
||||
#if DEBUG
|
||||
#endif
|
||||
if (arg.Equals("reset", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// Recovery path documented in the v2.x master spec — drops a
|
||||
// Documented recovery path -- drops a
|
||||
// broken custom theme out of the loader cache without touching
|
||||
// the user's JSON on disk.
|
||||
ThemeRegistry.SwitchSilent(Themes.ThemeRegistry.DefaultSlug);
|
||||
@@ -1359,7 +1370,7 @@ public sealed class Plugin : IAsyncDalamudPlugin
|
||||
// B3: the strip/restore mutates the tab LIST, so it shares TabsListLock
|
||||
// with the worker add/remove and the refilter snapshot. Re-entrant: the
|
||||
// one worker caller (HandleTell) already holds it; framework callers take
|
||||
// it here. SavePluginConfig runs inside (short, in-memory) — the §8 fallback
|
||||
// it here. SavePluginConfig runs inside (short, in-memory) — the documented fallback
|
||||
// (serialize a copy outside the lock) is a tracked pre-beta to-do.
|
||||
lock (TabsListLock)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user