From 2d626971d9b741af641200b0319af830bf40888e Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 7 Sep 2026 17:24:31 +0200 Subject: [PATCH] =?UTF-8?q?fix(vtank):=20slice=207=20round=20D=20item=204?= =?UTF-8?q?=20=E2=80=94=20resizable=20panel,=20larger=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner live report 2026-09-07: "The size of the entire window needs to be enlarged for default and should also be resizeable." mosstank.xml's main panel is now resizable="true" with minw/minh floored at the PRE-round-D authored size (856x236) and a new default authored size ~15% larger in both directions (984x271) — every one of the nine tab groups grows by the identical 128px-wide/35px-tall delta (848x194 -> 976x229), preserving the original 0px group-to-panel margin design exactly. Every tab gets anchor="left top right bottom" so a future manual drag-resize keeps growing it. The two single-list tabs with nothing beside their list (Monsters, Meta) give their list the SAME full stretch, widened AND heightened by the same 128x35 delta at author time — anchors only react to CHANGE from their first-draw baseline, so bumping only the outer group while leaving the list's own geometry untouched would leave it visually unchanged at the new default (the growth invisibly reserved as margin until a further manual resize). Every other tab's list(s) grow in HEIGHT only (+35), pinned to whichever horizontal edge doesn't have a sibling list/button column in the way (Items/Consumables/Buffs/Route all have one) — a right-pinned sibling (Consumables' Excluded Scarab list, Buffs' Blacklisted Buff Families list) is repositioned +128 at author time so it already sits flush against the enlarged default's right edge. Trailing "Add" rows/status labels below a taller list shift down by the same +35 and get anchor="bottom" to keep tracking. Options/ Profiles/Vitals need no internal changes — only their own group grows. Deviations, both documented in mosstank.xml's own Round D item 4 comment: Monsters' extra 128px of list width lands in its LAST column (the MoveDown icon, which always absorbs the remainder per the markup grammar) — a wider icon cell, not a redesigned grid; seven of nine tabs' groups grow wider than their content uses, leaving harmless empty space on the right at the enlarged default rather than redesigning nine tabs' pixel geometry in one pass (a deliberate, minimal-risk choice — nothing moved INTO another control's space, only into previously-empty margin, so every existing AssertNoSiblingOverlap/ AssertWithinParent guarantee still holds). Tests added: - MossTankMarkupContractTests.AuthoredShellFitsTheMinimumCanvasAnd... updated to the new 984x271 default. - PanelIsResizableFlooredAtThePreRoundDAuthoredSize (resizable="true", minw/minh = 856/236). - EveryStretchingListDeclaresARealAnchor (contract pin: every list in Monsters/Items/Consumables/Buffs/Route/Meta declares a real anchor attribute, not the silent left-top default). - MossTankMarkupBuildOverRealFilesTests. WideningTheRealMainPanelWidensTheRealMonstersList (App.Tests): builds the REAL mosstank.xml against a real MossTankPanel, widens the built root by 100px, and confirms the Monsters list's own Width grows in turn — the same mechanism MarkupResizableAnchorTests already proves against synthetic markup, now proven against the shipped file. Mutation shown to fail: temporarily removing the Monsters list's own anchor attribute failed the new re-layout test (976 -> 976, no growth); restored and confirmed green. A build-copy gotcha surfaced while writing these tests: dotnet build's default incremental copy did NOT refresh the test projects' deployed mosstank.xml after editing the source file (PreserveNewest apparently didn't see it as newer under normal incremental evaluation) — dotnet build --no-incremental was needed to get a fresh copy into bin/ before the size/anchor tests would actually exercise the new markup instead of a stale cached copy. Verified: dotnet build AcDream.slnx -c Release (clean, --no-incremental) green; MossTank suite 715/715 (713 -> 715, two new markup contract pins); App markup/plugin filter 243/243 (242 -> 243, one new re-layout test). Co-Authored-By: Claude Fable 5.1 --- src/AcDream.Plugins.MossTank/mosstank.xml | 197 +++++++++++++----- .../MossTankMarkupBuildOverRealFilesTests.cs | 71 +++++++ .../MossTankMarkupContractTests.cs | 83 +++++++- 3 files changed, 286 insertions(+), 65 deletions(-) diff --git a/src/AcDream.Plugins.MossTank/mosstank.xml b/src/AcDream.Plugins.MossTank/mosstank.xml index eb011e182..fc318aab2 100644 --- a/src/AcDream.Plugins.MossTank/mosstank.xml +++ b/src/AcDream.Plugins.MossTank/mosstank.xml @@ -50,8 +50,60 @@ 248->252) as a small safety margin since it was the tightest already-OK case measured. --> - + + @@ -80,7 +132,7 @@ settings that already existed (only reachable through the generic Advanced Options key-value editor) and now also get VTank's own direct checkbox. --> - +