@hanzo/browser-extension 1.7.5 → 1.9.31
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/LICENSE +9 -18
- package/dist/browser-extension/README.md +1 -1
- package/dist/browser-extension/background-firefox.js +4184 -491
- package/dist/browser-extension/background.js +6938 -2413
- package/dist/browser-extension/browser-control.js +652 -18
- package/dist/browser-extension/chrome/background.js +6938 -2413
- package/dist/browser-extension/chrome/content-script.js +1642 -123
- 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 +20 -11
- package/dist/browser-extension/chrome/popup.css +352 -110
- package/dist/browser-extension/chrome/popup.html +159 -48
- package/dist/browser-extension/chrome/popup.js +1418 -46
- package/dist/browser-extension/chrome/sidebar.css +772 -156
- package/dist/browser-extension/chrome/sidebar.html +268 -85
- package/dist/browser-extension/chrome/sidebar.js +25846 -84
- package/dist/browser-extension/cli.js +2 -2
- package/dist/browser-extension/content-script.js +1642 -123
- package/dist/browser-extension/firefox/background.js +4184 -491
- package/dist/browser-extension/firefox/content-script.js +1642 -123
- 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 +24 -13
- package/dist/browser-extension/firefox/popup.css +352 -110
- package/dist/browser-extension/firefox/popup.html +159 -48
- package/dist/browser-extension/firefox/popup.js +1418 -46
- package/dist/browser-extension/firefox/sidebar.css +772 -156
- package/dist/browser-extension/firefox/sidebar.html +268 -85
- package/dist/browser-extension/firefox/sidebar.js +25846 -84
- 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 +20 -11
- package/dist/browser-extension/package.json +1 -1
- package/dist/browser-extension/popup.js +1418 -46
- package/dist/browser-extension/safari/Info.plist +3 -3
- package/dist/browser-extension/safari/background.js +6938 -2413
- package/dist/browser-extension/safari/content-script.js +1642 -123
- 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/popup.css +352 -110
- package/dist/browser-extension/safari/popup.html +159 -48
- package/dist/browser-extension/safari/popup.js +1418 -46
- package/dist/browser-extension/safari/sidebar.css +772 -156
- package/dist/browser-extension/safari/sidebar.html +268 -85
- package/dist/browser-extension/safari/sidebar.js +25846 -84
- package/dist/browser-extension/sidebar.js +25846 -84
- package/dist/browser-extension/webgpu-ai.js +78 -5
- package/images/icon128.png +0 -0
- package/images/icon16.png +0 -0
- package/images/icon48.png +0 -0
- package/manifest.json +7 -2
- package/package.json +27 -10
- package/src/chat-widget.tsx +96 -0
- package/src/gui-primitives.tsx +116 -0
- package/src/icon128.png +0 -0
- package/src/icon16.png +0 -0
- package/src/icon32.png +0 -0
- package/src/icon48.png +0 -0
- package/src/manifest-firefox.json +23 -12
- package/src/manifest.json +19 -10
- package/src/package.json +1 -1
- package/src/popup.css +352 -110
- package/src/popup.html +159 -48
- package/src/popup.js +196 -0
- package/src/sidebar.css +772 -156
- package/src/sidebar.html +268 -85
- package/src/sidebar.js +885 -0
- package/.github/workflows/docs.yml +0 -44
- package/.github/workflows/release.yml +0 -55
- package/README.md +0 -126
- package/dist/browser-extension/ai-worker.js +0 -30
- package/dist/browser-extension/cdp-bridge-server.js +0 -444
- package/dist/browser-extension/chrome/icon32.png +0 -0
- package/dist/browser-extension/firefox/icon32.png +0 -0
- package/dist/browser-extension/hanzo-browser-extension-firefox-1.1.0.zip +0 -0
- package/dist/browser-extension/icon32.png +0 -0
- package/dist/browser-extension/popup.css +0 -468
- package/dist/browser-extension/popup.html +0 -191
- package/dist/browser-extension/safari/icon32.png +0 -0
- package/dist/browser-extension/sidebar.css +0 -718
- package/dist/browser-extension/sidebar.html +0 -184
- package/dist/cdp-bridge-server.js +0 -411
- package/dist/hanzo-ai-chrome-1.7.2.zip +0 -0
- package/dist/hanzo-ai-chrome-1.7.3.zip +0 -0
- package/dist/hanzo-ai-firefox-1.7.2.zip +0 -0
- package/dist/hanzo-ai-firefox-1.7.3.zip +0 -0
- package/dist/safari/Hanzo AI/Hanzo AI.xcodeproj/project.pbxproj +0 -1047
- package/dist/safari/Hanzo AI/Hanzo AI.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-128@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-128@2x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-16@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-16@2x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-256@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-256@2x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-32@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-32@2x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-512@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/mac-icon-512@2x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/AppIcon.appiconset/universal-icon-1024@1x.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/Contents.json +0 -6
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/LargeIcon.imageset/Contents.json +0 -21
- package/dist/safari/Hanzo AI/Shared (App)/Assets.xcassets/LargeIcon.imageset/icon128.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Resources/Base.lproj/Main.html +0 -20
- package/dist/safari/Hanzo AI/Shared (App)/Resources/Icon.png +0 -0
- package/dist/safari/Hanzo AI/Shared (App)/Resources/Script.js +0 -24
- package/dist/safari/Hanzo AI/Shared (App)/Resources/Style.css +0 -61
- package/dist/safari/Hanzo AI/Shared (App)/ViewController.swift +0 -81
- package/dist/safari/Hanzo AI/Shared (Extension)/SafariWebExtensionHandler.swift +0 -42
- package/dist/safari/Hanzo AI/iOS (App)/AppDelegate.swift +0 -24
- package/dist/safari/Hanzo AI/iOS (App)/Base.lproj/LaunchScreen.storyboard +0 -36
- package/dist/safari/Hanzo AI/iOS (App)/Base.lproj/Main.storyboard +0 -38
- package/dist/safari/Hanzo AI/iOS (App)/Info.plist +0 -27
- package/dist/safari/Hanzo AI/iOS (App)/SceneDelegate.swift +0 -18
- package/dist/safari/Hanzo AI/iOS (Extension)/Info.plist +0 -13
- package/dist/safari/Hanzo AI/macOS (App)/AppDelegate.swift +0 -21
- package/dist/safari/Hanzo AI/macOS (App)/Base.lproj/Main.storyboard +0 -124
- package/dist/safari/Hanzo AI/macOS (App)/Info.plist +0 -8
- package/dist/safari/Hanzo AI/macOS (Extension)/Info.plist +0 -13
- package/docs/_config.yml +0 -13
- package/docs/_layouts/default.html +0 -435
- package/docs/index.md +0 -54
- package/install-extension.sh +0 -75
- package/test/claude-integration.test.ts +0 -251
- package/test/server-frameworks-edge-cases.test.ts +0 -145
- package/test/server-frameworks.test.ts +0 -395
- package/test-cdp-connection.js +0 -140
- package/tsconfig.json +0 -19
package/src/sidebar.css
CHANGED
|
@@ -1,30 +1,38 @@
|
|
|
1
|
-
/* Hanzo AI Browser Extension Sidebar —
|
|
1
|
+
/* Hanzo AI Browser Extension Sidebar — Hanzo brand: strictly monochrome.
|
|
2
|
+
See ~/work/hanzo/brand/brand.json — primaryColor #FFFFFF, no chromatic
|
|
3
|
+
accents. Status states are conveyed by intensity, not hue. */
|
|
2
4
|
|
|
3
5
|
:root {
|
|
4
|
-
--bg-primary: #
|
|
5
|
-
--bg-secondary: #
|
|
6
|
-
--bg-tertiary: #
|
|
7
|
-
--bg-hover: #
|
|
6
|
+
--bg-primary: #0a0a0a;
|
|
7
|
+
--bg-secondary: #0f0f0f;
|
|
8
|
+
--bg-tertiary: #171717;
|
|
9
|
+
--bg-hover: #262626;
|
|
8
10
|
|
|
9
|
-
--text-primary: #
|
|
10
|
-
--text-secondary: #
|
|
11
|
-
--text-tertiary: #
|
|
11
|
+
--text-primary: #fafafa;
|
|
12
|
+
--text-secondary: #a3a3a3;
|
|
13
|
+
--text-tertiary: #666666;
|
|
12
14
|
|
|
13
|
-
--accent: #
|
|
14
|
-
--accent-hover: #
|
|
15
|
+
--accent: #fafafa;
|
|
16
|
+
--accent-hover: #d4d4d4;
|
|
15
17
|
--accent-dim: rgba(255,255,255,0.06);
|
|
16
18
|
--accent-glow: rgba(255,255,255,0.03);
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
--
|
|
20
|
+
/* Status: monochrome by hue, distinguished by opacity / weight.
|
|
21
|
+
Brand is strict monochrome, so success/warn/error use luminance. */
|
|
22
|
+
--success: #fafafa;
|
|
23
|
+
--warning: #d4d4d4;
|
|
24
|
+
--error: rgba(255,255,255,0.55);
|
|
21
25
|
|
|
22
|
-
--border: rgba(255,255,255,0.
|
|
23
|
-
--border-strong: rgba(255,255,255,0.
|
|
26
|
+
--border: rgba(255,255,255,0.10);
|
|
27
|
+
--border-strong: rgba(255,255,255,0.16);
|
|
28
|
+
--input-border: rgba(255,255,255,0.15);
|
|
24
29
|
--glass: rgba(255,255,255,0.04);
|
|
25
30
|
--glass-strong: rgba(255,255,255,0.07);
|
|
26
31
|
--shadow: 0 4px 12px rgba(0,0,0,0.6);
|
|
27
32
|
--shadow-lg: 0 8px 32px rgba(0,0,0,0.5);
|
|
33
|
+
--radius: 10px;
|
|
34
|
+
--radius-md: 8px;
|
|
35
|
+
--radius-sm: 6px;
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
* {
|
|
@@ -34,16 +42,23 @@
|
|
|
34
42
|
}
|
|
35
43
|
|
|
36
44
|
body {
|
|
37
|
-
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', '
|
|
45
|
+
font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', sans-serif;
|
|
38
46
|
background: var(--bg-primary);
|
|
39
47
|
color: var(--text-primary);
|
|
40
48
|
font-size: 13px;
|
|
41
49
|
line-height: 1.6;
|
|
42
|
-
overflow
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
width: 100%;
|
|
52
|
+
height: 100vh;
|
|
43
53
|
-webkit-font-smoothing: antialiased;
|
|
44
54
|
-moz-osx-font-smoothing: grayscale;
|
|
45
55
|
}
|
|
46
56
|
|
|
57
|
+
html {
|
|
58
|
+
overflow: hidden;
|
|
59
|
+
height: 100vh;
|
|
60
|
+
}
|
|
61
|
+
|
|
47
62
|
.hidden { display: none !important; }
|
|
48
63
|
|
|
49
64
|
/* ==================== Shimmer Keyframes ==================== */
|
|
@@ -86,13 +101,15 @@ body {
|
|
|
86
101
|
/* ==================== Layout ==================== */
|
|
87
102
|
|
|
88
103
|
.sidebar-container {
|
|
89
|
-
width:
|
|
104
|
+
width: 100%;
|
|
105
|
+
min-width: 0;
|
|
90
106
|
height: 100vh;
|
|
91
107
|
display: flex;
|
|
92
108
|
flex-direction: column;
|
|
93
109
|
background: var(--bg-secondary);
|
|
94
110
|
border-left: 1px solid var(--border);
|
|
95
111
|
position: relative;
|
|
112
|
+
overflow: hidden;
|
|
96
113
|
}
|
|
97
114
|
|
|
98
115
|
/* Ambient glow behind sidebar */
|
|
@@ -211,38 +228,99 @@ body {
|
|
|
211
228
|
display: flex;
|
|
212
229
|
align-items: center;
|
|
213
230
|
justify-content: center;
|
|
214
|
-
padding: 40px
|
|
231
|
+
padding: 40px 24px;
|
|
215
232
|
flex: 1;
|
|
216
233
|
animation: fadeIn 0.4s ease;
|
|
217
234
|
}
|
|
218
235
|
|
|
219
236
|
.auth-card.compact {
|
|
220
237
|
text-align: center;
|
|
221
|
-
max-width:
|
|
238
|
+
max-width: 280px;
|
|
239
|
+
width: 100%;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.auth-card.compact .auth-logo {
|
|
243
|
+
width: 56px;
|
|
244
|
+
height: 56px;
|
|
245
|
+
color: var(--text-primary);
|
|
246
|
+
margin: 0 auto 24px;
|
|
247
|
+
display: block;
|
|
248
|
+
filter: drop-shadow(0 0 12px rgba(255, 255, 255, 0.15));
|
|
222
249
|
}
|
|
223
250
|
|
|
224
251
|
.auth-card.compact .auth-headline {
|
|
225
|
-
font-size:
|
|
226
|
-
font-weight:
|
|
252
|
+
font-size: 22px;
|
|
253
|
+
font-weight: 700;
|
|
227
254
|
color: var(--text-primary);
|
|
228
|
-
margin-bottom:
|
|
255
|
+
margin-bottom: 10px;
|
|
256
|
+
letter-spacing: -0.02em;
|
|
229
257
|
}
|
|
230
258
|
|
|
231
259
|
.auth-card.compact .auth-sub {
|
|
232
|
-
font-size:
|
|
233
|
-
color: var(--text-
|
|
234
|
-
margin-bottom:
|
|
260
|
+
font-size: 13px;
|
|
261
|
+
color: var(--text-secondary);
|
|
262
|
+
margin-bottom: 24px;
|
|
263
|
+
line-height: 1.5;
|
|
235
264
|
}
|
|
236
265
|
|
|
237
|
-
|
|
266
|
+
/* Sign-in button — matches @hanzo/gui primary button on dark (monochrome) */
|
|
267
|
+
.auth-signin-btn {
|
|
238
268
|
width: 100%;
|
|
269
|
+
padding: 10px 16px;
|
|
270
|
+
height: 40px;
|
|
271
|
+
background: var(--accent);
|
|
272
|
+
color: #0a0a0a;
|
|
273
|
+
border: none;
|
|
274
|
+
border-radius: var(--radius-md);
|
|
275
|
+
font-size: 14px;
|
|
276
|
+
font-weight: 600;
|
|
277
|
+
cursor: pointer;
|
|
278
|
+
transition: background 0.15s, box-shadow 0.15s;
|
|
279
|
+
margin-bottom: 10px;
|
|
280
|
+
letter-spacing: -0.01em;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.auth-signin-btn:hover {
|
|
284
|
+
background: var(--accent-hover);
|
|
285
|
+
box-shadow: 0 0 12px rgba(255, 255, 255, 0.1);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.auth-signin-btn:active {
|
|
289
|
+
transform: scale(0.98);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.auth-signin-btn:disabled {
|
|
293
|
+
opacity: 0.5;
|
|
294
|
+
cursor: not-allowed;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/* Ghost create account button */
|
|
298
|
+
.auth-create-btn {
|
|
299
|
+
width: 100%;
|
|
300
|
+
padding: 10px 16px;
|
|
301
|
+
height: 36px;
|
|
302
|
+
background: transparent;
|
|
303
|
+
color: var(--text-secondary);
|
|
304
|
+
border: 1px solid var(--border);
|
|
305
|
+
border-radius: var(--radius-md);
|
|
306
|
+
font-size: 13px;
|
|
307
|
+
font-weight: 500;
|
|
308
|
+
cursor: pointer;
|
|
309
|
+
transition: all 0.15s;
|
|
239
310
|
margin-bottom: 16px;
|
|
240
311
|
}
|
|
241
312
|
|
|
313
|
+
.auth-create-btn:hover {
|
|
314
|
+
color: var(--text-primary);
|
|
315
|
+
background: var(--glass);
|
|
316
|
+
border-color: var(--border-strong);
|
|
317
|
+
}
|
|
318
|
+
|
|
242
319
|
.auth-card.compact .auth-note {
|
|
243
320
|
font-size: 11px;
|
|
244
321
|
color: var(--text-tertiary);
|
|
245
322
|
margin-bottom: 0;
|
|
323
|
+
line-height: 1.5;
|
|
246
324
|
}
|
|
247
325
|
|
|
248
326
|
.auth-card.compact .auth-note a {
|
|
@@ -259,7 +337,7 @@ body {
|
|
|
259
337
|
.chat-modern-login-card {
|
|
260
338
|
width: min(320px, 100%);
|
|
261
339
|
border: 1px solid var(--border-strong);
|
|
262
|
-
border-radius:
|
|
340
|
+
border-radius: var(--radius);
|
|
263
341
|
background: var(--glass-strong);
|
|
264
342
|
backdrop-filter: blur(24px) saturate(180%);
|
|
265
343
|
-webkit-backdrop-filter: blur(24px) saturate(180%);
|
|
@@ -274,6 +352,11 @@ body {
|
|
|
274
352
|
margin-bottom: 14px;
|
|
275
353
|
}
|
|
276
354
|
|
|
355
|
+
.chat-modern-login-card #signup-btn {
|
|
356
|
+
width: 100%;
|
|
357
|
+
margin-bottom: 14px;
|
|
358
|
+
}
|
|
359
|
+
|
|
277
360
|
.chat-modern-login-card .auth-note {
|
|
278
361
|
font-size: 11px;
|
|
279
362
|
color: var(--text-tertiary);
|
|
@@ -348,6 +431,7 @@ body {
|
|
|
348
431
|
|
|
349
432
|
.tab-content {
|
|
350
433
|
flex: 1;
|
|
434
|
+
min-height: 0;
|
|
351
435
|
display: flex;
|
|
352
436
|
flex-direction: column;
|
|
353
437
|
overflow: hidden;
|
|
@@ -357,36 +441,55 @@ body {
|
|
|
357
441
|
.tools-scroll,
|
|
358
442
|
.settings-scroll {
|
|
359
443
|
flex: 1;
|
|
444
|
+
min-height: 0;
|
|
360
445
|
overflow-y: auto;
|
|
446
|
+
padding-bottom: 8px;
|
|
447
|
+
overflow-x: hidden;
|
|
361
448
|
padding: 16px;
|
|
362
449
|
display: flex;
|
|
363
450
|
flex-direction: column;
|
|
364
451
|
gap: 16px;
|
|
452
|
+
scrollbar-width: thin;
|
|
453
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
365
454
|
}
|
|
366
455
|
|
|
367
456
|
/* ==================== Chat ==================== */
|
|
368
457
|
|
|
369
458
|
.chat-messages {
|
|
370
459
|
flex: 1;
|
|
460
|
+
min-height: 0;
|
|
371
461
|
overflow-y: auto;
|
|
462
|
+
overflow-x: hidden;
|
|
372
463
|
padding: 16px;
|
|
373
464
|
display: flex;
|
|
374
465
|
flex-direction: column;
|
|
375
466
|
gap: 12px;
|
|
467
|
+
scrollbar-width: thin;
|
|
468
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
376
469
|
}
|
|
377
470
|
|
|
378
471
|
.chat-welcome {
|
|
472
|
+
display: flex;
|
|
473
|
+
flex-direction: column;
|
|
474
|
+
align-items: center;
|
|
475
|
+
justify-content: center;
|
|
476
|
+
flex: 1;
|
|
379
477
|
text-align: center;
|
|
380
478
|
color: var(--text-tertiary);
|
|
381
479
|
padding: 40px 20px;
|
|
382
|
-
font-size:
|
|
480
|
+
font-size: 12px;
|
|
481
|
+
letter-spacing: 0.01em;
|
|
482
|
+
gap: 8px;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.chat-welcome p {
|
|
383
486
|
animation: breathe 4s infinite ease-in-out;
|
|
384
487
|
}
|
|
385
488
|
|
|
386
489
|
.msg {
|
|
387
490
|
max-width: 90%;
|
|
388
491
|
padding: 10px 14px;
|
|
389
|
-
border-radius:
|
|
492
|
+
border-radius: var(--radius);
|
|
390
493
|
font-size: 13px;
|
|
391
494
|
line-height: 1.5;
|
|
392
495
|
word-wrap: break-word;
|
|
@@ -414,17 +517,17 @@ body {
|
|
|
414
517
|
.msg-assistant pre {
|
|
415
518
|
background: var(--bg-primary);
|
|
416
519
|
border: 1px solid var(--border);
|
|
417
|
-
border-radius:
|
|
520
|
+
border-radius: var(--radius-sm);
|
|
418
521
|
padding: 10px 12px;
|
|
419
522
|
margin: 8px 0;
|
|
420
523
|
overflow-x: auto;
|
|
421
|
-
font-family: '
|
|
524
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
422
525
|
font-size: 12px;
|
|
423
526
|
line-height: 1.4;
|
|
424
527
|
}
|
|
425
528
|
|
|
426
529
|
.msg-assistant code {
|
|
427
|
-
font-family: '
|
|
530
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
428
531
|
font-size: 12px;
|
|
429
532
|
background: rgba(255,255,255,0.06);
|
|
430
533
|
padding: 2px 5px;
|
|
@@ -442,7 +545,7 @@ body {
|
|
|
442
545
|
color: white;
|
|
443
546
|
font-size: 12px;
|
|
444
547
|
padding: 6px 12px;
|
|
445
|
-
border-radius:
|
|
548
|
+
border-radius: var(--radius-sm);
|
|
446
549
|
}
|
|
447
550
|
|
|
448
551
|
.typing-indicator {
|
|
@@ -467,138 +570,177 @@ body {
|
|
|
467
570
|
.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
|
|
468
571
|
.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
|
|
469
572
|
|
|
470
|
-
/* Chat Input */
|
|
573
|
+
/* ==================== Composer (Modern Chat Input) ==================== */
|
|
471
574
|
|
|
472
|
-
.
|
|
473
|
-
|
|
474
|
-
padding: 12px 16px;
|
|
475
|
-
background: rgba(0,0,0,0.5);
|
|
476
|
-
backdrop-filter: blur(20px) saturate(180%);
|
|
477
|
-
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
575
|
+
.composer {
|
|
576
|
+
padding: 10px;
|
|
478
577
|
flex-shrink: 0;
|
|
479
578
|
position: relative;
|
|
480
579
|
z-index: 10;
|
|
580
|
+
border-top: 1px solid rgba(255,255,255,0.10);
|
|
581
|
+
background: #0f0f0f;
|
|
481
582
|
}
|
|
482
583
|
|
|
483
|
-
.
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
584
|
+
.composer-box {
|
|
585
|
+
background: #171717;
|
|
586
|
+
border: 1px solid rgba(255,255,255,0.15);
|
|
587
|
+
border-radius: 10px;
|
|
588
|
+
overflow: hidden;
|
|
589
|
+
transition: border-color 0.2s, box-shadow 0.2s;
|
|
487
590
|
}
|
|
488
591
|
|
|
489
|
-
.
|
|
490
|
-
|
|
592
|
+
.composer-box:focus-within {
|
|
593
|
+
border-color: rgba(255,255,255,0.22);
|
|
594
|
+
box-shadow: 0 0 0 2px rgba(255,255,255,0.06);
|
|
491
595
|
}
|
|
492
596
|
|
|
493
|
-
.
|
|
597
|
+
.composer-box textarea {
|
|
598
|
+
display: block;
|
|
494
599
|
width: 100%;
|
|
495
|
-
padding:
|
|
496
|
-
background:
|
|
497
|
-
border:
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
font-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
600
|
+
padding: 10px 12px 4px;
|
|
601
|
+
background: transparent;
|
|
602
|
+
border: none;
|
|
603
|
+
color: #fafafa;
|
|
604
|
+
font-size: 13px;
|
|
605
|
+
font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', sans-serif;
|
|
606
|
+
line-height: 1.5;
|
|
607
|
+
resize: none;
|
|
608
|
+
outline: none;
|
|
609
|
+
min-height: 36px;
|
|
610
|
+
max-height: 120px;
|
|
611
|
+
box-sizing: border-box;
|
|
505
612
|
}
|
|
506
613
|
|
|
507
|
-
.
|
|
508
|
-
|
|
509
|
-
outline: none;
|
|
614
|
+
.composer-box textarea::placeholder {
|
|
615
|
+
color: #666;
|
|
510
616
|
}
|
|
511
617
|
|
|
512
|
-
.
|
|
618
|
+
.composer-bar {
|
|
513
619
|
display: flex;
|
|
514
620
|
align-items: center;
|
|
515
|
-
|
|
516
|
-
|
|
621
|
+
justify-content: space-between;
|
|
622
|
+
padding: 4px 8px 8px;
|
|
623
|
+
gap: 4px;
|
|
517
624
|
}
|
|
518
625
|
|
|
519
|
-
.
|
|
520
|
-
display:
|
|
626
|
+
.composer-controls {
|
|
627
|
+
display: flex;
|
|
521
628
|
align-items: center;
|
|
522
629
|
gap: 4px;
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
630
|
+
flex: 1;
|
|
631
|
+
min-width: 0;
|
|
632
|
+
overflow: hidden;
|
|
526
633
|
}
|
|
527
634
|
|
|
528
|
-
.
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
635
|
+
.composer-model {
|
|
636
|
+
padding: 3px 18px 3px 6px;
|
|
637
|
+
background: rgba(255,255,255,0.07);
|
|
638
|
+
border: 1px solid rgba(255,255,255,0.10);
|
|
639
|
+
border-radius: 6px;
|
|
640
|
+
color: #a3a3a3;
|
|
641
|
+
font-size: 10px;
|
|
642
|
+
font-family: inherit;
|
|
643
|
+
cursor: pointer;
|
|
644
|
+
-webkit-appearance: none;
|
|
645
|
+
-moz-appearance: none;
|
|
646
|
+
appearance: none;
|
|
647
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2.5 4l2.5 2.5 2.5-2.5' stroke='%236B6B6B' stroke-width='1.2'/%3E%3C/svg%3E");
|
|
648
|
+
background-repeat: no-repeat;
|
|
649
|
+
background-position: right 4px center;
|
|
650
|
+
white-space: nowrap;
|
|
651
|
+
max-width: 110px;
|
|
652
|
+
text-overflow: ellipsis;
|
|
653
|
+
overflow: hidden;
|
|
654
|
+
transition: border-color 0.2s;
|
|
655
|
+
height: 22px;
|
|
656
|
+
flex-shrink: 0;
|
|
657
|
+
line-height: 16px;
|
|
532
658
|
}
|
|
533
659
|
|
|
534
|
-
.
|
|
535
|
-
|
|
536
|
-
font-size: 11px;
|
|
537
|
-
color: var(--text-tertiary);
|
|
660
|
+
.composer-model:hover {
|
|
661
|
+
border-color: rgba(255,255,255,0.16);
|
|
538
662
|
}
|
|
539
663
|
|
|
540
|
-
.
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
align-items: flex-end;
|
|
664
|
+
.composer-model:focus {
|
|
665
|
+
border-color: rgba(255,255,255,0.16);
|
|
666
|
+
outline: none;
|
|
544
667
|
}
|
|
545
668
|
|
|
546
|
-
.
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
transition: border-color 0.2s, box-shadow 0.2s;
|
|
560
|
-
backdrop-filter: blur(8px);
|
|
561
|
-
-webkit-backdrop-filter: blur(8px);
|
|
669
|
+
.composer-toggle {
|
|
670
|
+
display: inline-flex;
|
|
671
|
+
align-items: center;
|
|
672
|
+
gap: 2px;
|
|
673
|
+
font-size: 10px;
|
|
674
|
+
color: #666;
|
|
675
|
+
user-select: none;
|
|
676
|
+
cursor: pointer;
|
|
677
|
+
white-space: nowrap;
|
|
678
|
+
padding: 2px 4px;
|
|
679
|
+
border-radius: 4px;
|
|
680
|
+
transition: background 0.15s;
|
|
681
|
+
flex-shrink: 0;
|
|
562
682
|
}
|
|
563
683
|
|
|
564
|
-
.
|
|
565
|
-
|
|
566
|
-
box-shadow: 0 0 0 1px rgba(255,255,255,0.08);
|
|
684
|
+
.composer-toggle:hover {
|
|
685
|
+
background: rgba(255,255,255,0.04);
|
|
567
686
|
}
|
|
568
687
|
|
|
569
|
-
.
|
|
570
|
-
|
|
688
|
+
.composer-toggle input[type="checkbox"] {
|
|
689
|
+
width: 11px;
|
|
690
|
+
height: 11px;
|
|
691
|
+
accent-color: #fafafa;
|
|
692
|
+
cursor: pointer;
|
|
693
|
+
margin: 0;
|
|
571
694
|
}
|
|
572
695
|
|
|
573
|
-
.
|
|
574
|
-
|
|
575
|
-
|
|
696
|
+
.composer-toggle:has(input:checked) {
|
|
697
|
+
color: #a3a3a3;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
.composer-status {
|
|
701
|
+
font-size: 9px;
|
|
702
|
+
color: var(--text-tertiary);
|
|
703
|
+
white-space: nowrap;
|
|
704
|
+
padding: 1px 5px;
|
|
705
|
+
border-radius: 3px;
|
|
706
|
+
background: var(--glass);
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
.composer-send {
|
|
710
|
+
width: 30px;
|
|
711
|
+
height: 30px;
|
|
576
712
|
display: flex;
|
|
577
713
|
align-items: center;
|
|
578
714
|
justify-content: center;
|
|
579
715
|
background: var(--accent);
|
|
580
716
|
border: none;
|
|
581
|
-
border-radius:
|
|
582
|
-
color: #
|
|
717
|
+
border-radius: 50%;
|
|
718
|
+
color: #000;
|
|
583
719
|
cursor: pointer;
|
|
584
720
|
flex-shrink: 0;
|
|
585
721
|
transition: all 0.2s;
|
|
586
722
|
}
|
|
587
723
|
|
|
588
|
-
.send
|
|
724
|
+
.composer-send:hover {
|
|
589
725
|
background: var(--accent-hover);
|
|
590
726
|
box-shadow: 0 0 12px rgba(255,255,255,0.15);
|
|
727
|
+
transform: scale(1.05);
|
|
591
728
|
}
|
|
592
729
|
|
|
593
|
-
.send
|
|
594
|
-
|
|
730
|
+
.composer-send:active {
|
|
731
|
+
transform: scale(0.95);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
.composer-send:disabled {
|
|
735
|
+
opacity: 0.15;
|
|
595
736
|
cursor: not-allowed;
|
|
596
737
|
box-shadow: none;
|
|
738
|
+
transform: none;
|
|
597
739
|
}
|
|
598
740
|
|
|
599
|
-
.send
|
|
600
|
-
width:
|
|
601
|
-
height:
|
|
741
|
+
.composer-send svg {
|
|
742
|
+
width: 13px;
|
|
743
|
+
height: 13px;
|
|
602
744
|
}
|
|
603
745
|
|
|
604
746
|
/* ==================== Buttons ==================== */
|
|
@@ -611,7 +753,7 @@ body {
|
|
|
611
753
|
justify-content: center;
|
|
612
754
|
background: transparent;
|
|
613
755
|
border: none;
|
|
614
|
-
border-radius:
|
|
756
|
+
border-radius: var(--radius-sm);
|
|
615
757
|
color: var(--text-secondary);
|
|
616
758
|
cursor: pointer;
|
|
617
759
|
transition: all 0.2s;
|
|
@@ -632,13 +774,19 @@ body {
|
|
|
632
774
|
height: 18px;
|
|
633
775
|
}
|
|
634
776
|
|
|
777
|
+
.settings-scroll > .primary-btn {
|
|
778
|
+
margin-top: 4px;
|
|
779
|
+
margin-bottom: 12px;
|
|
780
|
+
flex-shrink: 0;
|
|
781
|
+
}
|
|
782
|
+
|
|
635
783
|
.primary-btn {
|
|
636
784
|
width: 100%;
|
|
637
785
|
padding: 10px 16px;
|
|
638
786
|
background: var(--accent);
|
|
639
787
|
color: #000000;
|
|
640
788
|
border: none;
|
|
641
|
-
border-radius:
|
|
789
|
+
border-radius: var(--radius-md);
|
|
642
790
|
font-weight: 600;
|
|
643
791
|
font-size: 13px;
|
|
644
792
|
cursor: pointer;
|
|
@@ -676,21 +824,19 @@ body {
|
|
|
676
824
|
.secondary-btn {
|
|
677
825
|
width: 100%;
|
|
678
826
|
padding: 8px 16px;
|
|
679
|
-
background: var(--
|
|
827
|
+
background: var(--bg-tertiary);
|
|
680
828
|
color: var(--text-primary);
|
|
681
829
|
border: 1px solid var(--border);
|
|
682
|
-
border-radius:
|
|
830
|
+
border-radius: var(--radius-md);
|
|
683
831
|
font-size: 12px;
|
|
832
|
+
font-family: inherit;
|
|
684
833
|
cursor: pointer;
|
|
685
834
|
transition: all 0.2s;
|
|
686
|
-
backdrop-filter: blur(8px);
|
|
687
|
-
-webkit-backdrop-filter: blur(8px);
|
|
688
835
|
}
|
|
689
836
|
|
|
690
837
|
.secondary-btn:hover {
|
|
691
|
-
background: var(--
|
|
838
|
+
background: var(--bg-hover);
|
|
692
839
|
border-color: var(--border-strong);
|
|
693
|
-
box-shadow: 0 0 8px rgba(255,255,255,0.05);
|
|
694
840
|
}
|
|
695
841
|
|
|
696
842
|
.action-btn {
|
|
@@ -700,22 +846,20 @@ body {
|
|
|
700
846
|
justify-content: center;
|
|
701
847
|
gap: 8px;
|
|
702
848
|
padding: 10px;
|
|
703
|
-
background: var(--
|
|
849
|
+
background: var(--bg-tertiary);
|
|
704
850
|
border: 1px solid var(--border);
|
|
705
|
-
border-radius:
|
|
851
|
+
border-radius: var(--radius-md);
|
|
706
852
|
color: var(--text-primary);
|
|
707
853
|
font-size: 12px;
|
|
708
854
|
font-weight: 500;
|
|
855
|
+
font-family: inherit;
|
|
709
856
|
cursor: pointer;
|
|
710
857
|
transition: all 0.25s ease;
|
|
711
|
-
backdrop-filter: blur(8px);
|
|
712
|
-
-webkit-backdrop-filter: blur(8px);
|
|
713
858
|
}
|
|
714
859
|
|
|
715
860
|
.action-btn:hover {
|
|
716
|
-
background: var(--
|
|
861
|
+
background: var(--bg-hover);
|
|
717
862
|
border-color: var(--border-strong);
|
|
718
|
-
box-shadow: 0 0 12px rgba(255,255,255,0.06);
|
|
719
863
|
}
|
|
720
864
|
|
|
721
865
|
.action-btn svg {
|
|
@@ -726,15 +870,13 @@ body {
|
|
|
726
870
|
/* ==================== Glass Panels ==================== */
|
|
727
871
|
|
|
728
872
|
.panel {
|
|
729
|
-
background: var(--
|
|
730
|
-
backdrop-filter: blur(16px) saturate(150%);
|
|
731
|
-
-webkit-backdrop-filter: blur(16px) saturate(150%);
|
|
873
|
+
background: var(--bg-tertiary);
|
|
732
874
|
border: 1px solid var(--border);
|
|
733
|
-
border-radius:
|
|
875
|
+
border-radius: var(--radius);
|
|
734
876
|
padding: 16px;
|
|
735
|
-
transition: border-color 0.3s
|
|
877
|
+
transition: border-color 0.3s;
|
|
736
878
|
position: relative;
|
|
737
|
-
overflow:
|
|
879
|
+
overflow: visible;
|
|
738
880
|
}
|
|
739
881
|
|
|
740
882
|
/* Subtle top highlight on glass panels */
|
|
@@ -772,7 +914,7 @@ body {
|
|
|
772
914
|
background: var(--accent-dim);
|
|
773
915
|
color: var(--accent);
|
|
774
916
|
padding: 2px 8px;
|
|
775
|
-
border-radius:
|
|
917
|
+
border-radius: var(--radius);
|
|
776
918
|
font-size: 11px;
|
|
777
919
|
font-weight: 600;
|
|
778
920
|
}
|
|
@@ -826,29 +968,217 @@ body {
|
|
|
826
968
|
}
|
|
827
969
|
|
|
828
970
|
.mono {
|
|
829
|
-
font-family: '
|
|
971
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
830
972
|
font-size: 11px;
|
|
831
973
|
}
|
|
832
974
|
|
|
833
|
-
.
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
975
|
+
.service-actions {
|
|
976
|
+
display: flex;
|
|
977
|
+
gap: 8px;
|
|
978
|
+
margin-top: 12px;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
.action-btn.small {
|
|
982
|
+
padding: 6px 10px;
|
|
983
|
+
font-size: 11px;
|
|
984
|
+
gap: 4px;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
.action-btn.small svg {
|
|
988
|
+
width: 10px;
|
|
989
|
+
height: 10px;
|
|
837
990
|
}
|
|
838
991
|
|
|
839
|
-
|
|
992
|
+
/* Element Inspector Panel */
|
|
993
|
+
.inspector-panel {
|
|
994
|
+
background: var(--bg-secondary);
|
|
995
|
+
border-color: var(--border-strong);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.inspector-actions {
|
|
999
|
+
display: flex;
|
|
1000
|
+
gap: 6px;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.inspector-btn {
|
|
1004
|
+
flex: 1;
|
|
1005
|
+
padding: 8px 6px;
|
|
1006
|
+
font-size: 11px;
|
|
1007
|
+
gap: 4px;
|
|
1008
|
+
justify-content: center;
|
|
1009
|
+
border-radius: var(--radius-sm);
|
|
1010
|
+
background: var(--glass-strong);
|
|
1011
|
+
border: 1px solid var(--border);
|
|
1012
|
+
color: var(--text-primary);
|
|
1013
|
+
cursor: pointer;
|
|
1014
|
+
display: flex;
|
|
1015
|
+
align-items: center;
|
|
1016
|
+
transition: all 0.2s;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
.inspector-btn:hover {
|
|
1020
|
+
background: var(--bg-hover);
|
|
1021
|
+
border-color: var(--border-strong);
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
.inspector-btn.active {
|
|
1025
|
+
background: rgba(255,255,255,0.12);
|
|
1026
|
+
border-color: var(--accent);
|
|
1027
|
+
box-shadow: 0 0 8px rgba(255,255,255,0.1);
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
.inspector-btn svg {
|
|
1031
|
+
width: 14px;
|
|
1032
|
+
height: 14px;
|
|
1033
|
+
flex-shrink: 0;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.inspector-result {
|
|
1037
|
+
margin-top: 8px;
|
|
1038
|
+
padding: 8px;
|
|
1039
|
+
background: var(--bg-primary);
|
|
1040
|
+
border: 1px solid var(--border);
|
|
1041
|
+
border-radius: var(--radius-sm);
|
|
1042
|
+
font-size: 11px;
|
|
1043
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
840
1044
|
color: var(--text-secondary);
|
|
1045
|
+
max-height: 200px;
|
|
1046
|
+
overflow-y: auto;
|
|
1047
|
+
scrollbar-width: thin;
|
|
1048
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
1049
|
+
white-space: pre-wrap;
|
|
1050
|
+
word-break: break-all;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
/* Element-syntax tinting — kept monochrome via opacity, not hue. */
|
|
1054
|
+
.inspector-result .element-tag {
|
|
1055
|
+
color: #fafafa;
|
|
1056
|
+
font-weight: 600;
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
.inspector-result .element-id {
|
|
1060
|
+
color: rgba(255,255,255,0.78);
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
.inspector-result .element-class {
|
|
1064
|
+
color: rgba(255,255,255,0.62);
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
.inspector-result .element-size {
|
|
1068
|
+
color: var(--text-tertiary);
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
.inspector-result .copy-line {
|
|
1072
|
+
display: block;
|
|
1073
|
+
cursor: pointer;
|
|
1074
|
+
padding: 1px 4px;
|
|
1075
|
+
border-radius: 3px;
|
|
1076
|
+
transition: background 0.15s;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
.inspector-result .copy-line:hover {
|
|
1080
|
+
background: rgba(255, 255, 255, 0.08);
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
.inspector-result .copy-line.copied {
|
|
1084
|
+
background: rgba(76, 175, 80, 0.15);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.inspector-result .info-label {
|
|
1088
|
+
color: var(--text-tertiary);
|
|
1089
|
+
user-select: none;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
.inspector-result img {
|
|
1093
|
+
max-width: 100%;
|
|
1094
|
+
border-radius: 4px;
|
|
1095
|
+
margin-top: 4px;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
/* Build Info */
|
|
1099
|
+
.build-info-panel .status-value.mono {
|
|
841
1100
|
font-size: 11px;
|
|
842
|
-
margin-bottom: 6px;
|
|
843
1101
|
}
|
|
844
1102
|
|
|
845
1103
|
.tool-list {
|
|
846
|
-
max-height:
|
|
1104
|
+
max-height: 200px;
|
|
847
1105
|
overflow-y: auto;
|
|
848
1106
|
font-size: 11px;
|
|
849
1107
|
line-height: 1.4;
|
|
850
1108
|
color: var(--text-tertiary);
|
|
851
|
-
font-family: '
|
|
1109
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
1110
|
+
white-space: pre-wrap;
|
|
1111
|
+
word-break: break-all;
|
|
1112
|
+
scrollbar-width: thin;
|
|
1113
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
.tool-category {
|
|
1117
|
+
padding: 4px 0;
|
|
1118
|
+
border-bottom: 1px solid var(--border);
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.tool-category:last-child {
|
|
1122
|
+
border-bottom: none;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
.tool-category-name {
|
|
1126
|
+
color: var(--text-secondary);
|
|
1127
|
+
font-weight: 600;
|
|
1128
|
+
font-family: inherit;
|
|
1129
|
+
font-size: 10px;
|
|
1130
|
+
text-transform: uppercase;
|
|
1131
|
+
letter-spacing: 0.3px;
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
.tool-category-tools {
|
|
1135
|
+
color: var(--text-tertiary);
|
|
1136
|
+
font-size: 10px;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
/* MCP Server List */
|
|
1140
|
+
.mcp-server-list {
|
|
1141
|
+
display: flex;
|
|
1142
|
+
flex-direction: column;
|
|
1143
|
+
gap: 6px;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
.mcp-server-item {
|
|
1147
|
+
display: flex;
|
|
1148
|
+
align-items: center;
|
|
1149
|
+
justify-content: space-between;
|
|
1150
|
+
padding: 8px 10px;
|
|
1151
|
+
background: var(--glass);
|
|
1152
|
+
border: 1px solid var(--border);
|
|
1153
|
+
border-radius: var(--radius-sm);
|
|
1154
|
+
font-size: 12px;
|
|
1155
|
+
transition: border-color 0.2s;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
.mcp-server-item:hover {
|
|
1159
|
+
border-color: var(--border-strong);
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
.mcp-server-info {
|
|
1163
|
+
display: flex;
|
|
1164
|
+
align-items: center;
|
|
1165
|
+
gap: 8px;
|
|
1166
|
+
min-width: 0;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.mcp-server-name {
|
|
1170
|
+
font-weight: 500;
|
|
1171
|
+
color: var(--text-primary);
|
|
1172
|
+
white-space: nowrap;
|
|
1173
|
+
overflow: hidden;
|
|
1174
|
+
text-overflow: ellipsis;
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
.mcp-server-tools {
|
|
1178
|
+
color: var(--text-tertiary);
|
|
1179
|
+
font-size: 11px;
|
|
1180
|
+
white-space: nowrap;
|
|
1181
|
+
flex-shrink: 0;
|
|
852
1182
|
}
|
|
853
1183
|
|
|
854
1184
|
/* ==================== User Profile ==================== */
|
|
@@ -894,7 +1224,7 @@ body {
|
|
|
894
1224
|
padding: 10px;
|
|
895
1225
|
background: var(--glass);
|
|
896
1226
|
border: 1px solid var(--border);
|
|
897
|
-
border-radius:
|
|
1227
|
+
border-radius: var(--radius-sm);
|
|
898
1228
|
transition: all 0.2s;
|
|
899
1229
|
}
|
|
900
1230
|
|
|
@@ -907,7 +1237,7 @@ body {
|
|
|
907
1237
|
width: 32px;
|
|
908
1238
|
height: 32px;
|
|
909
1239
|
background: var(--accent-dim);
|
|
910
|
-
border-radius:
|
|
1240
|
+
border-radius: var(--radius-sm);
|
|
911
1241
|
display: flex;
|
|
912
1242
|
align-items: center;
|
|
913
1243
|
justify-content: center;
|
|
@@ -922,10 +1252,12 @@ body {
|
|
|
922
1252
|
/* ==================== Tab Filesystem ==================== */
|
|
923
1253
|
|
|
924
1254
|
.tab-filesystem {
|
|
925
|
-
max-height:
|
|
1255
|
+
max-height: 240px;
|
|
926
1256
|
overflow-y: auto;
|
|
927
|
-
font-family: '
|
|
1257
|
+
font-family: 'Geist Mono', 'Monaco', 'Consolas', monospace;
|
|
928
1258
|
font-size: 12px;
|
|
1259
|
+
scrollbar-width: thin;
|
|
1260
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
929
1261
|
}
|
|
930
1262
|
|
|
931
1263
|
.tab-item {
|
|
@@ -951,12 +1283,15 @@ body {
|
|
|
951
1283
|
display: flex;
|
|
952
1284
|
align-items: center;
|
|
953
1285
|
justify-content: space-between;
|
|
1286
|
+
gap: 8px;
|
|
954
1287
|
padding: 8px 0;
|
|
955
1288
|
}
|
|
956
1289
|
|
|
957
|
-
.setting-item span {
|
|
1290
|
+
.setting-item > span {
|
|
958
1291
|
font-size: 12px;
|
|
959
1292
|
color: var(--text-secondary);
|
|
1293
|
+
white-space: nowrap;
|
|
1294
|
+
flex-shrink: 0;
|
|
960
1295
|
}
|
|
961
1296
|
|
|
962
1297
|
.setting-item input[type="text"],
|
|
@@ -964,14 +1299,26 @@ body {
|
|
|
964
1299
|
.setting-item select {
|
|
965
1300
|
width: 140px;
|
|
966
1301
|
padding: 6px 10px;
|
|
967
|
-
background: var(--
|
|
1302
|
+
background: var(--bg-tertiary);
|
|
968
1303
|
border: 1px solid var(--border);
|
|
969
|
-
border-radius:
|
|
1304
|
+
border-radius: var(--radius-sm);
|
|
970
1305
|
color: var(--text-primary);
|
|
971
1306
|
font-size: 12px;
|
|
1307
|
+
font-family: inherit;
|
|
972
1308
|
transition: border-color 0.2s;
|
|
973
1309
|
}
|
|
974
1310
|
|
|
1311
|
+
.setting-item select {
|
|
1312
|
+
-webkit-appearance: none;
|
|
1313
|
+
-moz-appearance: none;
|
|
1314
|
+
appearance: none;
|
|
1315
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 5l3 3 3-3' stroke='%23A0A0A0' stroke-width='1.5'/%3E%3C/svg%3E");
|
|
1316
|
+
background-repeat: no-repeat;
|
|
1317
|
+
background-position: right 8px center;
|
|
1318
|
+
padding-right: 28px;
|
|
1319
|
+
cursor: pointer;
|
|
1320
|
+
}
|
|
1321
|
+
|
|
975
1322
|
.setting-item input:focus,
|
|
976
1323
|
.setting-item select:focus {
|
|
977
1324
|
border-color: var(--border-strong);
|
|
@@ -992,14 +1339,21 @@ body {
|
|
|
992
1339
|
.setting-item input[type="number"] {
|
|
993
1340
|
width: 70px;
|
|
994
1341
|
padding: 6px 10px;
|
|
995
|
-
background: var(--
|
|
1342
|
+
background: var(--bg-tertiary);
|
|
996
1343
|
border: 1px solid var(--border);
|
|
997
|
-
border-radius:
|
|
1344
|
+
border-radius: var(--radius-sm);
|
|
998
1345
|
color: var(--text-primary);
|
|
999
1346
|
font-size: 12px;
|
|
1347
|
+
font-family: inherit;
|
|
1348
|
+
-moz-appearance: textfield;
|
|
1000
1349
|
transition: border-color 0.2s;
|
|
1001
1350
|
}
|
|
1002
1351
|
|
|
1352
|
+
.setting-item input[type="number"]::-webkit-inner-spin-button,
|
|
1353
|
+
.setting-item input[type="number"]::-webkit-outer-spin-button {
|
|
1354
|
+
opacity: 0.5;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1003
1357
|
.setting-item input[type="number"]:focus {
|
|
1004
1358
|
border-color: var(--border-strong);
|
|
1005
1359
|
outline: none;
|
|
@@ -1008,10 +1362,22 @@ body {
|
|
|
1008
1362
|
.setting-item input[type="checkbox"] {
|
|
1009
1363
|
width: 16px;
|
|
1010
1364
|
height: 16px;
|
|
1365
|
+
min-width: 16px;
|
|
1011
1366
|
cursor: pointer;
|
|
1012
1367
|
accent-color: var(--accent);
|
|
1368
|
+
flex-shrink: 0;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
/* Firefox: style option elements in dropdowns */
|
|
1372
|
+
select option {
|
|
1373
|
+
background: var(--bg-tertiary);
|
|
1374
|
+
color: var(--text-primary);
|
|
1375
|
+
padding: 4px 8px;
|
|
1013
1376
|
}
|
|
1014
1377
|
|
|
1378
|
+
/* Color scheme hint for native widgets */
|
|
1379
|
+
:root { color-scheme: dark; }
|
|
1380
|
+
|
|
1015
1381
|
.settings-links {
|
|
1016
1382
|
display: flex;
|
|
1017
1383
|
justify-content: center;
|
|
@@ -1058,7 +1424,7 @@ body {
|
|
|
1058
1424
|
backdrop-filter: blur(20px);
|
|
1059
1425
|
-webkit-backdrop-filter: blur(20px);
|
|
1060
1426
|
border: 1px solid var(--border);
|
|
1061
|
-
border-radius:
|
|
1427
|
+
border-radius: var(--radius-md);
|
|
1062
1428
|
color: var(--text-primary);
|
|
1063
1429
|
font-size: 12px;
|
|
1064
1430
|
text-align: center;
|
|
@@ -1073,6 +1439,13 @@ body {
|
|
|
1073
1439
|
|
|
1074
1440
|
/* ==================== Scrollbar ==================== */
|
|
1075
1441
|
|
|
1442
|
+
/* Firefox */
|
|
1443
|
+
* {
|
|
1444
|
+
scrollbar-width: thin;
|
|
1445
|
+
scrollbar-color: rgba(255,255,255,0.08) transparent;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
/* Chrome / Safari */
|
|
1076
1449
|
::-webkit-scrollbar { width: 5px; height: 5px; }
|
|
1077
1450
|
::-webkit-scrollbar-track { background: transparent; }
|
|
1078
1451
|
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 3px; }
|
|
@@ -1082,6 +1455,43 @@ body {
|
|
|
1082
1455
|
|
|
1083
1456
|
.loading { animation: pulse 1.5s infinite; }
|
|
1084
1457
|
|
|
1458
|
+
/* ==================== Footer ==================== */
|
|
1459
|
+
|
|
1460
|
+
.sidebar-footer {
|
|
1461
|
+
display: flex;
|
|
1462
|
+
align-items: center;
|
|
1463
|
+
justify-content: center;
|
|
1464
|
+
padding: 8px 16px;
|
|
1465
|
+
border-top: 1px solid var(--border);
|
|
1466
|
+
background: rgba(0,0,0,0.4);
|
|
1467
|
+
flex-shrink: 0;
|
|
1468
|
+
position: relative;
|
|
1469
|
+
z-index: 10;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
.footer-brand {
|
|
1473
|
+
display: flex;
|
|
1474
|
+
align-items: center;
|
|
1475
|
+
gap: 6px;
|
|
1476
|
+
color: var(--text-tertiary);
|
|
1477
|
+
text-decoration: none;
|
|
1478
|
+
font-size: 11px;
|
|
1479
|
+
transition: color 0.2s;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
.footer-brand:hover {
|
|
1483
|
+
color: var(--text-secondary);
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
.footer-brand svg {
|
|
1487
|
+
opacity: 0.5;
|
|
1488
|
+
transition: opacity 0.2s;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
.footer-brand:hover svg {
|
|
1492
|
+
opacity: 0.8;
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1085
1495
|
/* ==================== Agent Launcher Modal ==================== */
|
|
1086
1496
|
|
|
1087
1497
|
.modal-overlay {
|
|
@@ -1103,7 +1513,7 @@ body {
|
|
|
1103
1513
|
.modal-content {
|
|
1104
1514
|
background: var(--bg-secondary);
|
|
1105
1515
|
border: 1px solid var(--border-strong);
|
|
1106
|
-
border-radius:
|
|
1516
|
+
border-radius: var(--radius);
|
|
1107
1517
|
width: calc(100% - 32px);
|
|
1108
1518
|
max-width: 320px;
|
|
1109
1519
|
overflow: hidden;
|
|
@@ -1147,14 +1557,19 @@ body {
|
|
|
1147
1557
|
|
|
1148
1558
|
.modal-body textarea {
|
|
1149
1559
|
width: 100%;
|
|
1150
|
-
background: var(--
|
|
1560
|
+
background: var(--bg-tertiary);
|
|
1151
1561
|
border: 1px solid var(--border);
|
|
1152
|
-
border-radius:
|
|
1562
|
+
border-radius: var(--radius-sm);
|
|
1153
1563
|
color: var(--text-primary);
|
|
1154
1564
|
padding: 8px;
|
|
1155
1565
|
font-family: inherit;
|
|
1156
1566
|
font-size: 12px;
|
|
1157
1567
|
resize: vertical;
|
|
1568
|
+
outline: none;
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
.modal-body textarea:focus {
|
|
1572
|
+
border-color: var(--border-strong);
|
|
1158
1573
|
}
|
|
1159
1574
|
|
|
1160
1575
|
.modal-footer {
|
|
@@ -1174,3 +1589,204 @@ body {
|
|
|
1174
1589
|
padding: 6px 16px;
|
|
1175
1590
|
font-size: 12px;
|
|
1176
1591
|
}
|
|
1592
|
+
|
|
1593
|
+
/* ================================================================
|
|
1594
|
+
Usage & Billing
|
|
1595
|
+
================================================================ */
|
|
1596
|
+
|
|
1597
|
+
.balance-card {
|
|
1598
|
+
background: var(--glass-strong);
|
|
1599
|
+
border: 1px solid var(--border);
|
|
1600
|
+
border-radius: var(--radius);
|
|
1601
|
+
padding: 10px 12px;
|
|
1602
|
+
margin-bottom: 10px;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
.balance-row {
|
|
1606
|
+
display: flex;
|
|
1607
|
+
justify-content: space-between;
|
|
1608
|
+
align-items: center;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.balance-label {
|
|
1612
|
+
font-size: 10px;
|
|
1613
|
+
font-weight: 600;
|
|
1614
|
+
text-transform: uppercase;
|
|
1615
|
+
letter-spacing: 0.12em;
|
|
1616
|
+
color: var(--text-secondary);
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
.balance-amount {
|
|
1620
|
+
font-size: 20px;
|
|
1621
|
+
font-weight: 700;
|
|
1622
|
+
color: var(--text-primary);
|
|
1623
|
+
font-variant-numeric: tabular-nums;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
.balance-tier {
|
|
1627
|
+
margin-top: 4px;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
.tier-badge {
|
|
1631
|
+
display: inline-flex;
|
|
1632
|
+
align-items: center;
|
|
1633
|
+
padding: 2px 8px;
|
|
1634
|
+
border-radius: 999px;
|
|
1635
|
+
font-size: 10px;
|
|
1636
|
+
font-weight: 700;
|
|
1637
|
+
text-transform: uppercase;
|
|
1638
|
+
letter-spacing: 0.08em;
|
|
1639
|
+
background: rgba(255,255,255,0.06);
|
|
1640
|
+
color: var(--text-secondary);
|
|
1641
|
+
border: 1px solid var(--border);
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
.badge-link {
|
|
1645
|
+
text-decoration: none;
|
|
1646
|
+
cursor: pointer;
|
|
1647
|
+
transition: background 0.15s;
|
|
1648
|
+
}
|
|
1649
|
+
.badge-link:hover {
|
|
1650
|
+
background: var(--glass-strong);
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
/* Usage bar system */
|
|
1654
|
+
.usage-meters {
|
|
1655
|
+
display: flex;
|
|
1656
|
+
flex-direction: column;
|
|
1657
|
+
gap: 8px;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
.usage-meter-header {
|
|
1661
|
+
display: flex;
|
|
1662
|
+
justify-content: space-between;
|
|
1663
|
+
align-items: center;
|
|
1664
|
+
font-size: 11px;
|
|
1665
|
+
color: var(--text-secondary);
|
|
1666
|
+
margin-bottom: 3px;
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
.usage-meter-header .mono {
|
|
1670
|
+
font-family: 'Geist Mono', monospace;
|
|
1671
|
+
font-size: 11px;
|
|
1672
|
+
color: var(--text-primary);
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
.usage-bar-track {
|
|
1676
|
+
width: 100%;
|
|
1677
|
+
height: 6px;
|
|
1678
|
+
border-radius: 3px;
|
|
1679
|
+
background: rgba(255,255,255,0.06);
|
|
1680
|
+
overflow: hidden;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
.usage-bar-fill {
|
|
1684
|
+
height: 100%;
|
|
1685
|
+
border-radius: 3px;
|
|
1686
|
+
transition: width 0.5s ease-out;
|
|
1687
|
+
min-width: 0;
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
/* Usage bars: monochrome scale (brightest → dimmest) per @hanzo/brand.
|
|
1691
|
+
Class names kept for compatibility with existing markup. */
|
|
1692
|
+
.bar-blue { background: rgba(255,255,255,0.95); }
|
|
1693
|
+
.bar-violet { background: rgba(255,255,255,0.75); }
|
|
1694
|
+
.bar-emerald { background: rgba(255,255,255,0.55); }
|
|
1695
|
+
.bar-amber { background: rgba(255,255,255,0.40); }
|
|
1696
|
+
.bar-red { background: rgba(255,255,255,0.25); }
|
|
1697
|
+
|
|
1698
|
+
.usage-bar-group {
|
|
1699
|
+
margin-top: 8px;
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1702
|
+
.usage-bar-labels {
|
|
1703
|
+
display: flex;
|
|
1704
|
+
justify-content: space-between;
|
|
1705
|
+
font-size: 10px;
|
|
1706
|
+
color: var(--text-tertiary);
|
|
1707
|
+
margin-top: 2px;
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
.usage-meta {
|
|
1711
|
+
display: flex;
|
|
1712
|
+
gap: 6px;
|
|
1713
|
+
align-items: center;
|
|
1714
|
+
font-size: 10px;
|
|
1715
|
+
color: var(--text-tertiary);
|
|
1716
|
+
margin-top: 8px;
|
|
1717
|
+
padding-top: 6px;
|
|
1718
|
+
border-top: 1px solid var(--border);
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
/* Model Hub */
|
|
1722
|
+
.model-hub-list {
|
|
1723
|
+
max-height: 200px;
|
|
1724
|
+
overflow-y: auto;
|
|
1725
|
+
margin-bottom: 8px;
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
.model-hub-item {
|
|
1729
|
+
display: flex;
|
|
1730
|
+
justify-content: space-between;
|
|
1731
|
+
align-items: center;
|
|
1732
|
+
padding: 6px 8px;
|
|
1733
|
+
border-radius: var(--radius-sm);
|
|
1734
|
+
cursor: pointer;
|
|
1735
|
+
transition: background 0.15s;
|
|
1736
|
+
gap: 8px;
|
|
1737
|
+
}
|
|
1738
|
+
.model-hub-item:hover {
|
|
1739
|
+
background: var(--glass-strong);
|
|
1740
|
+
}
|
|
1741
|
+
|
|
1742
|
+
.model-hub-item-info {
|
|
1743
|
+
flex: 1;
|
|
1744
|
+
min-width: 0;
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
.model-hub-item-name {
|
|
1748
|
+
font-size: 12px;
|
|
1749
|
+
font-weight: 500;
|
|
1750
|
+
color: var(--text-primary);
|
|
1751
|
+
white-space: nowrap;
|
|
1752
|
+
overflow: hidden;
|
|
1753
|
+
text-overflow: ellipsis;
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
.model-hub-item-meta {
|
|
1757
|
+
font-size: 10px;
|
|
1758
|
+
color: var(--text-tertiary);
|
|
1759
|
+
display: flex;
|
|
1760
|
+
gap: 6px;
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
.model-hub-item-badge {
|
|
1764
|
+
font-size: 9px;
|
|
1765
|
+
padding: 1px 5px;
|
|
1766
|
+
border-radius: 4px;
|
|
1767
|
+
font-weight: 600;
|
|
1768
|
+
text-transform: uppercase;
|
|
1769
|
+
letter-spacing: 0.05em;
|
|
1770
|
+
white-space: nowrap;
|
|
1771
|
+
}
|
|
1772
|
+
.badge-cloud { background: rgba(255,255,255,0.10); color: rgba(255,255,255,0.92); }
|
|
1773
|
+
.badge-local { background: rgba(255,255,255,0.06); color: rgba(255,255,255,0.78); }
|
|
1774
|
+
.badge-hub { background: rgba(255,255,255,0.04); color: rgba(255,255,255,0.65); }
|
|
1775
|
+
|
|
1776
|
+
.model-hub-actions {
|
|
1777
|
+
display: flex;
|
|
1778
|
+
gap: 6px;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
.model-search {
|
|
1782
|
+
flex: 1;
|
|
1783
|
+
background: var(--bg-tertiary);
|
|
1784
|
+
border: 1px solid var(--border);
|
|
1785
|
+
border-radius: var(--radius-sm);
|
|
1786
|
+
padding: 5px 8px;
|
|
1787
|
+
font-size: 11px;
|
|
1788
|
+
color: var(--text-primary);
|
|
1789
|
+
outline: none;
|
|
1790
|
+
}
|
|
1791
|
+
.model-search::placeholder { color: var(--text-tertiary); }
|
|
1792
|
+
.model-search:focus { border-color: var(--border-strong); }
|