Group browser proxy settings in accordion

Place the internal Browser proxy fields in a native disclosure and keep its styling borderless. Refresh the guide screenshot and cover the config markup.

Alessandro committed Jul 27, 2026 at 14:57 UTC 87e1e591e1ba2e8b1a19d34e134fcae490c8dded
3 files changed +66 -47
docs/res/usage/browser/browser-plugin-settings.png
Binary files a/docs/res/usage/browser/browser-plugin-settings.png and b/docs/res/usage/browser/browser-plugin-settings.png differ
plugins/_browser/webui/config.html
+64 -47
@@ -49,58 +49,54 @@
49 <span>Internal Docker browser selected. Host-browser CLI settings are ignored for Browser tool runs.</span>
50 </div>
51
52 - <label
53 - class="browser-config-field"
52 + <details
53 + class="browser-config-proxy"
54 x-show="$store.browserConfig.config.runtime_backend === 'container'"
55 >
56 - <span class="browser-config-field-label">Proxy server</span>
57 - <input
58 - type="text"
59 - x-model="$store.browserConfig.config.proxy_server"
60 - placeholder="http://proxy.example:3128 or socks5://proxy.example:1080"
61 - autocomplete="off"
62 - />
63 - <span class="browser-config-field-help">Optional. Routes the internal browser through this HTTP or SOCKS proxy.</span>
64 - </label>
56 + <summary>Proxy server</summary>
57 + <div class="browser-config-proxy-body">
58 + <label class="browser-config-field">
59 + <input
60 + type="text"
61 + x-model="$store.browserConfig.config.proxy_server"
62 + placeholder="http://proxy.example:3128 or socks5://proxy.example:1080"
63 + aria-label="Proxy server"
64 + autocomplete="off"
65 + />
66 + <span class="browser-config-field-help">Optional. Routes the internal browser through this HTTP or SOCKS proxy.</span>
67 + </label>
68
66 - <label
67 - class="browser-config-field"
68 - x-show="$store.browserConfig.config.runtime_backend === 'container'"
69 - >
70 - <span class="browser-config-field-label">Bypass proxy for</span>
71 - <input
72 - type="text"
73 - x-model="$store.browserConfig.config.proxy_bypass"
74 - placeholder="localhost, .example.com"
75 - autocomplete="off"
76 - />
77 - <span class="browser-config-field-help">Optional comma-separated domains that should connect directly.</span>
78 - </label>
69 + <label class="browser-config-field">
70 + <span class="browser-config-field-label">Bypass proxy for</span>
71 + <input
72 + type="text"
73 + x-model="$store.browserConfig.config.proxy_bypass"
74 + placeholder="localhost, .example.com"
75 + autocomplete="off"
76 + />
77 + <span class="browser-config-field-help">Optional comma-separated domains that should connect directly.</span>
78 + </label>
79
80 - <label
81 - class="browser-config-field"
82 - x-show="$store.browserConfig.config.runtime_backend === 'container'"
83 - >
84 - <span class="browser-config-field-label">Proxy username</span>
85 - <input
86 - type="text"
87 - x-model="$store.browserConfig.config.proxy_username"
88 - autocomplete="off"
89 - />
90 - </label>
80 + <label class="browser-config-field">
81 + <span class="browser-config-field-label">Proxy username</span>
82 + <input
83 + type="text"
84 + x-model="$store.browserConfig.config.proxy_username"
85 + autocomplete="off"
86 + />
87 + </label>
88
92 - <label
93 - class="browser-config-field"
94 - x-show="$store.browserConfig.config.runtime_backend === 'container'"
95 - >
96 - <span class="browser-config-field-label">Proxy password</span>
97 - <input
98 - type="password"
99 - x-model="$store.browserConfig.config.proxy_password"
100 - autocomplete="off"
101 - />
102 - <span class="browser-config-field-help">Saving proxy changes restarts active internal Browser sessions.</span>
103 - </label>
89 + <label class="browser-config-field">
90 + <span class="browser-config-field-label">Proxy password</span>
91 + <input
92 + type="password"
93 + x-model="$store.browserConfig.config.proxy_password"
94 + autocomplete="off"
95 + />
96 + <span class="browser-config-field-help">Saving proxy changes restarts active internal Browser sessions.</span>
97 + </label>
98 + </div>
99 + </details>
100
101 <label
102 class="browser-config-field"
@@ -376,6 +372,27 @@
372 line-height: 1.35;
373 }
374
375 + .browser-config-proxy {
376 + overflow: hidden;
377 + border-radius: 8px;
378 + }
379 +
380 + .browser-config-proxy summary {
381 + padding: 10px 12px;
382 + color: var(--color-text);
383 + font-size: 0.84rem;
384 + font-weight: 650;
385 + cursor: pointer;
386 + }
387 +
388 + .browser-config-proxy-body {
389 + display: flex;
390 + flex-direction: column;
391 + gap: 14px;
392 + padding: 14px;
393 + border-top: 1px solid color-mix(in srgb, var(--color-border) 74%, transparent);
394 + }
395 +
396 .browser-config-field input[type="text"],
397 .browser-config-field input[type="password"],
398 .browser-config-field input[type="number"],
tests/test_browser_agent_regressions.py
+2
@@ -1259,6 +1259,8 @@ def test_browser_extension_settings_stay_user_facing():
1259 assert 'x-model="$store.browserConfig.config.proxy_bypass"' in config_html
1260 assert 'x-model="$store.browserConfig.config.proxy_username"' in config_html
1261 assert 'x-model="$store.browserConfig.config.proxy_password"' in config_html
1262 + assert '<details\n class="browser-config-proxy"' in config_html
1263 + assert "<summary>Proxy server</summary>" in config_html
1264 assert 'type="password"' in config_html
1265 assert "normalizeMaxOpenTabs()" in config_html
1266 assert "BROWSER_TAB_SCOPES" in config_store