fix(vtank): slice 7 round F item 1 — Advanced Options bottom block gone

Owner's second live look (2026-09-07): "The whole bottom window of
advanced options should not be there." VTank's own AdvancedOptionsView
is a bare list + category list + edit field + description (KB
08-ui-views.md §1) — no notice line, no extra controls. Deletes the
"Editing X." notice label and the entire "MossTank Extras" section fix
round B item 8/9 added below it (Checkpoint/Jump/Remove/Set Follow
Target + status label/Follow Corners/Open Doors/Nav Priority/
Follow-Nav min distance stepper), shrinking the popup back to VTank's
392x300 (resizable, min = that; was 392x450).

Every control removed had a real path already, so nothing is actually
unreachable:
  - Checkpoint/Jump: `/mt addnavcheckpoint` / `/mt addnavjump` (already
    documented in the /vt help text).
  - Remove: click any row of the Route tab's own waypoint grid
    (DeleteRouteWaypointAt) — RemoveRouteWaypointCore and
    DeleteRouteWaypointAtCore are the identical removal logic, so the
    button duplicated a control that already exists.
  - Set Follow Target: re-select "Follow" in the Route tab's own
    nav-mode menu — SelectRouteMode already calls CaptureFollowTarget
    every time RouteMode.Target is (re-)selected.
  - Follow Corners/Open Doors/Nav Priority/Follow-Nav min distance:
    real VtankOptionCatalog entries (FollowAroundCorners, OpenDoors,
    NavPriorityBoost, NavCloseStopRange) already listed and editable in
    THIS SAME popup's own option list/field above, or via
    `/vt opt set <Name> <value>`.
No C# state or command was deleted — MossTankPanel's properties/actions
(RemoveRouteWaypoint, SetFollowTarget, AddRouteCheckpoint, AddRouteJump,
NavigationSettings.FollowAroundCorners/OpenDoors/Priority/
MinimumDistanceMeters) are untouched; only the redundant second UI
surface for them is gone.

Mutation shown to fail first: MossTankMarkupContractTests'
ExpectedPopupBounds and MossTankMarkupBuildOverRealFilesTests'
WideningTheRealAdvancedOptionsPopupGrowsTheOptionListWithoutOverlappingItsSibling
were changed to expect 392x300 before the markup shrink — both failed
with "Expected: 300 Actual: 450" against the still-450-tall file, then
passed once mosstank-advanced.xml's own h/minh dropped to 300.

MossTank suite 722/722 (no count change, no control removed here had a
dedicated test); App markup/plugin filter 258/258.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-07 18:41:08 +02:00
parent 279de7c2db
commit ad3f4df575
3 changed files with 51 additions and 32 deletions

View file

@ -130,17 +130,46 @@
overwrites Width/Height to the CURRENT measured text extent on every
single draw, immediately after the parent's own anchor pass runs (both
happen inside the same DrawSelfAndChildren frame) — so whatever a
label's anchor computes is discarded before it is ever visible. A
genuinely working vertical anchor (e.g. "bottom", tracking the growing
window edge) was deliberately NOT used here either: with the notice
label directly below it also unanchored, a large enough resize would
walk description right into notice — the same class of risk this
round avoided for the option list. Anchoring the rest of the vertical
stack in lockstep is a real, larger redesign left for a future round;
this one stays inside "make it actually resizable without introducing
a new overlap," per the round's own stated scope. -->
<panel x="253" y="405" w="392" h="450" title="MossTank Advanced Options"
visible="{AdvancedOptionsVisible}" resizable="true" minw="392" minh="450">
label's anchor computes is discarded before it is ever visible.
Round F item 1 (owner's second live look, 2026-09-07: "The whole bottom
window of advanced options should not be there"): deleted the
AdvancedOptionNotice label ("Editing X.") and the ENTIRE "MossTank
Extras" section fix round B item 8/9 put below it. VTank's own
AdvancedOptionsView is list + category list + edit field + description
only (docs/research/vtank-kb/08-ui-views.md §1) — no notice line, no
extra controls — and every action the Extras section exposed already
has a real path that does not need this popup at all:
- Checkpoint/Jump -> `/mt addnavcheckpoint` / `/mt addnavjump`
(documented in the /vt help text; AddRouteCheckpointCore/
AddRouteJumpCore were never anything but thin wrappers the button
called).
- Remove -> click any row of the Route tab's own waypoint grid
(DeleteRouteWaypointAt) — RemoveRouteWaypointCore and
DeleteRouteWaypointAtCore are the same removal logic (clamp index,
RemoveAt, reset nav, refresh, save), so the button was a pure
duplicate of a control that already exists.
- Set Follow Target -> re-select "Follow" in the Route tab's own
nav-mode menu (SelectRouteMode unconditionally calls
CaptureFollowTarget whenever RouteMode.Target is (re-)selected) —
SetFollowTarget/CaptureFollowTarget were never anything but a
manual re-invocation of the same call.
- Follow Corners / Open Doors / Nav Priority / Follow-Nav min
distance -> real VtankOptionCatalog entries (FollowAroundCorners,
OpenDoors, NavPriorityBoost, NavCloseStopRange) already listed and
editable in THIS popup's own lOptionList/field above, or via
`/vt opt set <Name> <value>` — the toggles/stepper below were
exact duplicates of rows already present in the retail list.
This popup no longer owns any of that state; every field/setting it
duplicated is a plain property on MossTankPanel untouched by this
round (NavigationSettings.FollowAroundCorners/OpenDoors/Priority/
MinimumDistanceMeters, plus RemoveRouteWaypoint/SetFollowTarget/
AddRouteCheckpoint/AddRouteJump themselves) — nothing was deleted from
the plugin, only the second, redundant UI surface for it. Panel height
shrinks 450->300 to match VTank's real 392x300 AdvancedOptionsView
footprint (minh follows); minw stays 392. -->
<panel x="253" y="405" w="392" h="300" title="MossTank Advanced Options"
visible="{AdvancedOptionsVisible}" resizable="true" minw="392" minh="300">
<list x="4" y="4" w="256" h="160" rowheight="17" anchor="left top right"
selected="{SelectedAdvancedOptionIndex}" onchange="{SelectAdvancedOption}"
tooltip="Select one of Virindi Tank's 137 advanced options.">
@ -163,23 +192,4 @@
tooltip="Edit the selected advanced-option value and press Enter to apply." />
<label x="4" y="188" w="384" h="80" text="{AdvancedOptionDescription}" color="#FFE8DEC3"
anchor="left top right" />
<label x="4" y="272" w="384" h="16" text="{AdvancedOptionNotice}" color="#FFC7B98F" />
<label x="4" y="294" w="200" h="16" text="MossTank Extras" color="#FFE8DEC3" />
<button x="4" y="312" w="90" h="18" text="Checkpoint" onclick="{AddRouteCheckpoint}" />
<button x="100" y="312" w="90" h="18" text="Jump" onclick="{AddRouteJump}" />
<button x="4" y="334" w="90" h="18" text="Remove" onclick="{RemoveRouteWaypoint}" />
<button x="100" y="334" w="140" h="18" text="Set Follow Target" onclick="{SetFollowTarget}" />
<label x="4" y="356" w="376" h="16" text="{RouteFollowTargetText}" color="#FFC7B98F" />
<toggle x="4" y="376" w="140" h="18" text="Follow Corners"
checked="{FollowAroundCornersEnabled}" onclick="{ToggleFollowAroundCorners}" />
<toggle x="200" y="376" w="140" h="18" text="Open Doors"
checked="{OpenDoorsEnabled}" onclick="{ToggleOpenDoors}" />
<toggle x="4" y="398" w="140" h="18" text="Nav Priority"
checked="{NavigationPriorityEnabled}" onclick="{ToggleNavigationPriority}" />
<label x="4" y="420" w="180" h="16" text="{RouteMinimumDistanceText}" color="#FFC7B98F" />
<button x="190" y="420" w="24" h="18" text="-"
onclick="{RouteMinimumDistanceDown}" tooltip="Decrease the route arrival distance." />
<button x="218" y="420" w="24" h="18" text="+"
onclick="{RouteMinimumDistanceUp}" tooltip="Increase the route arrival distance." />
</panel>

View file

@ -140,7 +140,10 @@ public sealed class MossTankMarkupBuildOverRealFilesTests
Assert.True(built.Resizable);
Assert.Equal(392f, built.MinWidth);
Assert.Equal(450f, built.MinHeight);
// Round F item 1 shrunk the popup back to VTank's real
// AdvancedOptionsView footprint (392x300) after deleting the
// "Editing X." notice and the "MossTank Extras" section.
Assert.Equal(300f, built.MinHeight);
// Bypass the VisibleSource binding (bound to AdvancedOptionsVisible,
// false on the stub automation) the same way the Monsters test

View file

@ -480,7 +480,13 @@ public sealed class MossTankMarkupContractTests
{
// Round D item 2: removing the Apply/Back button row (retail
// has neither) reclaimed 26px, shrinking the panel 476->450.
["mosstank-advanced.xml"] = (392f, 450f),
// Round F item 1 (owner's second live look: "The whole bottom
// window of advanced options should not be there") deleted the
// "Editing X." notice label and the entire "MossTank Extras"
// section below it, shrinking the popup back to VTank's real
// AdvancedOptionsView footprint (392x300,
// docs/research/vtank-kb/08-ui-views.md §1) — 450->300.
["mosstank-advanced.xml"] = (392f, 300f),
["mosstank-loot-editor.xml"] = (268f, 300f),
["mosstank-buffpicker.xml"] = (268f, 236f),
["mosstank-metaeditor.xml"] = (630f, 160f),