Файли
openidea/src/features/settings/pages/HttpProxy.module.css
T
l0ng-aiтаClaude 9d4e778c7b feat(settings): HTTP Proxy settings for the IDE's outgoing connections (#194)
* feat(settings): HTTP Proxy settings for the IDE's outgoing connections

Add Appearance & Behavior › System Settings › HTTP Proxy with three modes:
No proxy, Auto-detect proxy settings (the default; environment proxy as
before) and Manual proxy configuration (HTTP or SOCKS, host and port, a
comma-separated "No proxy for" list with `*` wildcards, optional proxy
authentication). "Check connection…" GETs a URL with the settings as edited
and reports the status or the error.

- ide-core: `ProxySettings` plus routing (no-proxy globs, loopback always
  direct, credentials percent-encoded), the current proxy for the process,
  curl arguments and child-process variables.
- ide-http: `client::build` / `client::shared` is the one HTTP client
  constructor; the HTTP Client requests and the update check go through it.
- ide-tools: curl downloads (tools, JDKs, debug adapters, agent registry,
  remote server) follow the setting.
- A manual proxy reaches child processes (language servers, debug adapters,
  terminals, git) as HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY.
- The proxy password is kept in the owner-only saved passwords file
  (`proxy-password.json` in the app data directory), not in settings.toml.

Co-Authored-By: Claude <[email protected]>

* fix(host): Allow the Unix-only post-start test helpers on Windows

Co-Authored-By: Claude <[email protected]>

---------

Co-authored-by: Claude <[email protected]>
2026-10-29 10:43:30 +08:00

89 рядки
1.2 KiB
CSS

.page {
display: flex;
flex-direction: column;
gap: 4px;
}
.modes {
display: flex;
flex-direction: column;
}
.radio {
display: inline-flex;
align-items: center;
gap: 6px;
min-height: 28px;
}
.radio input {
margin: 0;
accent-color: var(--accent);
}
.disabled {
color: var(--fg-subtle);
}
.hint {
padding-left: 20px;
color: var(--fg-subtle);
}
/* Manual configuration, indented under its radio button. */
.manual {
display: flex;
flex-direction: column;
padding-left: 20px;
}
.kinds {
display: flex;
align-items: center;
gap: 16px;
}
.hostRow {
display: flex;
align-items: flex-start;
gap: 24px;
}
.host {
width: 220px;
}
.port {
width: 64px;
}
.wide {
width: 360px;
}
.toggle {
display: flex;
align-items: center;
min-height: 28px;
}
.auth {
display: flex;
flex-direction: column;
padding-left: 20px;
}
.error {
color: var(--danger);
}
.ok {
color: var(--success, var(--fg-muted));
}
.check {
margin-top: 12px;
}
.popup {
display: flex;
flex-direction: column;
gap: 8px;
padding: 10px 14px;
max-width: 480px;
}
.urlRow {
display: flex;
align-items: center;
gap: 8px;
}
.result {
min-height: 1lh;
overflow-wrap: anywhere;
}