Behaviour mock for ProjectDiagnosticPopover. Left column is what ships today
(.frame(width:360, height:320), fixed on both axes, at
ProjectRow.swift:423 and ProjectSidebarOutline.swift:1829).
Right column is the target: width still nailed at 360, height = content, 320 becomes a
ceiling, and the scroller appears only when the ceiling is actually reached.
Content is real — the fixture scenarios in DiagnosticFixture.swift plus the two
screenshots that started this. Approximation, not pixel truth: SF at native point sizes so
wrapping is fair.
Every case is drawn twice with identical content. The dashed line is the 320 ceiling.
The places where a naive “just size to content” would misbehave.
Approximation, not pixel truth. Native point sizes and SF so wrapping is a fair preview;
the file column truncates at the end here, natively it truncates in the middle
(.truncationMode(.middle)). Glyphs stand in for
exclamationmark.triangle.fill / xmark.circle.fill at their
MessageKind tints — nothing settled is changed. The reason column renders
cause.message, which is English on the wire by design
(bristlenose/refusals.py); the German toggle therefore moves the chrome only,
which is itself worth seeing.