Main coves client

fix(profile): shrink long handles to fit instead of truncating them master

atProto handles are full domains of unbounded length, so federated ones like @inlandempire.jlai-lu.tdpl.io overflowed the identity column beside the avatar and were ellipsized at a fixed 20pt. Measured on device, the cutoff was ~28 characters. The handle now picks the largest size between 20pt and a 14pt floor that fits on one line, so nothing truncates below ~40 characters. Only a handle still too long at the floor is ellipsized. Changes: - Add _HandleText, measuring via TextPainter.computeWidth (which disposes its painter) to pick the fitted size - Memoise against a record of every measurement input; the header rebuilds each frame while collapsing and text layout is costly - Merge the ambient DefaultTextStyle before measuring, so the measurement uses the font that actually renders - Leave _infoHeightFor reserving the line box at 20pt, keeping header geometry independent of handle length - Add 8 tests: fits/shrinks/floor, bounds, monotonicity, truncation only at the floor, no overflow, cache invalidation, geometry Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>


+278 -13
2 changed files