55bec04603
UI: validateServiceConfig() checks all port fields (1–65535) and WireGuard address (IP/CIDR) on every keystroke; Save button is disabled and saveService() guards against any field errors. API: update_config() rejects out-of-range port values and invalid WireGuard address before persisting, returning 400 with a clear field path (e.g. email.smtp_port). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>