githubnext/ace2Public

Ace: a collaborative coding environment on the team's own machines

Long chat messages clip their final rendered line

IA

A long human message in a channel timeline renders with its final wrapped line hidden. The stored message is complete; only the display is clipped.

## Observed (Oct 6, channel `issue-triage`)

- The long human instruction sent at 18:48 displays as four wrapped lines, ending with "…save your". - The rest of the message, "manifest.", is not visible, and there is no Show more control or other way to reveal it. - The complete persisted watch event for that message ends with "…save your manifest.", so the message data was neither lost nor truncated. Agents received the full text. - A participant had to ask whether messages were being cut off. A screenshot is kept as private local evidence and isn't attached.

## Reproduce

1. In a channel, send a plain human message long enough to wrap onto several lines in the timeline (the observed one was a multi-sentence instruction). 2. Compare the rendered message with the stored text, for example in the watch event or a channel backup. 3. Observed: the last wrapped line is missing from the rendered message. Expected: all of the text is visible.

The exact font, width and timing conditions that trigger it are not yet established.

## Probable code boundary (hypothesis, unproven)

On main `5194bf7`:

- [`packages/ui/src/components/blocks/text.tsx` L154–170](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/blocks/text.tsx#L154-L170) calculates the block's height from Pretext's `lineCount`. - `TextView` ([L583–595](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/blocks/text.tsx#L583-L595)) fixes `blockSize` to that height with `overflow: hidden`, while the HTML text wraps independently. - `GroupRows` in `timeline.tsx` ([L911](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/timeline/timeline.tsx#L911), [L938](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/timeline/timeline.tsx#L938), [L976](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/timeline/timeline.tsx#L976), [L990](https://github.com/githubnext/ace2/blob/5194bf75bd24174fa7a337586958e2d31b321188/packages/ui/src/components/timeline/timeline.tsx#L990)) shrink-wraps the row width to the measured fit.

If the measured line count is lower than the number of lines the browser actually wraps to, the fixed height with hidden overflow clips the final line. There is no intentional Show more path for plain messages.

## Expected

- All stored message text stays visible after wrapping, including after window or pane resizes and font loading. - Message display never silently hides text. If long messages are ever collapsed deliberately, the UI shows that and offers a way to expand them.

Related timeline text-rendering issues: #94, #95. Dogfooding: #5.

  1. iamnbutlerparent-issue-addedlast month on GitHub

  2. iamnbutlerreferenced this in [Meta] Dogfood Ace end to end #5last month on GitHub

  3. iamnbutlerreferenced this in Rebuild Settings and top-anchor every modal #170last month on GitHub

  4. iamnbutlerreferenced this in Oversized inline code and chips in timeline messages are silently clipped #174last month on GitHub

  5. iamnbutlerreferenced this in fix(ui): render timeline text with the line breaks it was measured with #175last month on GitHub

  6. iamnbutlerclosedlast month on GitHub