Remove the deprecated APIs on the JS/webnet side. Doesn't touch the go/tailscale side, that will need to be done in another PR there, and the submodule updated in this repo later.
Removes:
#141 - fetch: can be replaced by @webnet/http directly
#141 - ssh: not immediately replacable by @webnet/ssh, but currently unused in this restrictive form, will be replaced by #103
#144 - setExitNodeEnabled: can be replaced by setExitNode already, also adds setExitNode(null) as a more explicit synonym for setExitNode('')
#145 - ping('disco'): never actually worked on WASM builds of tailscale and not really useful in the first place as the other ping methods are always more relevant (testing the connection, netstack and the peerapi)
Remove the deprecated APIs on the JS/webnet side. Doesn't touch the go/tailscale side, that will need to be done in another PR there, and the submodule updated in this repo later.
Removes:
- #141 - `fetch`: can be replaced by `@webnet/http` directly
- #141 - `ssh`: not immediately replacable by `@webnet/ssh`, but currently unused in this restrictive form, will be replaced by #103
- #144 - `setExitNodeEnabled`: can be replaced by `setExitNode` already, also adds `setExitNode(null)` as a more explicit synonym for `setExitNode('')`
- #145 - `ping('disco')`: never actually worked on WASM builds of tailscale and not really useful in the first place as the other ping methods are always more relevant (testing the connection, netstack and the peerapi)
codinget
added the Human label 2026-07-29 23:30:46 +02:00
Original finding: the exported IpnMainThreadHandle still declared setExitNode(stableNodeID: string), preventing connectMainThread() consumers from using the new setExitNode(null) API. The force-pushed revision widens the parameter to string | null, matching IpnClient, IpnWorkerClient, and the delegated IPN implementation.
✅ Resolved in `afbc809`.
Original finding: the exported `IpnMainThreadHandle` still declared `setExitNode(stableNodeID: string)`, preventing `connectMainThread()` consumers from using the new `setExitNode(null)` API. The force-pushed revision widens the parameter to `string | null`, matching `IpnClient`, `IpnWorkerClient`, and the delegated `IPN` implementation.
The PR advertises setExitNode(null) as the explicit way to clear an exit node and updates IpnClient plus IpnWorkerClient accordingly, but the exported IpnMainThreadHandle still declares setExitNode(stableNodeID: string).
Nice catch!
and ideally cover the concrete handle declaration in a type-level test
Not needed, as this actually failed typescript (though I force-pushed the fix before CI could reach that) as it (transitively) implements IpnClient that has a string | null signature.
I also noticed that the FetchDebug component in example-app also caused type errors, so I removed it. Since the whole point of that component was to exercise the IPN method directly, there is no point in removing it.
> The PR advertises setExitNode(null) as the explicit way to clear an exit node and updates IpnClient plus IpnWorkerClient accordingly, but the exported IpnMainThreadHandle still declares setExitNode(stableNodeID: string).
Nice catch!
> and ideally cover the concrete handle declaration in a type-level test
Not needed, as this actually failed typescript (though I force-pushed the fix before CI could reach that) as it (transitively) implements `IpnClient` that has a `string | null` signature.
I also noticed that the `FetchDebug` component in `example-app` also caused type errors, so I removed it. Since the whole point of that component was to exercise the IPN method directly, there is no point in removing it.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Remove the deprecated APIs on the JS/webnet side. Doesn't touch the go/tailscale side, that will need to be done in another PR there, and the submodule updated in this repo later.
Removes:
fetch: can be replaced by@webnet/httpdirectlyssh: not immediately replacable by@webnet/ssh, but currently unused in this restrictive form, will be replaced by #103setExitNodeEnabled: can be replaced bysetExitNodealready, also addssetExitNode(null)as a more explicit synonym forsetExitNode('')ping('disco'): never actually worked on WASM builds of tailscale and not really useful in the first place as the other ping methods are always more relevant (testing the connection, netstack and the peerapi)✅ Resolved in
afbc809.Original finding: the exported
IpnMainThreadHandlestill declaredsetExitNode(stableNodeID: string), preventingconnectMainThread()consumers from using the newsetExitNode(null)API. The force-pushed revision widens the parameter tostring | null, matchingIpnClient,IpnWorkerClient, and the delegatedIPNimplementation.4ca69f63d8toafbc809240Nice catch!
Not needed, as this actually failed typescript (though I force-pushed the fix before CI could reach that) as it (transitively) implements
IpnClientthat has astring | nullsignature.I also noticed that the
FetchDebugcomponent inexample-appalso caused type errors, so I removed it. Since the whole point of that component was to exercise the IPN method directly, there is no point in removing it.