Adds ping_server method to PlatformInterface. The desktop implementation
sends a 12-byte UDP datagram (4 zero bytes + 8-byte request ID) and
parses the 24-byte response to extract version, current users, max
users, and bandwidth. Includes a 2-second timeout.
The ServerPingInfo component uses use_resource to asynchronously ping
each server and displays user count (e.g. "3/50") on the server card.
Web and mobile platforms return an error (UDP not available in browsers).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the hardcoded server list with data from the settings store.
The Add Server modal now saves entries with all fields wired to signals.
An Edit Server modal pre-populates from the existing entry and includes
a delete button. The connect button on each card initiates connection
using that server's configured address, port, and username.
In overrides mode (any_server=false), displays a single non-editable
server card with an inline username input field, allowing the user to
set their identity before connecting to the preset server.
Adds CSS for the delete button, override username row, connect button
highlight, and ping info placeholder.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces a ServerEntry struct in common with name, address, port,
username, and optional password fields. Extends PlatformInterface with
load_servers/save_servers methods, implemented across all platforms
(desktop persists to JSON config, web uses localStorage, mobile/stub
are stubs).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>