One catalog entry per server, tunnel as a connect-time choice #208
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The ProtonVPN WireGuard import (#196) followed the inherited Mullvad pattern: a separate
-WireGuardsibling entry per server. For Mullvad that pattern was honest - its OpenVPN and WireGuard relays were different hosts. For Proton both tunnels ride the same EntryIP, so the catalog now lists the same physical server twice, identical in everything buttunnel,public_keyand port.This is the trajectory of the whole catalog, not a Proton quirk: every supported provider is WireGuard-capable server-side (AirVPN #209, Windscribe #210), and importing each the sibling way doubles its slice of the server list.
End-state: one entry per server carrying both tunnels' data, with the tunnel chosen at connect time. The natural home for that choice already exists - the per-provider protocol selection, where WireGuard 51820 becomes another row next to UDP 1194 / TCP 443.
Seams it touches: the entry
tunnelfield currently drives the server-tab protocol filter, profile matching, catalog.connect_dict, and the dispatch in tunnel.work() - a unified entry needs a capability representation ("supports both") plus the selection plumbed through gui, cli and profiles.Sequencing: after #176, which rebuilds the same tunnel-selection seams - doing this first would mean reshaping them twice. Related: #52 (server metadata overhaul - same data model), #153 (list navigation - sibling doubling makes it worse).
Boundary with #52 settled: the two are one disease (structured data encoded into display strings - here, tunnel capability encoded as a name suffix plus a duplicated row). Division of labor:
#209/#210 then target the #52 schema, not sibling entries.