Repository navigation
feat(connections): name the Local Network permission when it blocks a connection - #3699
Merged
Merged
Conversation
datlechin
enabled auto-merge (squash)
October 20, 2026 15:21
datlechin
disabled auto-merge
October 20, 2026 15:52
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.
Summary
NWConnection. When macOS 15 Local Network privacy refuses every one, the pane reads Local Network Access Required, names the host, and offers Open System Settings beside Try Again.ConnectionFailureInfo.details); the pane headline comes fromConnectionFailureInfo.title.ConnectionFailureClassifier.recoveryAction.ConnectionPreflightReportingon SOCKS, SSH and tunnel errors), errors a sign-in provider claims, and a host list with one reachable server.UnavailableStateViewcaps only its text at 420 points. The button row shared that cap and truncated its titles ("Manage Connec…" with three buttons, "Open Syst…" with four).strerror: an immediate connect failure dropped it, and the poll path readerrnoafterclose().Privacy_LocalNetworkanchor and opens Privacy & Security (measured againstPrivacy_AllFiles, which lands on Full Disk Access), so the recovery text names the last step.Test plan
LocalNetworkAccessProbeTests: verdicts from injected path and state results (refused path, satisfied path reporting.notAvailable, mDNS PolicyDenied, NoSuchRecord, ready, ended); a real loopback probe is granted.LocalNetworkAccessDiagnosisTests: hops per transport, SSH alias and jump host resolution, loopback never named, mixed host list, preflight and sign-in errors.LocalNetworkConnectFailureTests:ensureConnectedthrough the fake SQL Server driver records.connectFailed(info, .openLocalNetworkSettings)on a refusal, keeps the driver error when granted, keepsSOCKSProxyError.invalidConfiguration, and records nothing when cancelled mid-probe.ConnectionFailureClassifierTests,ConnectionRecoveryPresentationTests,UnavailableStateViewLayoutTests(a 560-point action row keeps its width; the old cap held it to 420).Screenshots
The pane rendered from
ConnectionUnavailableViewwith a database host refused. Before is the text main shows for the same failure; on main its buttons were also truncated.Docs: TableProApp/docs#62
Fixes #3668