Skip to content

feat(updater): fall back to OS system proxy when app proxy is disabled#201

Merged
su-fen merged 1 commit into
mainfrom
features
Jul 21, 2026
Merged

feat(updater): fall back to OS system proxy when app proxy is disabled#201
su-fen merged 1 commit into
mainfrom
features

Conversation

@su-fen

@su-fen su-fen commented Jul 21, 2026

Copy link
Copy Markdown
Member

Summary

  • The GitHub update path (release feed probe + tauri-plugin-updater download) used to force a direct connection via no_proxy() whenever the in-app proxy was disabled, ignoring OS proxy settings entirely — updates failed in environments where GitHub is unreachable directly.
  • Update egress now resolves in order: app proxy when enabled (invalid config still fails fast) → OS system proxy (proxy env vars + macOS/Windows system proxy settings via reqwest's default system-proxy detection) → direct connection.
  • Added client_builder_with_os_proxy_fallback() in services/system_proxy.rs as the dedicated entry point for the update path; build_updater() no longer calls .no_proxy() so the plugin's internal client picks up the same fallback (verified against plugin source; single shared reqwest 0.13.4 build in the lockfile keeps the system-proxy feature enabled for it).
  • All other egress points (skills, ClawHub, MCP, local reverse proxy, …) keep the existing explicit no_proxy semantics; the now-unused async client_builder() is removed.

Testing

  • cargo check --lib clean (no warnings).
  • cargo test --lib system_proxy 8/8 and update::tests 5/5 pass.
  • New test coverage: fallback builder accepts Disabled/Enabled modes and still fails fast on Invalid config (no silent downgrade to direct/system proxy).

The GitHub update path (release feed probe and tauri-plugin-updater
download) used to force a direct connection via no_proxy() whenever the
in-app proxy was disabled, ignoring OS proxy settings entirely and
breaking updates in environments where GitHub is unreachable directly.

Update egress now resolves in order: app proxy when enabled (invalid
config still fails fast), otherwise reqwest's default proxy detection
(proxy env vars plus macOS/Windows system proxy settings via the
system-proxy feature), otherwise direct. All other egress points keep
the explicit no_proxy semantics; the now-unused async client_builder()
is removed.
@su-fen
su-fen merged commit 6ddb15d into main Jul 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant