Add proxy support for "Check for Updates" (#314)#337
Merged
Conversation
Corporate-proxy users were hitting "Check for Updates" failures because neither Velopack's downloader nor the HttpClient fallback was sending Windows credentials to the proxy. James (issue #314) confirmed his proxy is auto-discovered for most apps but SSMS 25 needed manual address + on-prem AD user/pass, so both paths are needed. * ProxySettings — "System" (default) sends Windows credentials to the auto-discovered proxy; "Manual" lets the user enter address + optional username/password. Password is held in the existing ICredentialService (Windows Credential Manager / macOS Keychain). * ProxyHttpHandlerFactory — single source of truth for proxy wiring on HttpClientHandler. Used by both UpdateChecker (GitHub API fallback) and ProxyAwareDownloader (Velopack's IFileDownloader override). * ProxyAwareDownloader subclasses Velopack.Sources.HttpClientFileDownloader and snapshots ProxySettings at construction so retries/redirects don't re-read DPAPI. * SettingsFile — merge-safe JSON read/update so the MCP and Proxy save paths don't stomp each other. * AboutWindow — proxy settings UI (radio + collapsed manual grid). The password field is intentionally not round-tripped through the UI; watermark says "(saved — leave blank to keep)". Status text now wraps. When the update check fails, a "Open the releases page in your browser" link is shown as a manual-download fallback. * If Velopack itself fails (the actual #314 symptom), its error is now surfaced alongside the API fallback error instead of being swallowed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 18, 2026
Merged
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
Fixes #314. James reported that "Check for Updates" fails behind a corporate proxy because neither Velopack nor the HttpClient fallback was sending Windows credentials to the proxy.
In his follow-up he confirmed his proxy is auto-discovered for most apps but SSMS 25 needed manual address + on-prem AD user/pass, so both modes are wired:
ICredentialService, i.e. Windows Credential Manager / macOS Keychain).Both update paths go through the same
ProxyHttpHandlerFactory:UpdateChecker(GitHub API fallback) builds itsHttpClientfrom it.ProxyAwareDownloaderoverridesHttpClientFileDownloader.CreateHttpClientHandlerand is passed as the 4th arg toVelopack.Sources.GithubSource.Also addresses the UX items James asked for:
A few rough edges fixed along the way:
SettingsFile.Updateis merge-safe — MCP and proxy saves no longer stomp each otherTest plan
🤖 Generated with Claude Code