@hanzo/browser-extension 1.9.34 → 1.9.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/answer/AnswerEngine.tsx +8 -0
- package/src/onboarding.css +78 -0
- package/src/onboarding.html +45 -0
- package/src/popup.html +28 -0
- package/dist/browser-extension/README.md +0 -43
- package/dist/browser-extension/background-firefox.js +0 -5983
- package/dist/browser-extension/background.js +0 -8670
- package/dist/browser-extension/browser-control.js +0 -1317
- package/dist/browser-extension/chrome/ai-worker.js +0 -571
- package/dist/browser-extension/chrome/background.js +0 -8670
- package/dist/browser-extension/chrome/callback.html +0 -17
- package/dist/browser-extension/chrome/content-script.js +0 -2789
- package/dist/browser-extension/chrome/icon128.png +0 -0
- package/dist/browser-extension/chrome/icon16.png +0 -0
- package/dist/browser-extension/chrome/icon48.png +0 -0
- package/dist/browser-extension/chrome/manifest.json +0 -81
- package/dist/browser-extension/chrome/newtab.css +0 -277
- package/dist/browser-extension/chrome/newtab.html +0 -13
- package/dist/browser-extension/chrome/newtab.js +0 -64
- package/dist/browser-extension/chrome/popup.css +0 -761
- package/dist/browser-extension/chrome/popup.html +0 -381
- package/dist/browser-extension/chrome/popup.js +0 -1716
- package/dist/browser-extension/chrome/sidebar.css +0 -1792
- package/dist/browser-extension/chrome/sidebar.html +0 -463
- package/dist/browser-extension/chrome/sidebar.js +0 -26541
- package/dist/browser-extension/cli.js +0 -233
- package/dist/browser-extension/content-script.js +0 -2789
- package/dist/browser-extension/firefox/ai-worker.js +0 -571
- package/dist/browser-extension/firefox/background.js +0 -5983
- package/dist/browser-extension/firefox/callback.html +0 -17
- package/dist/browser-extension/firefox/content-script.js +0 -2789
- package/dist/browser-extension/firefox/icon128.png +0 -0
- package/dist/browser-extension/firefox/icon16.png +0 -0
- package/dist/browser-extension/firefox/icon48.png +0 -0
- package/dist/browser-extension/firefox/manifest.json +0 -85
- package/dist/browser-extension/firefox/newtab.css +0 -277
- package/dist/browser-extension/firefox/newtab.html +0 -13
- package/dist/browser-extension/firefox/newtab.js +0 -64
- package/dist/browser-extension/firefox/popup.css +0 -761
- package/dist/browser-extension/firefox/popup.html +0 -381
- package/dist/browser-extension/firefox/popup.js +0 -1716
- package/dist/browser-extension/firefox/sidebar.css +0 -1792
- package/dist/browser-extension/firefox/sidebar.html +0 -463
- package/dist/browser-extension/firefox/sidebar.js +0 -26541
- package/dist/browser-extension/icon128.png +0 -0
- package/dist/browser-extension/icon16.png +0 -0
- package/dist/browser-extension/icon48.png +0 -0
- package/dist/browser-extension/manifest.json +0 -81
- package/dist/browser-extension/newtab.js +0 -64
- package/dist/browser-extension/package.json +0 -41
- package/dist/browser-extension/popup.js +0 -1716
- package/dist/browser-extension/safari/Info.plist +0 -21
- package/dist/browser-extension/safari/ai-worker.js +0 -571
- package/dist/browser-extension/safari/background.js +0 -8670
- package/dist/browser-extension/safari/callback.html +0 -17
- package/dist/browser-extension/safari/content-script.js +0 -2789
- package/dist/browser-extension/safari/icon128.png +0 -0
- package/dist/browser-extension/safari/icon16.png +0 -0
- package/dist/browser-extension/safari/icon48.png +0 -0
- package/dist/browser-extension/safari/newtab.css +0 -277
- package/dist/browser-extension/safari/newtab.html +0 -13
- package/dist/browser-extension/safari/newtab.js +0 -64
- package/dist/browser-extension/safari/popup.css +0 -761
- package/dist/browser-extension/safari/popup.html +0 -381
- package/dist/browser-extension/safari/popup.js +0 -1716
- package/dist/browser-extension/safari/sidebar.css +0 -1792
- package/dist/browser-extension/safari/sidebar.html +0 -463
- package/dist/browser-extension/safari/sidebar.js +0 -26541
- package/dist/browser-extension/sidebar.js +0 -26541
- package/dist/browser-extension/webgpu-ai.js +0 -568
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Hanzo AI</title>
|
|
7
|
-
<link rel="stylesheet" href="popup.css">
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<div class="container">
|
|
11
|
-
<header>
|
|
12
|
-
<svg class="logo" viewBox="0 0 67 67" xmlns="http://www.w3.org/2000/svg">
|
|
13
|
-
<path d="M22.21 67V44.6369H0V67H22.21Z" fill="currentColor"/>
|
|
14
|
-
<path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="currentColor"/>
|
|
15
|
-
<path d="M22.21 0H0V22.3184H22.21V0Z" fill="currentColor"/>
|
|
16
|
-
<path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="currentColor"/>
|
|
17
|
-
<path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="currentColor"/>
|
|
18
|
-
</svg>
|
|
19
|
-
<h1>Hanzo AI</h1>
|
|
20
|
-
</header>
|
|
21
|
-
|
|
22
|
-
<!-- Login Section -->
|
|
23
|
-
<div id="login-section" class="section login-section">
|
|
24
|
-
<div class="login-card">
|
|
25
|
-
<svg class="login-logo" viewBox="0 0 67 67" xmlns="http://www.w3.org/2000/svg">
|
|
26
|
-
<path d="M22.21 67V44.6369H0V67H22.21Z" fill="currentColor"/>
|
|
27
|
-
<path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="currentColor"/>
|
|
28
|
-
<path d="M22.21 0H0V22.3184H22.21V0Z" fill="currentColor"/>
|
|
29
|
-
<path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="currentColor"/>
|
|
30
|
-
<path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="currentColor"/>
|
|
31
|
-
</svg>
|
|
32
|
-
<h2 class="login-headline">Sign in to Hanzo AI</h2>
|
|
33
|
-
<p class="login-sub">Chat with AI, use browser tools, and build with agents.</p>
|
|
34
|
-
<button id="login-btn" class="login-signin-btn">Sign In</button>
|
|
35
|
-
<button id="signup-btn-popup" class="login-create-btn">Create account</button>
|
|
36
|
-
<p class="login-note">
|
|
37
|
-
Browser tools work without sign-in. <a href="https://docs.hanzo.ai" target="_blank">Learn more</a>
|
|
38
|
-
</p>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<!-- Main Section (shown after login) -->
|
|
43
|
-
<div id="main-section" class="section hidden">
|
|
44
|
-
<div id="user-info-section" class="hidden">
|
|
45
|
-
<div class="user-info">
|
|
46
|
-
<img id="user-avatar" class="avatar" src="" alt="">
|
|
47
|
-
<div>
|
|
48
|
-
<div id="user-name" class="user-name"></div>
|
|
49
|
-
<div id="user-email" class="user-email"></div>
|
|
50
|
-
</div>
|
|
51
|
-
<button id="logout-btn" class="btn-icon" title="Sign out">
|
|
52
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
53
|
-
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9"/>
|
|
54
|
-
</svg>
|
|
55
|
-
</button>
|
|
56
|
-
</div>
|
|
57
|
-
<div class="divider"></div>
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
<!-- Embedded search: run a query through the Hanzo answer engine. -->
|
|
61
|
-
<form id="search-form" style="display:flex;gap:6px;margin-bottom:10px;">
|
|
62
|
-
<input id="search-input" type="text" placeholder="Search Hanzo AI…" autocomplete="off"
|
|
63
|
-
style="flex:1;min-width:0;padding:9px 12px;background:var(--surface-light,#171717);border:1px solid var(--border,rgba(255,255,255,0.12));border-radius:8px;color:var(--text,#fafafa);font-size:13px;font-family:inherit;outline:none;">
|
|
64
|
-
<button id="search-btn" type="submit" title="Search" aria-label="Search"
|
|
65
|
-
style="width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--primary,#fafafa);border:none;border-radius:8px;color:#000;cursor:pointer;">
|
|
66
|
-
<svg viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.8">
|
|
67
|
-
<circle cx="7" cy="7" r="4.5"/><path d="M11 11l3.5 3.5" stroke-linecap="round"/>
|
|
68
|
-
</svg>
|
|
69
|
-
</button>
|
|
70
|
-
</form>
|
|
71
|
-
|
|
72
|
-
<!-- Actions: single Open Chat button + on-page surface settings. -->
|
|
73
|
-
<button id="open-panel" class="btn btn-secondary" style="margin-bottom: 8px;">
|
|
74
|
-
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
75
|
-
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
76
|
-
</svg>
|
|
77
|
-
Open Chat
|
|
78
|
-
</button>
|
|
79
|
-
|
|
80
|
-
<!-- On-page chat config -->
|
|
81
|
-
<div class="onpage-config" style="display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:11px;">
|
|
82
|
-
<div class="feature-toggle" style="display:flex;justify-content:space-between;align-items:center;">
|
|
83
|
-
<label style="display:flex;align-items:center;gap:6px;cursor:pointer;">
|
|
84
|
-
<input type="checkbox" id="overlay-enabled" checked>
|
|
85
|
-
<span>On-page chat panel</span>
|
|
86
|
-
</label>
|
|
87
|
-
<span style="color:var(--text-muted,#888);font-size:10px;">overlay vs new tab</span>
|
|
88
|
-
</div>
|
|
89
|
-
|
|
90
|
-
<div id="overlay-side-row" class="side-picker" style="display:flex;gap:6px;align-items:center;">
|
|
91
|
-
<span style="color:var(--text-muted,#888);">Pin:</span>
|
|
92
|
-
<button id="pin-left" class="btn btn-ghost" style="flex:1;padding:4px 8px;font-size:11px;">Left</button>
|
|
93
|
-
<button id="pin-right" class="btn btn-ghost" style="flex:1;padding:4px 8px;font-size:11px;" data-active="true">Right</button>
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
<div id="overlay-width-row" style="display:flex;gap:6px;align-items:center;">
|
|
97
|
-
<span style="color:var(--text-muted,#888);">Width:</span>
|
|
98
|
-
<button class="btn btn-ghost width-btn" data-width="compact" style="flex:1;padding:4px 8px;font-size:11px;">Compact</button>
|
|
99
|
-
<button class="btn btn-ghost width-btn" data-width="default" style="flex:1;padding:4px 8px;font-size:11px;" data-active="true">Default</button>
|
|
100
|
-
<button class="btn btn-ghost width-btn" data-width="wide" style="flex:1;padding:4px 8px;font-size:11px;">Wide</button>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
<span style="color:var(--text-muted,#888);font-size:10px;line-height:1.4;">
|
|
104
|
-
FF native sidebar: View → Sidebar → Hanzo AI.<br>
|
|
105
|
-
Disable to fall back to a standalone tab — useful on sites with strict CSP.
|
|
106
|
-
</span>
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<div class="divider"></div>
|
|
110
|
-
|
|
111
|
-
<!-- AI Usage (Claude + Codex, from the current browser session) -->
|
|
112
|
-
<div class="usage-header" style="display:flex;align-items:center;justify-content:space-between;">
|
|
113
|
-
<h3>AI Usage</h3>
|
|
114
|
-
<button id="usage-refresh" class="btn-icon" title="Refresh usage">
|
|
115
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
116
|
-
<path d="M23 4v6h-6M1 20v-6h6"/>
|
|
117
|
-
<path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/>
|
|
118
|
-
</svg>
|
|
119
|
-
</button>
|
|
120
|
-
</div>
|
|
121
|
-
<div id="usage-list" class="usage-list" style="display:flex;flex-direction:column;gap:8px;"></div>
|
|
122
|
-
<a href="https://console.hanzo.ai/ai-accounts" target="_blank"
|
|
123
|
-
style="display:inline-block;margin-top:8px;font-size:11px;color:var(--text-muted,#888);">Manage AI accounts →</a>
|
|
124
|
-
|
|
125
|
-
<div class="divider"></div>
|
|
126
|
-
|
|
127
|
-
<!-- Tools -->
|
|
128
|
-
<h3>Tools</h3>
|
|
129
|
-
<div class="tools-grid">
|
|
130
|
-
<button id="tool-picker" class="tool-btn" title="Pick an element on the page">
|
|
131
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
132
|
-
<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"/>
|
|
133
|
-
<path d="M13 13l6 6"/>
|
|
134
|
-
</svg>
|
|
135
|
-
<span>Selector</span>
|
|
136
|
-
</button>
|
|
137
|
-
<button id="tool-screenshot" class="tool-btn" title="Capture visible page">
|
|
138
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
139
|
-
<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/>
|
|
140
|
-
<circle cx="12" cy="13" r="4"/>
|
|
141
|
-
</svg>
|
|
142
|
-
<span>Screenshot</span>
|
|
143
|
-
</button>
|
|
144
|
-
<button id="tool-pageinfo" class="tool-btn" title="Copy page info to clipboard">
|
|
145
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
146
|
-
<circle cx="12" cy="12" r="10"/>
|
|
147
|
-
<path d="M12 16v-4M12 8h.01"/>
|
|
148
|
-
</svg>
|
|
149
|
-
<span>Page Info</span>
|
|
150
|
-
</button>
|
|
151
|
-
<button id="tool-accessibility" class="tool-btn" title="Run accessibility audit">
|
|
152
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
153
|
-
<circle cx="12" cy="4" r="2"/>
|
|
154
|
-
<path d="M12 6v6M8 8l4 2 4-2M8 22l2-6h4l2 6"/>
|
|
155
|
-
</svg>
|
|
156
|
-
<span>A11y Audit</span>
|
|
157
|
-
</button>
|
|
158
|
-
<button id="tool-performance" class="tool-btn" title="Run performance audit">
|
|
159
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
160
|
-
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
|
|
161
|
-
</svg>
|
|
162
|
-
<span>Perf Audit</span>
|
|
163
|
-
</button>
|
|
164
|
-
<button id="tool-console" class="tool-btn" title="Evaluate JS in page context">
|
|
165
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
166
|
-
<polyline points="4 17 10 11 4 5"/>
|
|
167
|
-
<line x1="12" y1="19" x2="20" y2="19"/>
|
|
168
|
-
</svg>
|
|
169
|
-
<span>Console</span>
|
|
170
|
-
</button>
|
|
171
|
-
</div>
|
|
172
|
-
|
|
173
|
-
<div class="divider"></div>
|
|
174
|
-
|
|
175
|
-
<!-- Features -->
|
|
176
|
-
<h3>Features</h3>
|
|
177
|
-
<div class="features">
|
|
178
|
-
<div class="feature-toggle">
|
|
179
|
-
<label>
|
|
180
|
-
<input type="checkbox" id="source-maps" checked>
|
|
181
|
-
<span class="toggle"></span>
|
|
182
|
-
<div class="feature-info">
|
|
183
|
-
<strong>Source Maps</strong>
|
|
184
|
-
<small>Click-to-code navigation</small>
|
|
185
|
-
</div>
|
|
186
|
-
</label>
|
|
187
|
-
</div>
|
|
188
|
-
|
|
189
|
-
<div class="feature-toggle">
|
|
190
|
-
<label>
|
|
191
|
-
<input type="checkbox" id="webgpu-ai" checked>
|
|
192
|
-
<span class="toggle"></span>
|
|
193
|
-
<div class="feature-info">
|
|
194
|
-
<strong>WebGPU AI</strong>
|
|
195
|
-
<small>Local AI inference</small>
|
|
196
|
-
</div>
|
|
197
|
-
</label>
|
|
198
|
-
</div>
|
|
199
|
-
|
|
200
|
-
<div class="feature-toggle">
|
|
201
|
-
<label>
|
|
202
|
-
<input type="checkbox" id="browser-control">
|
|
203
|
-
<span class="toggle"></span>
|
|
204
|
-
<div class="feature-info">
|
|
205
|
-
<strong>Browser Control</strong>
|
|
206
|
-
<small>AI browser automation</small>
|
|
207
|
-
</div>
|
|
208
|
-
</label>
|
|
209
|
-
</div>
|
|
210
|
-
|
|
211
|
-
<div class="feature-toggle">
|
|
212
|
-
<label>
|
|
213
|
-
<input type="checkbox" id="tab-filesystem">
|
|
214
|
-
<span class="toggle"></span>
|
|
215
|
-
<div class="feature-info">
|
|
216
|
-
<strong>Tab Filesystem</strong>
|
|
217
|
-
<small>Mount tabs as files</small>
|
|
218
|
-
</div>
|
|
219
|
-
</label>
|
|
220
|
-
</div>
|
|
221
|
-
</div>
|
|
222
|
-
|
|
223
|
-
<div class="divider"></div>
|
|
224
|
-
|
|
225
|
-
<!-- Browser Backend -->
|
|
226
|
-
<div class="setting-group backend-picker">
|
|
227
|
-
<h3>Backend</h3>
|
|
228
|
-
<div class="backend-select-wrapper">
|
|
229
|
-
<select id="browser-backend">
|
|
230
|
-
<option value="auto">Auto (default)</option>
|
|
231
|
-
<option value="this">This Browser</option>
|
|
232
|
-
<option value="firefox">Firefox</option>
|
|
233
|
-
<option value="chrome">Chrome</option>
|
|
234
|
-
<option value="playwright">Playwright Only</option>
|
|
235
|
-
</select>
|
|
236
|
-
</div>
|
|
237
|
-
<div class="backend-status">
|
|
238
|
-
<span class="status-dot" id="bridge-status"></span>
|
|
239
|
-
<span id="bridge-detail" class="status-detail">Checking bridge...</span>
|
|
240
|
-
</div>
|
|
241
|
-
</div>
|
|
242
|
-
|
|
243
|
-
<div class="divider"></div>
|
|
244
|
-
|
|
245
|
-
<!-- Connection Status -->
|
|
246
|
-
<h3>Status</h3>
|
|
247
|
-
<div class="status">
|
|
248
|
-
<div class="status-item">
|
|
249
|
-
<span class="status-dot" id="zap-status"></span>
|
|
250
|
-
<span>ZAP Bridge</span>
|
|
251
|
-
<span id="zap-detail" class="status-detail">Discovering...</span>
|
|
252
|
-
</div>
|
|
253
|
-
<div class="status-item">
|
|
254
|
-
<span class="status-dot" id="cdp-status"></span>
|
|
255
|
-
<span>CDP Bridge</span>
|
|
256
|
-
<span id="cdp-detail" class="status-detail">Checking...</span>
|
|
257
|
-
</div>
|
|
258
|
-
<div class="status-item">
|
|
259
|
-
<span class="status-dot" id="mcp-status"></span>
|
|
260
|
-
<span>MCP Bridge</span>
|
|
261
|
-
<span id="mcp-port" class="status-detail">:9224</span>
|
|
262
|
-
</div>
|
|
263
|
-
<div class="status-item">
|
|
264
|
-
<span class="status-dot" id="gpu-status"></span>
|
|
265
|
-
<span>WebGPU</span>
|
|
266
|
-
<span id="gpu-detail" class="status-detail">Checking...</span>
|
|
267
|
-
</div>
|
|
268
|
-
</div>
|
|
269
|
-
|
|
270
|
-
<div class="divider"></div>
|
|
271
|
-
|
|
272
|
-
<!-- Actions -->
|
|
273
|
-
<div class="actions">
|
|
274
|
-
<button id="test-connection" class="btn btn-ghost">Test Connection</button>
|
|
275
|
-
<button id="open-settings" class="btn btn-ghost">Settings</button>
|
|
276
|
-
</div>
|
|
277
|
-
|
|
278
|
-
<!-- Quick Guide -->
|
|
279
|
-
<div class="guide" style="margin-top: 12px;">
|
|
280
|
-
<h3 style="text-transform: none; letter-spacing: 0; color: var(--text);">Shortcuts</h3>
|
|
281
|
-
<p>
|
|
282
|
-
<kbd id="inspect-shortcut-display">Ctrl</kbd> + <kbd>Click</kbd>
|
|
283
|
-
any element to jump to source
|
|
284
|
-
<button id="record-inspect-shortcut" class="btn-link" style="margin-left:6px;font-size:11px;">edit</button>
|
|
285
|
-
</p>
|
|
286
|
-
<p><kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>H</kbd> open Hanzo panel</p>
|
|
287
|
-
</div>
|
|
288
|
-
</div>
|
|
289
|
-
|
|
290
|
-
<!-- Settings Section -->
|
|
291
|
-
<div id="settings-section" class="section hidden">
|
|
292
|
-
<div class="settings-header">
|
|
293
|
-
<button id="back-btn" class="btn-icon">
|
|
294
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
295
|
-
<path d="M19 12H5M12 19l-7-7 7-7"/>
|
|
296
|
-
</svg>
|
|
297
|
-
</button>
|
|
298
|
-
<h2>Settings</h2>
|
|
299
|
-
</div>
|
|
300
|
-
|
|
301
|
-
<div class="settings-content">
|
|
302
|
-
<div class="setting-group">
|
|
303
|
-
<h3>Connection</h3>
|
|
304
|
-
<label>
|
|
305
|
-
MCP Port
|
|
306
|
-
<input type="number" id="mcp-port-setting" value="3001" min="1024" max="65535">
|
|
307
|
-
</label>
|
|
308
|
-
<label>
|
|
309
|
-
CDP Bridge Port
|
|
310
|
-
<input type="number" id="cdp-port-setting" value="9223" min="1024" max="65535">
|
|
311
|
-
</label>
|
|
312
|
-
<label>
|
|
313
|
-
ZAP Discovery Ports
|
|
314
|
-
<input type="text" id="zap-ports-setting" value="9999,9998,9997,9996,9995" placeholder="Comma-separated ports">
|
|
315
|
-
</label>
|
|
316
|
-
</div>
|
|
317
|
-
|
|
318
|
-
<div class="setting-group">
|
|
319
|
-
<h3>AI Models</h3>
|
|
320
|
-
<label>
|
|
321
|
-
Local Model Path
|
|
322
|
-
<input type="text" id="model-path" placeholder="/models/browser-control-4bit.bin">
|
|
323
|
-
</label>
|
|
324
|
-
<label>
|
|
325
|
-
Model Quantization
|
|
326
|
-
<select id="model-quant">
|
|
327
|
-
<option value="4bit">4-bit (Fastest)</option>
|
|
328
|
-
<option value="8bit">8-bit (Balanced)</option>
|
|
329
|
-
<option value="fp16">FP16 (Best Quality)</option>
|
|
330
|
-
</select>
|
|
331
|
-
</label>
|
|
332
|
-
</div>
|
|
333
|
-
|
|
334
|
-
<div class="setting-group">
|
|
335
|
-
<h3>Browser Control</h3>
|
|
336
|
-
<label>
|
|
337
|
-
<input type="checkbox" id="safe-mode" checked>
|
|
338
|
-
Safe Mode (require confirmation for actions)
|
|
339
|
-
</label>
|
|
340
|
-
<label>
|
|
341
|
-
Max Workers
|
|
342
|
-
<input type="number" id="max-workers" value="3" min="1" max="10">
|
|
343
|
-
</label>
|
|
344
|
-
</div>
|
|
345
|
-
|
|
346
|
-
<div class="setting-group">
|
|
347
|
-
<h3>Keyboard</h3>
|
|
348
|
-
<label>
|
|
349
|
-
Inspect modifier
|
|
350
|
-
<div style="display:flex;gap:8px;align-items:center;margin-top:4px;">
|
|
351
|
-
<kbd id="inspect-shortcut-current" style="flex:1;font-family:monospace;padding:4px 8px;background:var(--surface-2,#222);border-radius:4px;font-size:12px;">Ctrl</kbd>
|
|
352
|
-
<button id="inspect-shortcut-record" type="button" class="btn btn-ghost" style="padding:4px 10px;">Record</button>
|
|
353
|
-
<button id="inspect-shortcut-reset" type="button" class="btn btn-ghost" style="padding:4px 10px;">Reset</button>
|
|
354
|
-
</div>
|
|
355
|
-
<small style="color:var(--text-muted,#888);font-size:11px;">
|
|
356
|
-
Hold + click any element on a page to jump to its source. Default
|
|
357
|
-
is Ctrl (or ⌘ on Mac). Click "Record" then press the chord you
|
|
358
|
-
want — modifiers alone or modifier+letter both work.
|
|
359
|
-
</small>
|
|
360
|
-
</label>
|
|
361
|
-
</div>
|
|
362
|
-
|
|
363
|
-
<button id="save-settings" class="btn btn-primary">Save Settings</button>
|
|
364
|
-
</div>
|
|
365
|
-
</div>
|
|
366
|
-
|
|
367
|
-
<!-- Footer: version + nav links -->
|
|
368
|
-
<div class="footer-version" style="text-align:center;font-size:10px;color:var(--text-muted,#888);margin-top:14px;letter-spacing:0.04em;">
|
|
369
|
-
Hanzo AI <span id="footer-version">…</span>
|
|
370
|
-
</div>
|
|
371
|
-
<div class="footer-links">
|
|
372
|
-
<a href="https://docs.hanzo.ai" target="_blank">Docs</a>
|
|
373
|
-
<a href="https://console.hanzo.ai" target="_blank">Console</a>
|
|
374
|
-
<a href="https://github.com/hanzoai/extension" target="_blank">GitHub</a>
|
|
375
|
-
<a href="https://hanzo.ai" target="_blank">hanzo.ai</a>
|
|
376
|
-
</div>
|
|
377
|
-
</div>
|
|
378
|
-
|
|
379
|
-
<script src="popup.js"></script>
|
|
380
|
-
</body>
|
|
381
|
-
</html>
|