Skip to content

fix(layout): bound the grid tracks so wide content cannot widen the shell - #15

Merged
sixvolts merged 1 commit into
mainfrom
ci/grid-overflow
Sep 6, 2026
Merged

sixvolts merged 1 commit into
mainfrom
ci/grid-overflow

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown

The chat overflow persisted after the previous attempt because I fixed the
wrong layer. min-width:0 on .chat-messages / .chat-msg was correct in principle
but irrelevant: the overflow originates ABOVE them.

A 1fr grid track has an automatic minimum of min-content, so a track cannot
shrink below its widest descendant. One wide markdown table therefore forced
the content column past the viewport, and every descendant inherited the
over-wide box. .content (overflow:hidden, min-width:0) and .ws-panel
(min-width:0) were already correct — the constraint simply never reached them.

Bounded with minmax(0, ...):
.view-shell sidebar + content column
.ws-grid-single columns and rows
.ws-grid-split-2x1 columns, rows
.ws-grid-split-1x2 columns, rows
.ws-grid-t-top columns, rows

This is also why single-pane looked WORSE than split: the content column is the
full window there, so the overrun ran off screen entirely instead of being
bounded by the neighbouring pane.

Also removes the overflow-x:hidden I added to .chat-messages last time. It hid
the symptom and made it worse — the text was clipped with no way to scroll to
what was cut off. With the tracks bounded, a wide table scrolls inside its own
box (.chat-msg-body table) as originally intended.

The visual.spec.ts pixel baselines cover the app shell, so a regression here is
catchable in CI in a way the sidebar flash never was.


Opened automatically after the tiers check passed on 5a27c435.

The check is attached to this branch head, so this is mergeable now.

…hell

The chat overflow persisted after the previous attempt because I fixed the
wrong layer. min-width:0 on .chat-messages / .chat-msg was correct in principle
but irrelevant: the overflow originates ABOVE them.

A `1fr` grid track has an automatic minimum of min-content, so a track cannot
shrink below its widest descendant. One wide markdown table therefore forced
the content column past the viewport, and every descendant inherited the
over-wide box. .content (overflow:hidden, min-width:0) and .ws-panel
(min-width:0) were already correct — the constraint simply never reached them.

Bounded with minmax(0, ...):
  .view-shell            sidebar + content column
  .ws-grid-single        columns and rows
  .ws-grid-split-2x1     columns, rows
  .ws-grid-split-1x2     columns, rows
  .ws-grid-t-top         columns, rows

This is also why single-pane looked WORSE than split: the content column is the
full window there, so the overrun ran off screen entirely instead of being
bounded by the neighbouring pane.

Also removes the overflow-x:hidden I added to .chat-messages last time. It hid
the symptom and made it worse — the text was clipped with no way to scroll to
what was cut off. With the tracks bounded, a wide table scrolls inside its own
box (.chat-msg-body table) as originally intended.

The visual.spec.ts pixel baselines cover the app shell, so a regression here is
catchable in CI in a way the sidebar flash never was.
@sixvolts
sixvolts merged commit dd5ac08 into main Sep 6, 2026
1 check passed
@sixvolts
sixvolts deleted the ci/grid-overflow branch September 6, 2026 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant