v3.2.17
Internal: post-ship verification hardening (no user-facing change)
The v3.2.16 combo-bleed fix is correct and shipped — this release only hardens the code and test around it after a verification swarm (6 topic agents, Sonnet + Opus, plus an orchestrator-side /code-review) flagged two latent issues. The binary behaves identically to v3.2.16; this exists to keep main and the published release in lockstep.
- Killed a silent-skip path. The two click-action combos were typed
ComboBox, and Load read theirOverflowBelowbehind anis ThemedComboBoxcast — if a future edit ever built one as a plainComboBox, the overflow reservation would be silently skipped and the bleed would return undetected. The fields are now typedThemedComboBox, so the cast is gone and a type change fails to compile (loud by construction). - Made the regression test non-vacuous. The new v3.2.16 combo guard asserted
Margin.Bottom > 2, but the breathing-room term (LogicalToDeviceUnits(4)) alone cleared that threshold — so the test would have passed even if the load-bearingOverflowBelowreservation were dropped. It now assertsOverflowBelow > 0andMargin.Bottom > (baseline + breathing), deriving both inputs from live control state and a sharedClickComboBottomBreathingPxconstant rather than hardcoded literals that could drift from the implementation.
What's underneath
SyncthingPause/SettingsForm.cs—_cboDblClick/_cboMiddleClickretypedComboBox→ThemedComboBox(cast removed in Load); breathing-room literal4promoted to the namedClickComboBottomBreathingPxconstant.SyncthingPause.Tests/DpiLayoutRegressionTests.cs— combo guard tightened to prove theOverflowBelowterm is actually reserved; threshold derived fromMargin.Top+ the shared constant.SyncthingPause.csproj— 3.2.16 → 3.2.17.
Full Changelog: v3.2.16...v3.2.17