LearnNewsExamplesServices
Frontmatter
id19806
titleIssues showcase: fixed rows cut wrapped text at both edges
stateClosed
labels
bugaigrid
assigneesneo-opus-ada
createdAtOct 16, 2026, 2:06 PM
updatedAtOct 16, 2026, 3:41 PM
githubUrlhttps://github.com/neomjs/neo/issues/19806
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtOct 16, 2026, 3:41 PM

Issues showcase: fixed rows cut wrapped text at both edges

neo-opus-ada
neo-opus-ada commented on Oct 16, 2026, 2:06 PM

Context

Found in Grace's v13.3 polish sweep of examples/grid/issues, the 13.3 release notes' showcase, and handed to Ada as the showcase's author (#19756). With Content-sized rows unticked, each wrapped Title and Summary cell shows a slice from the middle of its text: lines cut at the top and the bottom edge.

Measured on dev (0ca204c89a), Chromium 156, 1600 × 900, the showcase spec's fixture issues, fixed mode. For each visible cell, the text's line boxes (Range#getClientRects) were compared with the cell's content box:

  • a 3-line title overflows by 17 px at the top and 16 px at the bottom;
  • a 4-line summary overflows by 25 px and 22 px;
  • one-line cells fit.

The Problem

The toggle exists for a comparison. The notes tell readers to "untick Content-sized rows to see the same issues at a fixed height". The comparison's "before" side currently shows neither the start of the text nor a clean cut. It looks broken, worse than a fixed-row grid normally looks, and that flatters the feature.

The Architectural Reality

  • .neo-grid-cell is display: flex; align-items: center; contain: layout paint style (resources/scss/src/grid/Body.scss), with no white-space rule, so long text wraps.
  • Without row geometry, a wrapText column puts its text directly into the cell (src/grid/Row.mjs, the column.wrapText && gridBody.rowGeometry branch). The wrapped lines are centred in a 44 px row and clipped at both edges.
  • Content-sized mode wraps the text in .neo-grid-cell-text, which is measured, so it is unaffected.
  • Design authority:
    • the showcase's JSDoc: "The checkbox switches back to fixed-height rows for comparison";
    • the 13.3 notes' TL;DR: "A grid with a fixed row height has to choose: clip long text, or make every row as tall as the longest one."
    • Neither specifies how the text is clipped. This ticket picks the clip that represents a fixed-row grid.

The Fix

Showcase only.

  • onContentSizedChange toggles issues-fixed-rows on the grid while the box is unticked.
  • resources/scss/src/examples/grid/issues/MainContainer.scss gives the Title and Summary cells, only under that class, display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis. A fixed row then shows one line of each, cut with an ellipsis.

Acceptance Criteria

  • In fixed mode, every visible Title and Summary cell shows its text as one line inside its content box at both edges, and a long one ends in an ellipsis (an e2e test in IssuesShowcase.spec.mjs: red on dev, green at head).
  • Ticking the box again restores content-sized rows; the existing showcase test every row fits its tallest wrapped text… stays green.

Out of Scope

  • An engine default for fixed-height cells (for example one-line ellipsis in .neo-grid-cell). Every grid with long text and a fixed row height shares this layout. The blast radius is every renderer that relies on multi-line cells in a tall rowHeight. It would need a Discussion and evidence of user friction, which there is none of.

Avoided Traps

  • Top-aligning the cells (align-items: flex-start) was the first candidate. Measured, it shows the first line, but it slices the second in half at the bottom edge: up to 49 px of a 4-line summary overflows there. In a screenshot it still reads as broken.
  • :has() on the missing .neo-grid-cell-text child would key the style to Row.mjs's DOM detail rather than to the showcase's own toggle.

Related

  • #19756 (the showcase).
  • #19661 / #19662 (content-sized rows).
  • #19712 (the 13.3 notes, whose "What you can try" step 2 drives this toggle).

Live latest-open sweep: latest 20 open issues at 2026-10-16T12:05Z; no equivalent found. A2A sweep: latest 30 messages at 12:06Z; the only message on this scope is Grace's fork to Ada (11:29Z). MC sweep: "issues showcase fixed row height wrapped text clipped cut both edges ellipsis", 6 results; Grace's routing record of the fork, no prior decision on a fix. Own-assignment sweep: 7 open, none overlapping.

Origin Session ID: 009de3c6-e0ea-40f0-9381-652ddc9146dd

Retrieval Hint: "issues showcase fixed row height text clipped both edges", "wrapText without rowGeometry"

tobiu referenced in commit 6d2c974 - "fix(examples): the issues showcase's fixed rows show one cut line of text (#19806) (#19807) on Oct 16, 2026, 3:41 PM
tobiu closed this issue on Oct 16, 2026, 3:41 PM