fix(desktop): separate LAN and Tailscale pairing endpoints - #9882
Merged
Conversation
Contributor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1f69771. Configure here.
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a contained desktop pairing fix that keeps LAN and Tailscale endpoints distinct and preserves network access for Tailscale-only hosts. The production changes are narrow, directly test-covered, and do not modify defaults, schemas, deployment behavior, or static-analysis configuration. You can add or adjust custom eligibility rules. Learn more. |
github-actions Bot
added a commit
to omarcresp/t3code-flake
that referenced
this pull request
Sep 5, 2026
## What's Changed * test(web): drop provider banner styling assertions by @juliusmarminge in pingdotgg/t3code#10148 * refactor(client-runtime): remove unused relay token waiter by @juliusmarminge in pingdotgg/t3code#10151 * test(web): drop sidebar artwork styling snapshots by @juliusmarminge in pingdotgg/t3code#10152 * refactor(ssh): keep package internals private by @juliusmarminge in pingdotgg/t3code#10144 * ci: reject unused SSH exports with Knip by @juliusmarminge in pingdotgg/t3code#10145 * refactor(acp): keep protocol implementation exports private by @juliusmarminge in pingdotgg/t3code#10165 * fix(shared): validate cloudflared with the version subcommand by @maria-rcks in pingdotgg/t3code#9880 * fix(desktop): separate LAN and Tailscale pairing endpoints by @maria-rcks in pingdotgg/t3code#9882 * fix(server): install pinned runtime when pnpm node lacks npm by @maria-rcks in pingdotgg/t3code#9923 * fix(web): hide sidebar search shortcut on mobile by @maria-rcks in pingdotgg/t3code#9932 **Full Changelog**: pingdotgg/t3code@v0.0.39-nightly.20260905.1288...v0.0.39-nightly.20260905.1289 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.39-nightly.20260905.1289
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

When Tailscale is enumerated before Wi-Fi, desktop pairing advertises the tailnet address as both Local network and Tailscale IP. Automatic LAN discovery now skips tailnet addresses while preserving Tailscale-only connectivity and explicit host overrides.
Verified with 14 focused desktop exposure and Tailscale endpoint tests, targeted lint, and desktop typecheck. The updated tests fail against the original source for the two changed behaviors.
Fixes #7519.
Model: gpt-6-astra via Codex.
Note
Medium Risk
Changes desktop network binding and advertised pairing endpoints; Tailscale-only machines that previously fell back to local-only now remain network-accessible.
Overview
Desktop pairing no longer treats Tailscale IPv4 addresses as the LAN host, so advertised endpoints stay distinct when interface enumeration puts tailnet before Wi‑Fi.
isUsableLanIpv4Addressexcludes addresses recognized byisTailscaleIpv4Address, and network-accessible mode no longer falls back to local-only when there is no classic LAN host but a non-internal Tailscale IPv4 interface exists (bind stays on0.0.0.0with tailnet advertised separately). Bootstrap logging only warns about a local-only fallback when the user requested network access and runtime exposure actually resolved to local-only.Tests cover Tailscale-before-LAN ordering, Tailscale-only hosts, and explicit
T3CODE_DESKTOP_LAN_HOSToverrides using tailnet addresses.Reviewed by Cursor Bugbot for commit 30a4991. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Separate LAN and Tailscale pairing endpoints in
DesktopServerExposureisUsableLanIPv4Addressnow excludes Tailscale IPv4 addresses, so LAN host resolution no longer picks a Tailscale address as the LAN endpoint.resolveRuntimeStatekeeps network-accessible exposure when a Tailscale non-internal IPv4 address is present, even without a resolved endpoint URL. Previously it fell back to local-only in that case.Macroscope summarized 30a4991.