fix: allocate Console viewport space to processing controls
This commit is contained in:
@@ -392,3 +392,21 @@ Manifest ffb46fbdb875f97ff2eb7a7bed8bf6d5c4df53b8a63c738ffcde5fc5f6b7f6ad, 87 pa
|
||||
with nothing carried. Sage-2345 counts the timer-fixture red as the first in
|
||||
this 191 window; any second red stops and is escalated to Mos. Previous logs
|
||||
are retained in gate-attempt-eaf/.
|
||||
|
||||
|
||||
### mos-1248 / sage-2363: desktop viewport allocation (unrun static candidate)
|
||||
|
||||
The second red on 0f8235277 was shell.test.mjs:380 (1062 versus 1000).
|
||||
The shell gives .frame a viewport-based minimum at packages/webui/src/public/shell.css:135;
|
||||
processing.css:12-14 replaced that minimum but used a column flex body with only
|
||||
min-height:100vh, so the new bar was not allocated a bounded share of the viewport.
|
||||
The desktop body now uses explicit grid rows for the command bar, controls, optional
|
||||
banner, frame and footer. The frame row is minmax(min-content,1fr): it takes the
|
||||
remaining short-page space while long content may grow the document. No clipping,
|
||||
overflow suppression, fixed body height, test viewport change or assertion removal.
|
||||
The existing shell.test.mjs:380 equality stays byte-identical. Added assertions
|
||||
check actual processing-bar visibility, positive height, viewport placement and
|
||||
no document scroll at 1440x1000; the existing 1440x420 long-page checks remain.
|
||||
KS59 reverts processing.css to 0f8235277's bytes and must fail that same shell
|
||||
browser test. Total: 74 planned mutants. No test or mutant has run on this fix.
|
||||
Webby must statically review this delta before Sage opens the full no-carry gate.
|
||||
|
||||
@@ -9,9 +9,19 @@
|
||||
viewport rather than adding a full viewport below the controls. Navigation
|
||||
retains the shell's command-bar/footer bounds independently of this bar. */
|
||||
@media (min-width:760px) {
|
||||
body { --processing-nav:240px; display:flex; flex-direction:column; min-height:100vh; }
|
||||
body {
|
||||
--processing-nav:240px;
|
||||
display:grid;
|
||||
grid-template-columns:minmax(0,1fr);
|
||||
grid-template-rows:auto auto auto minmax(min-content,1fr) auto;
|
||||
min-height:100vh;
|
||||
}
|
||||
.cmdbar { grid-row:1; }
|
||||
.processing-controls { grid-row:2; }
|
||||
.processing-banner { grid-row:3; }
|
||||
footer.foot { grid-row:5; }
|
||||
.processing-controls, .processing-banner { margin-left:var(--processing-nav); }
|
||||
.frame { flex:1; min-height:0; }
|
||||
.frame { grid-row:4; min-height:0; }
|
||||
.frame > .content { grid-column:2; }
|
||||
.frame > .tree { position:fixed; width:var(--processing-nav); }
|
||||
}
|
||||
|
||||
@@ -378,6 +378,17 @@ test('shell in a browser: System default, seeded states, 400px, focus and the Ct
|
||||
const edges = 'JSON.stringify(["cmdbar","tree","foot"].map(c=>document.querySelector("."+c).getBoundingClientRect()).map(r=>[Math.round(r.top),Math.round(r.bottom)]).concat([[document.documentElement.scrollHeight,innerHeight]]))';
|
||||
let [bar, tree, foot, [scrollH, innerH]] = JSON.parse(await b.evaluate(edges));
|
||||
assert.equal(scrollH, innerH);
|
||||
const processingBar = JSON.parse(await b.evaluate(`JSON.stringify((() => {
|
||||
const el = document.querySelector('#processing-controls'), rect = el.getBoundingClientRect();
|
||||
const style = getComputedStyle(el);
|
||||
return { visible: el.getClientRects().length > 0 && style.display !== 'none' && style.visibility === 'visible',
|
||||
top: rect.top, bottom: rect.bottom, height: rect.height, viewport: innerHeight,
|
||||
scroll: document.documentElement.scrollHeight };
|
||||
})())`));
|
||||
assert.ok(processingBar.visible && processingBar.height > 0, 'the processing bar is visible on the short Board');
|
||||
assert.ok(processingBar.top >= bar[1] && processingBar.bottom <= processingBar.viewport,
|
||||
'the processing bar sits inside the viewport below the command bar');
|
||||
assert.equal(processingBar.scroll, processingBar.viewport, 'the visible processing bar adds no short-page scroll');
|
||||
assert.deepEqual([tree[0], tree[1]], [bar[1], foot[0]]);
|
||||
await b.viewport(1440, 420); await b.evaluate('scrollTo(0, 1e5)'); await flat();
|
||||
[bar, tree, foot, [scrollH, innerH]] = JSON.parse(await b.evaluate(edges));
|
||||
|
||||
Reference in New Issue
Block a user