c9e9ddb62fbdd99923b26a35041a3aa013790c2e
`Can't represent a width of 0 and height of 273238 in Constraints`, from `Modifier.height` during measure, which took the app down on opening one particular session. Compose packs a Constraints into a single Long, and at a width of zero that leaves eighteen bits for the height -- so 262,143px is the ceiling and a taller spacer throws. Collapsing every stood-down row into one spacer is what made that reachable. It is the change that stopped the per-frame cost growing with the conversation, and it also turned "the history above the window" into a single fixed height -- which for a long conversation read at the newest end is the whole transcript. The one that crashed was 273,238px. Split rather than clamped: the height is load-bearing. It is what keeps the transcript's total the same as the rows it stands in for, so shortening it would move everything under the reader -- a silent wrong answer in place of a loud one. The gaps the arrangement inserts between the pieces come out of the total for the same reason. The cap is 100,000px rather than the 262,143 that would just fit, because the limit depends on how many bits the width took: a spacer sized against today's screen width is a crash waiting for a wider one. Verified by forcing the split -- built with the cap at 5,000px, a run came out as ten spacers with the transcript intact and nothing reporting an unbuilt row -- then restored. Testing it only at the real cap would have tested the branch that cannot fail on any conversation reachable here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
Rust
54%
Kotlin
43.6%
Shell
2.4%