* #3734: ui.resize refuses sizes that aren't positive and clamps to the GPU's limit
The control channel forwarded any width/height to the viewport. Zero, negative and huge sizes now get an error or a size the window can have: the app's minimum and the largest texture the GPU draws (at most 16384 points). The reply carries the size asked for.
* #3734: refuse non-finite sizes, and let the GPU limit win over the minimum
Review follow-up: an infinite side (1e300 once read as f32) is refused rather than clamped, and a GPU limit below the app's minimum caps the size instead of being raised to it.