Build image / build-and-push (push) Successful in 8s
formatDimensionInput signed values that had rounded to nothing, so a hair below zero rendered "-0′ 0″" — wrong, and not something parseDimension round-trips. The sign is now applied only once the rounded feet/inches are actually nonzero. That fix wanted the decomposition in one place, which formatCm was duplicating anyway, so both now share feetAndInches(cm, decimals) — magnitude only, sign applied by the caller once it knows the result isn't zero. Doing so incidentally fixed a latent bug in formatCm: it took Math.floor of a negative total, so -76.2cm rendered "-3′ 6″", which reads as -(3ft+6in) = -42in rather than the -30in it actually is. Nothing renders a negative dimension today (formatCm is used for garden sizes), but it was wrong and now isn't. The dimensionInputMode ternary and its comment were duplicated verbatim between Inspector and GardenFormModal; it is now a helper in units.ts, where the reason for it belongs anyway. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01H3zbym8Doka2d7D48maSgZ