docs/docker-resume-recovery.md
This branch introduces a coordinated recovery path for the tray and runtime when Docker Desktop is paused and resumed.
docker info succeeds before launching the core process, avoiding repeated failures when Docker is down.error_docker connection state with explicit UX messaging so the tray menu and tooltip explain that Docker Desktop is unavailable.Connected, and a Docker recovery was detected, the tray calls a new HTTP API endpoint (POST /api/v1/servers/reconnect) to trigger fast upstream reconnection.ForceReconnectAllServers(reason string) to the runtime and exposed it through the HTTP controller to support the new /servers/reconnect route.upstream.Manager.ForceReconnectAll, which now rebuilds any disconnected, enabled managed client. The manager clones each server configuration, removes the old client, waits briefly for cleanup, and recreates the client so container state is refreshed.Client.ForceReconnect so the manager can bypass exponential backoff when forced.ForceReconnectAllServers, which works over both TCP and Unix socket transports, ensuring the new recovery path functions regardless of how the tray connects to the core.go test ./internal/upstream/...go test ./internal/httpapigo test ./internal/runtime/...go test ./cmd/mcpproxy-tray/... (fails on this machine due to linker disk-space error; code compiles otherwise)