irisandClaude Opus 5 c9e9ddb62f Split a stood-down run across spacers Constraints can hold
`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>
2026-08-31 13:46:14 -04:00
2026-08-24 20:32:18 -04:00
S
Description
No description provided
27 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 54%
Kotlin 43.6%
Shell 2.4%