Repository navigation
feat(settings): choose the default browser for conversation links - #3779
Merged
Merged
Conversation
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
Add a Web links setting under Settings → Tools → Browser & desktop control. Conversation text links can now open in the built-in browser or the system default browser, without using the context menu each time. Web deployments offer a new tab in the current browser.
Type and Areas
Feature / UI/UX; Web UI settings, Markdown links, platform URL opening, localization, and documentation.
Motivation / Impact
Ordinary conversation links previously always opened in the built-in browser. The new preference applies immediately, persists on the controller, synchronizes across open pages sharing its local storage, and survives workspace/Peer switches. Existing installs retain the built-in default. Explicit context-menu choices, modifier-clicks, PR/MR review routing, and agent browser-control configuration keep their current behavior. The setting stays available even when host control status cannot load.
Browser clients now open supported external URLs in a new controller-side tab instead of attempting desktop IPC; desktop clients still use the OS opener. Browser-side opening rejects executable, local-file, and unsupported URL schemes.
Verification
Passed locally:
pnpm --dir src/web-ui run test:run src/infrastructure/config/services/browserLinkPreference.test.ts src/infrastructure/markdown/MarkdownRenderer.test.tsx src/infrastructure/api/service-api/SystemAPI.test.ts src/app/scenes/settings/settingsRegistry.test.ts src/app/scenes/settings/pages/shared/RuntimeSettings.test.tsx src/infrastructure/config/components/common/SettingsControlSizing.test.ts— 170 tests passed.pnpm run check:webpnpm run i18n:audit— zero warnings.git diff --check63fff913b59e6c5b1bb15bedc29f239896065af4, including the full Web UI suite, production builds, and mobile Web checks. Repository Object Sizes also passed.Coverage includes legacy/missing preference records, persistence round trips, cross-window updates and storage failures, live preference changes without remounting Markdown, explicit browser choices, remote-workspace metadata, simulated Peer switches, controller-owned OS opening, browser-client URL dispatch, and editing link preferences when host configuration is unavailable. Native UI/browser opening and live SSH/Peer, Remote Control, and Detached Dispatch were not manually exercised. Mobile/IM and headless execution behavior are unchanged.
Reviewer Notes
AI-assisted implementation, with focused automated verification. No Rust, persisted host-config, or wire-protocol changes. Unknown stored preference values are retained; removing this change requires no migration. English, Simplified Chinese, and Traditional Chinese settings copy and English/Chinese user guidance are included.
Checklist