Repository navigation
fix(web): Tailscale HTTPS stays on, and can be turned off, when this machine can't reach its own URL - #15027
fix(web): Tailscale HTTPS stays on, and can be turned off, when this machine can't reach its own URL#15027tiliakoos wants to merge 7 commits into
Conversation
…machine can't reach its own URL The switch followed the endpoint self-probe instead of the saved setting, so a failed MagicDNS lookup showed it off and left no way to disable the route.
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped Connections settings bug fix that reconciles the Tailscale switch with the saved Serve state while preserving pairing health checks and existing disable behavior. It adds focused tests without changing backend contracts, defaults, deployment, or sensitive packages. You can add or adjust custom eligibility rules. Learn more. |
…-https-switch # Conflicts: # apps/web/src/components/settings/ConnectionsSettings.logic.test.ts # apps/web/src/components/settings/ConnectionsSettings.tsx
|
Merged Rerun on the merged branch: #18758 edits the same row's no-endpoint text; the two changes do not overlap in behaviour, and whichever lands second has a one-line conflict in that ternary. |
…-https-switch # Conflicts: # apps/web/src/components/settings/ConnectionsSettings.logic.test.ts # apps/web/src/components/settings/ConnectionsSettings.tsx
|
Merged Rerun on the merged branch: |
|
Taking over this one for batch ssh-relay-remote-05. I will preserve contributor history, merge current main, reduce the regression tests, and verify the saved-state switch and disable behavior with independent reviews. This remains unmerged. |
A failed Tailscale HTTPS self-probe made saved Serve configuration appear off, and losing the endpoint removed the way to disable it.
Drive the switch from the saved Serve flag and keep it visible while that flag is enabled. Show probe health separately, retain the existing unavailable-endpoint exclusion from pairing links/QR, and let disable confirmation work without an endpoint. No backend, contract, or pairing-policy changes.
Maintainer takeover of #15027, preserving @tiliakoos's commits and merging current main. Reduced the original four added cases to three regressions in the existing logic suite and removed a redundant derived URL and unused disable callback argument.
Verification
setTailscaleServeEnabled({enabled: false, port: 443})even without an endpoint.Proof
Before: main displays off although the saved flag is enabled.
After: saved state stays on, with a separate reachability warning.
The control also remains available when no endpoint is reported.
Missing-endpoint disable confirmation, using the stubbed desktop bridge:
https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65e4e77c2014aa6f/15027-disable.mp4
Independent review: two full-PR rounds by Claude Opus and Codex Sol found no code bugs. Removed duplicate QR assertions after round one; round two was clean. Published head 69bd52e8f0; current-head build/typecheck, lint, web/server tests, and status checks passed. Platform-inapplicable jobs skipped; one fingerprint run was cancelled and superseded by a successful fingerprint run. No inline review findings remain. Real Electron/Tailscale verification remains outstanding as described below.
Limits
Real Tailscale Serve shutdown/re-enable and Electron restart still need desktop verification. macOS, Windows, iOS, and Android were not run on this headless Linux VM. Browser-hosted web and mobile do not own this desktop-local setting; shared pairing behavior is unchanged.
Implemented with Codex gpt-6.1-sol through T3 Code; tests by Codex gpt-6-astra; independent adversarial review by Claude claude-opus-5-5 and Codex gpt-6-sol.