The export card scrolled on every tab, at every window size the app allows.
2,286 tests, 0 failures.
What was wrong
Opening Export and switching to IMAGES put the whole watermark group below the fold, cut
"Stamp each asset's set number in a corner" through the middle of its letters at the
scroller edge, and left the corner picker — the control that is supposed to say what it
does by its shape — drawn as four unexplained specks.
None of it was visible in review, because the card was being photographed 780 pixels
tall. A modal in this app is never given more than 526. So every frame of it was a
picture of a card no window hosts, and it looked tidy in all of them.
The one assertion about its height checked that the card clamps to the page it is in —
which the framework does on its own. Nothing asked whether the contents fit inside it.
What changed
Measured, the three pages want 246, 251 and 213 pixels. The shared floor said 262 and
credited that to CONTENTS; the tallest page is IMAGES.
- The head was three rows for one idea — a
• EXPORTkicker above a title reading
"Export this Set" above the tabs, 98px of a 470px card. The title and the tabs share one
row now, which is how the Set browser's own header already reads. 98 → 40. - The manifest's contents are a run, not a column. Five short phrases down five lines
spent about 80px of a pinned block on fifteen words. - The manifest is reserved at its tallest. The pages already shared one height so they
could not move it; nothing stopped it moving them. It measured 113, 145 and 130 as a
spritesheet line and a debug caveat came and went, and the card is centered — so
switching tabs grew the card and shifted every row in it.
All three tabs are now identical, the card fits the smallest window with 30px to spare,
and nothing scrolls.
The corner picker
Unarmed, it was disabled, and the app dims a disabled control to 38% — which is legible
over strong ink and invisible over a hairline and a near-black ground. Restoring the
opacity brightened the dots and still drew no cells: the edge is painted by a part of the
button template whose brush Fluent replaces in its own disabled state, so it has to be
asked for again. The cells keep their strength now and the mark carries the state.
Every capture of this card had both boxes already ticked, so no frame had ever drawn it.
Downloads
| Size | .NET 10 needed | |
|---|---|---|
| Portable | 84 MB | no — unzip anywhere and run. Start here if you are unsure. |
| Single file | 77 MB | no — one .exe. Unpacks itself on first run, so that launch is slower. |
| Single file, .NET | 14 MB | yes — one .exe, runtime left out. |
| Framework-dependent | 14 MB | yes — the same, as a folder. |
The two .NET builds need the .NET 10 desktop
runtime; the other two carry everything.