Send sidebar links through the external-open rules
browser.urlsToAlwaysOpenExternally sends a matching link to the system browser instead of cmux's embedded one. Terminal links, the intercepted open command and link clicks inside the embedded browser already follow it. Pull-request and port links in the sidebar do not: they open embedded even when a rule matches, so a site that only works in a managed browser dead-ends there.
Repro: add a rule such as github.com, then click a pull-request link in the sidebar. It opens in the embedded browser.
What changes
The sidebar's pull-request and port links, and the action that opens every pull request of a workspace, now ask BrowserExternalNavigationHandler.sidebarLinkDestination(for:prefersEmbeddedBrowser:) where to open. A link that matches a rule goes to the system browser even when "open sidebar links in the cmux browser" is on, because a rule-listed site cannot work in the embedded web view at all. Only web schemes are checked against the rules. Other schemes keep following the preference.
This PR used to carry a second half that changed when a link inside a page may leave for the system browser. The in-page routing has landed separately in #10634, and the user-activation check here was wrong (it read NSApp.currentEvent at decision time, which can be a later mouse move), so that half is removed. The diff is now three files.
Tests
BrowserLinkOpenSettingsTests adds four: a sidebar link with no matching rule follows the preference, a pull-request link that matches a rule goes to the system browser, a port link that matches a rule does too while localhost stays embedded, and a non-web scheme follows the preference even when a rule's text matches it.
Against a sidebarLinkDestination that only follows the preference, three of the four fail, each reporting embeddedBrowser where systemBrowser is expected. With the rule check in place, all 27 tests in the suite pass.
Main's test target does not compile at 00f182fc0fa (RightSidebarTabCustomizationTests.swift, which #17211 repairs), so I ran both commits with that file and CloudMachineOrderingTests.swift removed locally. Neither removal is in this branch.
Changelog
Fixed: Sidebar pull request and port links follow the “always open externally” URL rules