Filed as worth considering rather than a clear gap — it writes state, so it needs a design decision.
The UI's skysocks tab has toggle(), chooseServer() and addClient(): start, stop, pick from the discovery list, add an instance. Picking a server is blind — you choose from the list and find out afterwards whether it works.
skywire cli proxy test exists for exactly this and has no UI equivalent at all:
--batch N — test N candidates in parallel
--transport — restrict to servers you already have a transport to (avoids creating new ones)
--connect — connect-only, no HTTP verification
--via <pk> — test through a specific intermediary, i.e. a real 2-hop path
--country/--version/--pk — narrow the candidate set
"Test these candidates, show me which ones work, let me pick one" is a UI-shaped task — arguably more so than a CLI one.
The catch, and the reason this is considering not adding: the command is a write. It dynamically calls AddApp/StartApp/StopApp and creates transports per candidate. A UI version needs to be explicit about what it is creating and clean up after itself, or be restricted to --transport mode where it only tests existing transports.
Filed as worth considering rather than a clear gap — it writes state, so it needs a design decision.
The UI's skysocks tab has
toggle(),chooseServer()andaddClient(): start, stop, pick from the discovery list, add an instance. Picking a server is blind — you choose from the list and find out afterwards whether it works.skywire cli proxy testexists for exactly this and has no UI equivalent at all:--batch N— test N candidates in parallel--transport— restrict to servers you already have a transport to (avoids creating new ones)--connect— connect-only, no HTTP verification--via <pk>— test through a specific intermediary, i.e. a real 2-hop path--country/--version/--pk— narrow the candidate set"Test these candidates, show me which ones work, let me pick one" is a UI-shaped task — arguably more so than a CLI one.
The catch, and the reason this is considering not adding: the command is a write. It dynamically calls
AddApp/StartApp/StopAppand creates transports per candidate. A UI version needs to be explicit about what it is creating and clean up after itself, or be restricted to--transportmode where it only tests existing transports.