clay-server 4.0.0-beta.8 → 4.0.0
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/lib/capsule-display-floor.js +51 -0
- package/lib/capsule-frame-server.js +255 -0
- package/lib/capsule-mate-turn.js +105 -0
- package/lib/capsule-pig-logic.js +300 -0
- package/lib/capsule-server-runtimes.js +39 -0
- package/lib/capsules/pig/display.js +198 -0
- package/lib/capsules/pig/manifest.json +9 -0
- package/lib/capsules/pig/ui.json +84 -0
- package/lib/config.js +25 -1
- package/lib/daemon-projects.js +13 -8
- package/lib/daemon.js +127 -14
- package/lib/git-cli.js +95 -1
- package/lib/knowledge-import.js +436 -0
- package/lib/knowledge-record-store.js +188 -0
- package/lib/knowledge-search.js +240 -0
- package/lib/mate-knowledge-mcp-server.js +151 -0
- package/lib/mate-knowledge-migration.js +283 -0
- package/lib/mate-knowledge-service.js +488 -0
- package/lib/mate-knowledge-sync.js +482 -0
- package/lib/migrate-single-user.js +2 -0
- package/lib/notes-lifecycle.js +149 -0
- package/lib/notes.js +60 -3
- package/lib/os-users.js +3 -1
- package/lib/project-capsule-catalog.js +9 -1
- package/lib/project-capsule-turn.js +96 -0
- package/lib/project-connection.js +15 -1
- package/lib/project-file-history.js +223 -0
- package/lib/project-file-watch.js +77 -49
- package/lib/project-filesystem.js +31 -220
- package/lib/project-http.js +15 -1
- package/lib/project-knowledge.js +22 -0
- package/lib/project-log-context.js +172 -0
- package/lib/project-log-feedback-delivery.js +118 -0
- package/lib/project-logs-comments.js +137 -0
- package/lib/project-logs-context-state.js +42 -0
- package/lib/project-logs-mcp-server.js +328 -0
- package/lib/project-logs-query.js +185 -0
- package/lib/project-logs-root.js +75 -0
- package/lib/project-logs-schema.js +259 -0
- package/lib/project-logs-service.js +463 -0
- package/lib/project-logs-snapshot.js +205 -0
- package/lib/project-logs-store.js +495 -0
- package/lib/project-logs-versioning.js +132 -0
- package/lib/project-logs.js +400 -0
- package/lib/project-mate-interaction.js +14 -0
- package/lib/project-mate-knowledge.js +110 -0
- package/lib/project-memory.js +22 -0
- package/lib/project-message-delivery.js +70 -0
- package/lib/project-pair-lifecycle.js +460 -0
- package/lib/project-request-access.js +66 -0
- package/lib/project-session-handoff.js +1 -1
- package/lib/project-session-notes.js +64 -13
- package/lib/project-session-pair.js +159 -146
- package/lib/project-session-spawn.js +1 -1
- package/lib/project-sessions.js +58 -13
- package/lib/project-user-message.js +53 -4
- package/lib/project-worker-permission.js +430 -0
- package/lib/project-worker-proposal.js +208 -62
- package/lib/project.js +185 -6
- package/lib/public/app.js +63 -35
- package/lib/public/css/admin.css +2 -2
- package/lib/public/css/capsule-ui.css +38 -0
- package/lib/public/css/command-palette.css +19 -9
- package/lib/public/css/git-placard.css +154 -0
- package/lib/public/css/home-hub.css +4 -0
- package/lib/public/css/home-session-actions.css +66 -0
- package/lib/public/css/home-sidebar.css +66 -0
- package/lib/public/css/input.css +84 -3
- package/lib/public/css/messages.css +40 -1
- package/lib/public/css/mobile-nav.css +80 -0
- package/lib/public/css/notifications-center.css +67 -0
- package/lib/public/css/pane.css +97 -10
- package/lib/public/css/project-logs.css +198 -0
- package/lib/public/css/scheduler.css +1 -1
- package/lib/public/css/session-actions.css +16 -101
- package/lib/public/css/sidebar.css +103 -0
- package/lib/public/css/sticky-notes.css +237 -229
- package/lib/public/css/worker-proposal.css +36 -3
- package/lib/public/index.html +43 -11
- package/lib/public/modules/admin.js +8 -8
- package/lib/public/modules/app-connection.js +124 -6
- package/lib/public/modules/app-home-hub.js +12 -8
- package/lib/public/modules/app-message-cards.js +2 -1
- package/lib/public/modules/app-messages.js +92 -11
- package/lib/public/modules/app-misc.js +2 -14
- package/lib/public/modules/app-notifications.js +11 -7
- package/lib/public/modules/app-panels.js +3 -2
- package/lib/public/modules/app-projects.js +56 -18
- package/lib/public/modules/app-rendering.js +1 -0
- package/lib/public/modules/capsule-preference.js +44 -0
- package/lib/public/modules/chat-bubble-renderer.js +1 -1
- package/lib/public/modules/clay-log-links.js +70 -0
- package/lib/public/modules/command-palette.js +52 -15
- package/lib/public/modules/context-sources.js +0 -3
- package/lib/public/modules/git-agent-sessions.js +85 -0
- package/lib/public/modules/git-panel.js +111 -84
- package/lib/public/modules/git-placard.js +161 -0
- package/lib/public/modules/home-chat-empty-state.js +39 -0
- package/lib/public/modules/home-chat-identity.js +9 -0
- package/lib/public/modules/home-conversations-sheet.js +102 -48
- package/lib/public/modules/home-mate-chat.js +15 -35
- package/lib/public/modules/home-session-actions.js +6 -0
- package/lib/public/modules/home-sidebar-chat-list.js +101 -41
- package/lib/public/modules/home-sidebar.js +7 -0
- package/lib/public/modules/home-surface-boot.js +7 -3
- package/lib/public/modules/home-tool-frame.js +182 -0
- package/lib/public/modules/home-tools.js +138 -1
- package/lib/public/modules/input.js +38 -7
- package/lib/public/modules/markdown.js +2 -0
- package/lib/public/modules/mate-sidebar.js +0 -8
- package/lib/public/modules/message-delivery.js +97 -0
- package/lib/public/modules/paste-modal.js +84 -0
- package/lib/public/modules/project-activation.js +45 -0
- package/lib/public/modules/project-logs-render.js +405 -0
- package/lib/public/modules/project-logs.js +461 -0
- package/lib/public/modules/project-removal-target.js +26 -0
- package/lib/public/modules/scheduler.js +17 -3
- package/lib/public/modules/session-actions.js +29 -105
- package/lib/public/modules/session-hierarchy.js +54 -0
- package/lib/public/modules/sidebar-mobile.js +40 -15
- package/lib/public/modules/sidebar-session-hierarchy.js +214 -0
- package/lib/public/modules/sidebar-sessions.js +77 -11
- package/lib/public/modules/sidebar.js +17 -5
- package/lib/public/modules/split-group-helpers.js +8 -0
- package/lib/public/modules/split-pair-ui.js +15 -4
- package/lib/public/modules/split-view.js +5 -2
- package/lib/public/modules/split-worker-runtime.js +24 -0
- package/lib/public/modules/sticky-note-markdown.js +5 -0
- package/lib/public/modules/sticky-notes-browser.js +326 -0
- package/lib/public/modules/sticky-notes-card.js +360 -0
- package/lib/public/modules/sticky-notes-editor.js +291 -0
- package/lib/public/modules/sticky-notes-shared.js +90 -0
- package/lib/public/modules/sticky-notes.js +170 -946
- package/lib/public/modules/thinking-lifecycle.js +175 -0
- package/lib/public/modules/thinking-summary.js +28 -0
- package/lib/public/modules/thinking-view.js +75 -0
- package/lib/public/modules/tool-palette-order.js +143 -0
- package/lib/public/modules/tool-palette-overlays.js +159 -0
- package/lib/public/modules/tool-palette.js +21 -188
- package/lib/public/modules/tools.js +31 -123
- package/lib/public/modules/update-snooze.js +169 -0
- package/lib/public/modules/user-settings.js +4 -0
- package/lib/public/modules/worker-pane-lock.js +176 -0
- package/lib/public/modules/worker-proposal-state.js +16 -0
- package/lib/public/modules/worker-proposal.js +49 -20
- package/lib/public/style.css +3 -1
- package/lib/sdk-bridge.js +135 -46
- package/lib/sdk-message-processor.js +36 -19
- package/lib/server-experimental-settings.js +49 -0
- package/lib/server-global-ws.js +11 -0
- package/lib/server-home-chat-events.js +31 -1
- package/lib/server-home-chat.js +27 -4
- package/lib/server-home-clay-entry.js +1 -1
- package/lib/server-home-clay-session-links.js +34 -5
- package/lib/server-settings.js +5 -0
- package/lib/server-tools.js +127 -9
- package/lib/server.js +137 -22
- package/lib/session-driver-eligibility.js +38 -0
- package/lib/session-driver-orchestration.js +31 -0
- package/lib/session-hygiene.js +3 -0
- package/lib/session-notes-mcp-server.js +25 -5
- package/lib/session-pair-factory.js +247 -0
- package/lib/session-pair-mcp-server.js +46 -8
- package/lib/session-pair-prompts.js +79 -0
- package/lib/session-pair-turn-control.js +153 -0
- package/lib/session-provenance.js +119 -0
- package/lib/session-spawn-mcp-server.js +1 -1
- package/lib/session-split-groups.js +4 -1
- package/lib/session-title-policy.js +60 -0
- package/lib/session-visibility.js +41 -0
- package/lib/sessions.js +57 -10
- package/lib/tools-registry.js +89 -10
- package/lib/update-snooze.js +437 -0
- package/lib/users-experimental-preferences.js +30 -0
- package/lib/users-permissions.js +6 -6
- package/lib/users.js +22 -16
- package/lib/workspace-query-access.js +102 -0
- package/lib/workspace-query-service.js +24 -17
- package/lib/worktree.js +25 -38
- package/lib/ws-schema.js +38 -7
- package/lib/yoke/adapters/claude-worker.js +16 -6
- package/lib/yoke/adapters/claude.js +12 -0
- package/lib/yoke/adapters/codex.js +24 -14
- package/lib/yoke/vendor-registry.js +1 -1
- package/package.json +2 -2
|
@@ -384,6 +384,44 @@ textarea.tool-input { min-height: 92px; resize: vertical; }
|
|
|
384
384
|
.tool-pagination { flex-wrap: wrap; justify-content: flex-start; }
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
+
/* Capsule engagement note in the Mate transcript: a quiet system line, not a
|
|
388
|
+
speech bubble, because no one typed it. */
|
|
389
|
+
.home-capsule-turn-note {
|
|
390
|
+
align-self: center;
|
|
391
|
+
margin: 6px auto;
|
|
392
|
+
padding: 3px 12px;
|
|
393
|
+
border-radius: 999px;
|
|
394
|
+
background: color-mix(in srgb, var(--text-muted) 10%, transparent);
|
|
395
|
+
color: var(--text-muted);
|
|
396
|
+
font-size: 11.5px;
|
|
397
|
+
text-align: center;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/* Rich Display frame: the additive sandboxed element above the floor. */
|
|
401
|
+
/* There is no global .hidden utility, so the capsule surfaces scope their own:
|
|
402
|
+
the frame stays invisible until its bridge reports ready, the floor hides
|
|
403
|
+
behind the toggle, and a cleared error leaves the screen. */
|
|
404
|
+
.home-tool-frame-wrap.hidden,
|
|
405
|
+
.home-tool-frame-toggle.hidden,
|
|
406
|
+
.home-tool-display.hidden,
|
|
407
|
+
.home-tool-error.hidden { display: none; }
|
|
408
|
+
.home-tool-frame-wrap { width: 100%; }
|
|
409
|
+
.home-tool-frame { display: block; width: 100%; min-height: 0; border: 0; border-radius: 10px; background: var(--bg); }
|
|
410
|
+
.home-tool-frame-toggle {
|
|
411
|
+
display: block; margin: 6px 0 0 auto; padding: 3px 10px;
|
|
412
|
+
border: 1px solid var(--border-subtle); border-radius: 999px;
|
|
413
|
+
background: transparent; color: var(--text-muted); font-size: 11px; cursor: pointer;
|
|
414
|
+
}
|
|
415
|
+
.home-tool-frame-toggle:hover { color: var(--text); border-color: var(--accent); }
|
|
416
|
+
|
|
417
|
+
/* Host-side attribution flash when the other seat's act changes state. */
|
|
418
|
+
@keyframes capsule-remote-act-flash {
|
|
419
|
+
0% { box-shadow: 0 0 0 2px var(--accent); }
|
|
420
|
+
100% { box-shadow: 0 0 0 2px transparent; }
|
|
421
|
+
}
|
|
422
|
+
.capsule-remote-act { animation: capsule-remote-act-flash 0.8s ease-out; }
|
|
423
|
+
|
|
387
424
|
@media (prefers-reduced-motion: reduce) {
|
|
388
425
|
.tool-button, .tool-input, .tool-select { transition: none; }
|
|
426
|
+
.capsule-remote-act { animation: none; }
|
|
389
427
|
}
|
|
@@ -486,7 +486,8 @@ body.mate-dm-active .search-clay-transcript .search-clay-message-user .bubble,
|
|
|
486
486
|
.search-clay-activity-item small { color: var(--text-dimmer); font-size: 10px; line-height: 1.35; }
|
|
487
487
|
@keyframes searchClaySpin { to { transform: rotate(360deg); } }
|
|
488
488
|
|
|
489
|
-
.clayos-session-link
|
|
489
|
+
.clayos-session-link,
|
|
490
|
+
.clayos-log-link {
|
|
490
491
|
display: inline-flex;
|
|
491
492
|
align-items: center;
|
|
492
493
|
gap: 6px;
|
|
@@ -503,7 +504,8 @@ body.mate-dm-active .search-clay-transcript .search-clay-message-user .bubble,
|
|
|
503
504
|
vertical-align: middle;
|
|
504
505
|
cursor: pointer;
|
|
505
506
|
}
|
|
506
|
-
.clayos-session-link::before
|
|
507
|
+
.clayos-session-link::before,
|
|
508
|
+
.clayos-log-link::before {
|
|
507
509
|
content: "\2197";
|
|
508
510
|
display: grid;
|
|
509
511
|
place-items: center;
|
|
@@ -514,13 +516,21 @@ body.mate-dm-active .search-clay-transcript .search-clay-message-user .bubble,
|
|
|
514
516
|
color: var(--accent);
|
|
515
517
|
font-size: 12px;
|
|
516
518
|
}
|
|
517
|
-
.clayos-
|
|
518
|
-
.clayos-session-link >
|
|
519
|
-
.clayos-
|
|
520
|
-
.clayos-session-link
|
|
521
|
-
.clayos-
|
|
522
|
-
.clayos-session-link
|
|
523
|
-
.clayos-
|
|
519
|
+
.clayos-log-link::before { content: "\2261"; }
|
|
520
|
+
.clayos-session-link > span,
|
|
521
|
+
.clayos-log-link > span { font-weight: 620; }
|
|
522
|
+
.clayos-session-link > small,
|
|
523
|
+
.clayos-log-link > small { color: var(--text-muted); font-size: 10px; }
|
|
524
|
+
.clayos-session-link:hover,
|
|
525
|
+
.clayos-log-link:hover { border-color: color-mix(in srgb, var(--accent) 52%, var(--border)); background: color-mix(in srgb, var(--accent) 11%, var(--bg-alt)); }
|
|
526
|
+
.clayos-session-link:focus-visible,
|
|
527
|
+
.clayos-log-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
528
|
+
.clayos-session-link.is-loading,
|
|
529
|
+
.clayos-log-link.is-loading { opacity: 0.62; cursor: progress; }
|
|
530
|
+
.clayos-session-link.is-loading::before,
|
|
531
|
+
.clayos-log-link.is-loading::before { animation: searchClaySpin 1.2s linear infinite; }
|
|
532
|
+
.clayos-session-link.is-error,
|
|
533
|
+
.clayos-log-link.is-error { border-color: color-mix(in srgb, var(--warning) 48%, var(--border)); }
|
|
524
534
|
|
|
525
535
|
.search-clay-pending {
|
|
526
536
|
align-self: flex-start;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/* Repository placard — the always-visible Git block directly under the tool
|
|
2
|
+
strip. Refined utilitarian: it borrows the panel's own surface tokens and
|
|
3
|
+
type scale so it reads as part of the sidebar chrome, and stays visually
|
|
4
|
+
subordinate to the tool tiles above it while remaining legible at a glance.
|
|
5
|
+
No new palette, no card shadow, no dashboard framing. */
|
|
6
|
+
|
|
7
|
+
.git-placard {
|
|
8
|
+
display: grid;
|
|
9
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
10
|
+
align-items: center;
|
|
11
|
+
gap: 6px;
|
|
12
|
+
margin: 2px 8px 0;
|
|
13
|
+
padding: 7px 7px 7px 8px;
|
|
14
|
+
border: 1px solid var(--border-subtle);
|
|
15
|
+
border-radius: 8px;
|
|
16
|
+
background: var(--bg-alt);
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
font-family: "Pretendard", "Twemoji", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.git-placard.hidden { display: none; }
|
|
22
|
+
.git-placard:hover { border-color: var(--border); }
|
|
23
|
+
|
|
24
|
+
.git-placard-body { min-width: 0; }
|
|
25
|
+
|
|
26
|
+
.git-placard-identity {
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 6px;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.git-placard-glyph {
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
flex-shrink: 0;
|
|
38
|
+
color: var(--accent);
|
|
39
|
+
}
|
|
40
|
+
.git-placard-glyph svg { width: 13px; height: 13px; }
|
|
41
|
+
|
|
42
|
+
.git-placard-names { display: block; min-width: 0; }
|
|
43
|
+
|
|
44
|
+
.git-placard-repo {
|
|
45
|
+
display: block;
|
|
46
|
+
color: var(--text);
|
|
47
|
+
font-size: 11px;
|
|
48
|
+
font-weight: 700;
|
|
49
|
+
line-height: 1.3;
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
text-overflow: ellipsis;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.git-placard-branch {
|
|
56
|
+
display: block;
|
|
57
|
+
color: var(--text-muted);
|
|
58
|
+
font-size: 10px;
|
|
59
|
+
font-weight: 500;
|
|
60
|
+
line-height: 1.35;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
text-overflow: ellipsis;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.git-placard-meta {
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 4px;
|
|
70
|
+
flex-wrap: wrap;
|
|
71
|
+
margin: 5px 0 0 19px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.git-placard-badge {
|
|
75
|
+
padding: 1px 5px;
|
|
76
|
+
border: 1px solid var(--border-subtle);
|
|
77
|
+
border-radius: 999px;
|
|
78
|
+
background: var(--bg);
|
|
79
|
+
color: var(--text-dimmer);
|
|
80
|
+
font-size: 9px;
|
|
81
|
+
font-weight: 700;
|
|
82
|
+
letter-spacing: 0.02em;
|
|
83
|
+
text-transform: uppercase;
|
|
84
|
+
white-space: nowrap;
|
|
85
|
+
}
|
|
86
|
+
.git-placard-badge-warn {
|
|
87
|
+
border-color: color-mix(in srgb, var(--warning) 38%, var(--border-subtle));
|
|
88
|
+
color: var(--warning);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.git-placard-stat {
|
|
92
|
+
display: inline-flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: 2px;
|
|
95
|
+
color: var(--text-dimmer);
|
|
96
|
+
font-size: 9px;
|
|
97
|
+
font-weight: 600;
|
|
98
|
+
font-variant-numeric: tabular-nums;
|
|
99
|
+
white-space: nowrap;
|
|
100
|
+
}
|
|
101
|
+
.git-placard-stat svg { width: 9px; height: 9px; }
|
|
102
|
+
.git-placard-stat-active { color: var(--text-muted); }
|
|
103
|
+
.git-placard-stat-warn { color: var(--error); }
|
|
104
|
+
|
|
105
|
+
.git-placard-remote {
|
|
106
|
+
display: flex;
|
|
107
|
+
align-items: center;
|
|
108
|
+
gap: 4px;
|
|
109
|
+
margin: 4px 0 0 19px;
|
|
110
|
+
color: var(--text-dimmer);
|
|
111
|
+
font-size: 9px;
|
|
112
|
+
min-width: 0;
|
|
113
|
+
}
|
|
114
|
+
.git-placard-remote svg { width: 9px; height: 9px; flex-shrink: 0; }
|
|
115
|
+
.git-placard-remote span {
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
text-overflow: ellipsis;
|
|
118
|
+
white-space: nowrap;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* The single focusable control in the block. Everything else is a pointer
|
|
122
|
+
convenience that forwards here, so keyboard users get one stop and one
|
|
123
|
+
action rather than a row of ambiguous targets. */
|
|
124
|
+
.git-placard-more {
|
|
125
|
+
display: inline-flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
gap: 2px;
|
|
128
|
+
align-self: center;
|
|
129
|
+
padding: 3px 5px;
|
|
130
|
+
border: 1px solid var(--border-subtle);
|
|
131
|
+
border-radius: 6px;
|
|
132
|
+
background: var(--bg);
|
|
133
|
+
color: var(--text-dimmer);
|
|
134
|
+
font-family: inherit;
|
|
135
|
+
font-size: 9px;
|
|
136
|
+
font-weight: 700;
|
|
137
|
+
letter-spacing: 0.02em;
|
|
138
|
+
text-transform: uppercase;
|
|
139
|
+
cursor: pointer;
|
|
140
|
+
transition: color 140ms ease, border-color 140ms ease;
|
|
141
|
+
}
|
|
142
|
+
.git-placard-more svg { width: 10px; height: 10px; }
|
|
143
|
+
.git-placard:hover .git-placard-more,
|
|
144
|
+
.git-placard-more:hover { color: var(--text-muted); border-color: var(--border); }
|
|
145
|
+
.git-placard-more:focus-visible {
|
|
146
|
+
outline: none;
|
|
147
|
+
border-color: var(--accent);
|
|
148
|
+
box-shadow: 0 0 0 2px var(--accent-25);
|
|
149
|
+
color: var(--text);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@media (prefers-reduced-motion: reduce) {
|
|
153
|
+
.git-placard-more { transition: none; }
|
|
154
|
+
}
|
|
@@ -12,6 +12,10 @@ body.home-active #sidebar-overlay,
|
|
|
12
12
|
body.home-active .title-bar-content,
|
|
13
13
|
body.home-active #user-island { display: none !important; }
|
|
14
14
|
|
|
15
|
+
body.capsules-disabled #home-tools-btn,
|
|
16
|
+
body.capsules-disabled #home-dock-divider,
|
|
17
|
+
body.capsules-disabled #home-tool-workbench { display: none !important; }
|
|
18
|
+
|
|
15
19
|
body.home-active #main-area { border: 0; border-radius: 0; }
|
|
16
20
|
|
|
17
21
|
body.home-surface-boot-pending #connect-overlay.hidden {
|
|
@@ -22,6 +22,72 @@
|
|
|
22
22
|
.home-sidebar-recent-item .home-sidebar-recent-row:hover,
|
|
23
23
|
.home-conversations-sheet-item .home-conversations-sheet-row:hover { background: transparent; }
|
|
24
24
|
|
|
25
|
+
.home-conversations-driver-header {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: stretch;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.home-conversations-driver-header > .home-conversations-sheet-item {
|
|
31
|
+
min-width: 0;
|
|
32
|
+
flex: 1;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.home-conversations-driver-toggle {
|
|
36
|
+
width: 32px;
|
|
37
|
+
padding: 0;
|
|
38
|
+
border: 0;
|
|
39
|
+
border-radius: 8px;
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
flex-shrink: 0;
|
|
44
|
+
color: var(--text-dimmer);
|
|
45
|
+
background: transparent;
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.home-conversations-driver-toggle:hover,
|
|
50
|
+
.home-conversations-driver-toggle:focus-visible {
|
|
51
|
+
color: var(--text);
|
|
52
|
+
background: rgba(var(--overlay-rgb), 0.05);
|
|
53
|
+
outline: none;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.home-conversations-driver-toggle .lucide {
|
|
57
|
+
width: 14px;
|
|
58
|
+
height: 14px;
|
|
59
|
+
transition: transform 0.15s ease;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.home-conversations-driver-toggle[aria-expanded="true"] .lucide {
|
|
63
|
+
transform: rotate(90deg);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.home-conversations-driver-header:not(:has(.home-conversations-sheet-item)) .home-conversations-driver-toggle {
|
|
67
|
+
width: 100%;
|
|
68
|
+
min-height: 38px;
|
|
69
|
+
padding: 0 10px;
|
|
70
|
+
justify-content: flex-start;
|
|
71
|
+
gap: 9px;
|
|
72
|
+
font: inherit;
|
|
73
|
+
font-size: 11px;
|
|
74
|
+
text-align: left;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.home-conversations-driver-header:not(:has(.home-conversations-sheet-item)) .home-conversations-driver-toggle span:first-of-type {
|
|
78
|
+
flex: 1;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.home-conversations-worker-children {
|
|
82
|
+
margin-left: 16px;
|
|
83
|
+
padding-left: 10px;
|
|
84
|
+
border-left: 1px solid color-mix(in srgb, var(--text-dimmer) 22%, transparent);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.home-conversations-worker-item .home-conversations-sheet-row {
|
|
88
|
+
padding-block: 8px;
|
|
89
|
+
}
|
|
90
|
+
|
|
25
91
|
.home-sidebar-recent-row:focus-visible,
|
|
26
92
|
.home-conversations-sheet-row:focus-visible {
|
|
27
93
|
position: relative;
|
|
@@ -478,6 +478,72 @@
|
|
|
478
478
|
line-height: 1.45;
|
|
479
479
|
}
|
|
480
480
|
|
|
481
|
+
.home-sidebar-driver-header {
|
|
482
|
+
display: flex;
|
|
483
|
+
align-items: stretch;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.home-sidebar-driver-header > .home-sidebar-recent-item {
|
|
487
|
+
min-width: 0;
|
|
488
|
+
flex: 1;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.home-sidebar-driver-toggle {
|
|
492
|
+
width: 27px;
|
|
493
|
+
padding: 0;
|
|
494
|
+
border: 0;
|
|
495
|
+
border-radius: 7px;
|
|
496
|
+
display: inline-flex;
|
|
497
|
+
align-items: center;
|
|
498
|
+
justify-content: center;
|
|
499
|
+
flex-shrink: 0;
|
|
500
|
+
color: var(--text-dimmer);
|
|
501
|
+
background: transparent;
|
|
502
|
+
cursor: pointer;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.home-sidebar-driver-toggle:hover,
|
|
506
|
+
.home-sidebar-driver-toggle:focus-visible {
|
|
507
|
+
color: var(--text);
|
|
508
|
+
background: rgba(var(--overlay-rgb), 0.05);
|
|
509
|
+
outline: none;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.home-sidebar-driver-toggle .lucide {
|
|
513
|
+
width: 13px;
|
|
514
|
+
height: 13px;
|
|
515
|
+
transition: transform 0.15s ease;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.home-sidebar-driver-toggle[aria-expanded="true"] .lucide {
|
|
519
|
+
transform: rotate(90deg);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
.home-sidebar-worker-children {
|
|
523
|
+
margin-left: 13px;
|
|
524
|
+
padding-left: 8px;
|
|
525
|
+
border-left: 1px solid color-mix(in srgb, var(--text-dimmer) 22%, transparent);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.home-sidebar-worker-item .home-sidebar-recent-row {
|
|
529
|
+
min-height: 38px;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.home-sidebar-orphan-toggle {
|
|
533
|
+
width: 100%;
|
|
534
|
+
min-height: 34px;
|
|
535
|
+
padding: 0 8px;
|
|
536
|
+
justify-content: flex-start;
|
|
537
|
+
gap: 7px;
|
|
538
|
+
font: inherit;
|
|
539
|
+
font-size: 11px;
|
|
540
|
+
text-align: left;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.home-sidebar-orphan-toggle span:first-of-type {
|
|
544
|
+
flex: 1;
|
|
545
|
+
}
|
|
546
|
+
|
|
481
547
|
.home-sidebar-expand {
|
|
482
548
|
position: absolute;
|
|
483
549
|
top: 8px;
|
package/lib/public/css/input.css
CHANGED
|
@@ -52,11 +52,32 @@
|
|
|
52
52
|
background: var(--bg-alt);
|
|
53
53
|
border: 1px solid var(--border);
|
|
54
54
|
border-radius: 10px;
|
|
55
|
-
padding:
|
|
55
|
+
padding: 0;
|
|
56
56
|
font-size: 12px;
|
|
57
57
|
max-width: 200px;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
.pasted-chip-open {
|
|
61
|
+
display: inline-flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
gap: 6px;
|
|
64
|
+
min-width: 0;
|
|
65
|
+
padding: 6px 4px 6px 10px;
|
|
66
|
+
border: 0;
|
|
67
|
+
background: transparent;
|
|
68
|
+
color: inherit;
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.pasted-chip-open:hover .pasted-chip-preview,
|
|
73
|
+
.pasted-chip-open:focus-visible .pasted-chip-preview { color: var(--text); }
|
|
74
|
+
|
|
75
|
+
.pasted-chip-open:focus-visible,
|
|
76
|
+
.pasted-chip-remove:focus-visible {
|
|
77
|
+
outline: 2px solid var(--accent);
|
|
78
|
+
outline-offset: 1px;
|
|
79
|
+
}
|
|
80
|
+
|
|
60
81
|
.pasted-chip-preview {
|
|
61
82
|
color: var(--text-muted);
|
|
62
83
|
overflow: hidden;
|
|
@@ -87,6 +108,7 @@
|
|
|
87
108
|
cursor: pointer;
|
|
88
109
|
padding: 0;
|
|
89
110
|
flex-shrink: 0;
|
|
111
|
+
margin-right: 6px;
|
|
90
112
|
}
|
|
91
113
|
|
|
92
114
|
.pasted-chip-remove .lucide { width: 12px; height: 12px; }
|
|
@@ -156,6 +178,59 @@
|
|
|
156
178
|
min-height: 0;
|
|
157
179
|
}
|
|
158
180
|
|
|
181
|
+
.paste-modal-editor,
|
|
182
|
+
.paste-modal-footer { display: none; }
|
|
183
|
+
|
|
184
|
+
.paste-modal-editing .paste-modal-body { display: none; }
|
|
185
|
+
|
|
186
|
+
.paste-modal-editing .paste-modal-editor {
|
|
187
|
+
display: block;
|
|
188
|
+
width: 100%;
|
|
189
|
+
min-height: min(52vh, 420px);
|
|
190
|
+
resize: vertical;
|
|
191
|
+
border: 0;
|
|
192
|
+
border-radius: 0;
|
|
193
|
+
outline: 0;
|
|
194
|
+
padding: 16px 20px;
|
|
195
|
+
background: var(--bg);
|
|
196
|
+
color: var(--text-secondary);
|
|
197
|
+
font-family: "Roboto Mono", monospace;
|
|
198
|
+
font-size: 13px;
|
|
199
|
+
line-height: 1.55;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.paste-modal-editing .paste-modal-editor:focus {
|
|
203
|
+
box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.paste-modal-editing .paste-modal-footer {
|
|
207
|
+
display: flex;
|
|
208
|
+
justify-content: flex-end;
|
|
209
|
+
gap: 8px;
|
|
210
|
+
padding: 12px 16px;
|
|
211
|
+
border-top: 1px solid var(--border-subtle);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.paste-modal-cancel,
|
|
215
|
+
.paste-modal-save {
|
|
216
|
+
border: 1px solid var(--border);
|
|
217
|
+
border-radius: 8px;
|
|
218
|
+
padding: 7px 12px;
|
|
219
|
+
font: inherit;
|
|
220
|
+
cursor: pointer;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.paste-modal-cancel {
|
|
224
|
+
background: transparent;
|
|
225
|
+
color: var(--text-secondary);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.paste-modal-save {
|
|
229
|
+
border-color: var(--accent);
|
|
230
|
+
background: var(--accent);
|
|
231
|
+
color: var(--accent-text, white);
|
|
232
|
+
}
|
|
233
|
+
|
|
159
234
|
/* --- File chips (input preview) --- */
|
|
160
235
|
.file-chip {
|
|
161
236
|
display: inline-flex;
|
|
@@ -286,9 +361,11 @@
|
|
|
286
361
|
#context-sources-add {
|
|
287
362
|
display: inline-flex;
|
|
288
363
|
align-items: center;
|
|
289
|
-
|
|
364
|
+
justify-content: center;
|
|
365
|
+
position: relative;
|
|
366
|
+
width: 36px;
|
|
290
367
|
height: 36px;
|
|
291
|
-
padding: 0
|
|
368
|
+
padding: 0;
|
|
292
369
|
border-radius: 18px;
|
|
293
370
|
border: none;
|
|
294
371
|
background: transparent;
|
|
@@ -322,6 +399,9 @@
|
|
|
322
399
|
font-size: 10px;
|
|
323
400
|
font-weight: 700;
|
|
324
401
|
line-height: 1;
|
|
402
|
+
position: absolute;
|
|
403
|
+
top: 0;
|
|
404
|
+
right: -1px;
|
|
325
405
|
}
|
|
326
406
|
|
|
327
407
|
.context-chip {
|
|
@@ -1270,6 +1350,7 @@
|
|
|
1270
1350
|
Attach (files/images -> path injection) and voice input stay available. */
|
|
1271
1351
|
body.tui-composer-active #schedule-btn,
|
|
1272
1352
|
body.tui-composer-active #ask-mate-btn,
|
|
1353
|
+
body.tui-composer-active .composer-session-action,
|
|
1273
1354
|
body.tui-composer-active #active-vendor-indicator,
|
|
1274
1355
|
body.tui-composer-active #config-chip-wrap {
|
|
1275
1356
|
display: none !important;
|
|
@@ -693,6 +693,8 @@ pre.mermaid-error {
|
|
|
693
693
|
|
|
694
694
|
.thinking-header {
|
|
695
695
|
display: inline-flex;
|
|
696
|
+
max-width: 100%;
|
|
697
|
+
box-sizing: border-box;
|
|
696
698
|
align-items: center;
|
|
697
699
|
gap: 6px;
|
|
698
700
|
cursor: pointer;
|
|
@@ -726,9 +728,44 @@ pre.mermaid-error {
|
|
|
726
728
|
.thinking-label {
|
|
727
729
|
font-size: 13px;
|
|
728
730
|
color: var(--text-muted);
|
|
731
|
+
min-width: 0;
|
|
732
|
+
overflow: hidden;
|
|
733
|
+
text-overflow: ellipsis;
|
|
734
|
+
white-space: nowrap;
|
|
729
735
|
}
|
|
730
736
|
|
|
737
|
+
.thinking-live .thinking-header {
|
|
738
|
+
padding: 6px 0;
|
|
739
|
+
background: transparent;
|
|
740
|
+
border-radius: 0;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
.thinking-live .thinking-chevron { display: none; }
|
|
744
|
+
|
|
745
|
+
.thinking-live .thinking-label {
|
|
746
|
+
background: linear-gradient(100deg, var(--text-muted) 40%, var(--text-dimmer) 50%, var(--text-muted) 60%);
|
|
747
|
+
background-size: 300% 100%;
|
|
748
|
+
background-clip: text;
|
|
749
|
+
-webkit-background-clip: text;
|
|
750
|
+
color: transparent;
|
|
751
|
+
animation: thinking-summary-shimmer 2.8s ease-in-out infinite;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
@keyframes thinking-summary-shimmer {
|
|
755
|
+
from { background-position: 100% 0; }
|
|
756
|
+
to { background-position: 0% 0; }
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
@media (prefers-reduced-motion: reduce) {
|
|
760
|
+
.thinking-live .thinking-label { animation: none; background: none; color: var(--text-muted); }
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
.thinking-header[aria-disabled="true"] { cursor: default; }
|
|
764
|
+
.thinking-header:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
765
|
+
.thinking-item .thinking-spinner { display: none; }
|
|
766
|
+
|
|
731
767
|
.thinking-duration {
|
|
768
|
+
flex-shrink: 0;
|
|
732
769
|
color: var(--text-dimmer);
|
|
733
770
|
font-size: 12px;
|
|
734
771
|
}
|
|
@@ -753,7 +790,7 @@ pre.mermaid-error {
|
|
|
753
790
|
font-size: 13px;
|
|
754
791
|
line-height: 1.55;
|
|
755
792
|
color: var(--text-muted);
|
|
756
|
-
white-space:
|
|
793
|
+
white-space: normal;
|
|
757
794
|
word-break: break-word;
|
|
758
795
|
max-height: 300px;
|
|
759
796
|
overflow-y: auto;
|
|
@@ -762,6 +799,8 @@ pre.mermaid-error {
|
|
|
762
799
|
}
|
|
763
800
|
|
|
764
801
|
.thinking-item.expanded .thinking-content { display: block; }
|
|
802
|
+
.thinking-content > :first-child { margin-top: 0; }
|
|
803
|
+
.thinking-content > :last-child { margin-bottom: 0; }
|
|
765
804
|
|
|
766
805
|
/* ==========================================================================
|
|
767
806
|
Tool Items
|
|
@@ -612,6 +612,86 @@
|
|
|
612
612
|
font-weight: 600;
|
|
613
613
|
}
|
|
614
614
|
|
|
615
|
+
.mobile-driver-header {
|
|
616
|
+
display: flex;
|
|
617
|
+
align-items: center;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
.mobile-driver-header > .mobile-session-item {
|
|
621
|
+
min-width: 0;
|
|
622
|
+
flex: 1;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.mobile-driver-toggle {
|
|
626
|
+
width: 32px;
|
|
627
|
+
height: 44px;
|
|
628
|
+
padding: 0;
|
|
629
|
+
border: 0;
|
|
630
|
+
border-radius: 8px;
|
|
631
|
+
display: inline-flex;
|
|
632
|
+
align-items: center;
|
|
633
|
+
justify-content: center;
|
|
634
|
+
color: var(--text-dimmer);
|
|
635
|
+
background: transparent;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
.mobile-driver-toggle .lucide,
|
|
639
|
+
.mobile-orphan-toggle .lucide {
|
|
640
|
+
width: 15px;
|
|
641
|
+
height: 15px;
|
|
642
|
+
transition: transform 0.15s ease;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
.mobile-driver-toggle[aria-expanded="true"] .lucide,
|
|
646
|
+
.mobile-orphan-toggle[aria-expanded="true"] .lucide {
|
|
647
|
+
transform: rotate(90deg);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.mobile-worker-children {
|
|
651
|
+
margin-left: 16px;
|
|
652
|
+
padding-left: 12px;
|
|
653
|
+
border-left: 1px solid color-mix(in srgb, var(--text-dimmer) 24%, transparent);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.mobile-worker-item {
|
|
657
|
+
min-height: 43px;
|
|
658
|
+
padding-block: 9px;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.mobile-worker-generation {
|
|
662
|
+
flex-shrink: 0;
|
|
663
|
+
padding: 2px 6px;
|
|
664
|
+
border-radius: 999px;
|
|
665
|
+
color: var(--text-dimmer);
|
|
666
|
+
background: rgba(var(--overlay-rgb), 0.04);
|
|
667
|
+
font-size: 10px;
|
|
668
|
+
font-weight: 650;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.mobile-worker-generation.current {
|
|
672
|
+
color: var(--success);
|
|
673
|
+
background: color-mix(in srgb, var(--success) 10%, transparent);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.mobile-orphan-toggle {
|
|
677
|
+
width: 100%;
|
|
678
|
+
min-height: 42px;
|
|
679
|
+
padding: 8px 12px;
|
|
680
|
+
border: 0;
|
|
681
|
+
border-radius: 9px;
|
|
682
|
+
display: flex;
|
|
683
|
+
align-items: center;
|
|
684
|
+
gap: 9px;
|
|
685
|
+
color: var(--text-dimmer);
|
|
686
|
+
background: transparent;
|
|
687
|
+
font: inherit;
|
|
688
|
+
text-align: left;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.mobile-orphan-toggle span:first-of-type {
|
|
692
|
+
flex: 1;
|
|
693
|
+
}
|
|
694
|
+
|
|
615
695
|
.mobile-session-title {
|
|
616
696
|
flex: 1;
|
|
617
697
|
display: inline-flex;
|