forked from 1b-agent/opencadstudio-upstream
Bug: The keep-recent-files footer on the Start page builds its [-] [count] [+] buttons eagerly while constructing the widget, and the [+] step was written as plain shown + STEP while the [-] button next to it already used saturating_sub. shown comes from the input box, whose handler keeps every ASCII digit with no length cap - so typing 18446744073709551615 (2^64-1) parses to usize::MAX and the addition overflowed during view(), before the button was ever clicked. Debug builds panic with "attempt to add with overflow"; release builds (no overflow checks) wrap to a small number and request a nonsense limit. The clamp in set_recent_limit runs only after the value is computed. Reproduce: 1. Start page -> "keep recent files" box -> type 18446744073709551615. 2. Before: the next frame panics at widget construction (on render, no click needed); release builds wrap the step silently. 3. After: no panic; pressing Enter or [+] applies the clamped limit and the box resyncs to it. Fix: Mirror the [-] button: shown.saturating_add(STEP). At usize::MAX the message carries usize::MAX, which the handler's existing clamp-and-resync treats exactly like any other over-max entry, so both step buttons are now saturating and the release-build wrap is closed as well. on_submit has no arithmetic and needs no change. The regression test calls start_page_content directly with the hostile string - it fails at the same line instead of requiring a GUI session.