clay-server 5.1.0-beta.1 → 5.1.0-beta.2

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.
Files changed (157) hide show
  1. package/LICENSES/README.md +4 -0
  2. package/LICENSES/dicebear-avatars.md +16 -0
  3. package/lib/daemon-project-access.js +7 -1
  4. package/lib/daemon.js +2 -0
  5. package/lib/dicebear-avatar.js +62 -0
  6. package/lib/knowledge-db-service.js +175 -0
  7. package/lib/knowledge-db-validation.js +0 -0
  8. package/lib/knowledge-document-index.js +49 -0
  9. package/lib/knowledge-draft-store.js +56 -0
  10. package/lib/knowledge-file-store.js +199 -0
  11. package/lib/knowledge-markdown.js +128 -0
  12. package/lib/mate-knowledge-mcp-server.js +29 -6
  13. package/lib/mate-knowledge-service.js +23 -2
  14. package/lib/mate-knowledge-sync.js +36 -21
  15. package/lib/mate-workspace-color.js +4 -0
  16. package/lib/mates.js +18 -0
  17. package/lib/project-connection.js +36 -2
  18. package/lib/project-debate-proposal.js +6 -0
  19. package/lib/project-debate-workspace.js +43 -0
  20. package/lib/project-debate.js +1 -0
  21. package/lib/project-knowledge.js +315 -136
  22. package/lib/project-mate-creation-proposal.js +1 -0
  23. package/lib/project-sessions.js +39 -2
  24. package/lib/project-user-knowledge.js +60 -0
  25. package/lib/project.js +59 -18
  26. package/lib/public/app.js +73 -34
  27. package/lib/public/clay-studio-wordmark-bold.svg +20 -0
  28. package/lib/public/css/clay-workspace.css +105 -0
  29. package/lib/public/css/debates-workbench.css +47 -0
  30. package/lib/public/css/home-debate-live.css +26 -0
  31. package/lib/public/css/home-hub.css +3 -1
  32. package/lib/public/css/home-mate-model-picker.css +15 -131
  33. package/lib/public/css/home-mate-settings.css +168 -16
  34. package/lib/public/css/icon-strip.css +249 -32
  35. package/lib/public/css/mate-conversation.css +176 -0
  36. package/lib/public/css/mate-knowledge-workbench.css +118 -0
  37. package/lib/public/css/mate-workspace-color.css +16 -0
  38. package/lib/public/css/mates.css +28 -28
  39. package/lib/public/css/messages.css +1 -114
  40. package/lib/public/css/mobile-nav.css +16 -16
  41. package/lib/public/css/overlays.css +8 -0
  42. package/lib/public/css/project-logs.css +7 -0
  43. package/lib/public/css/project-mate-creation.css +105 -0
  44. package/lib/public/css/right-workbench.css +3 -3
  45. package/lib/public/css/session-folders.css +80 -21
  46. package/lib/public/css/sidebar.css +183 -107
  47. package/lib/public/css/title-bar.css +151 -0
  48. package/lib/public/css/worker-delegation.css +47 -0
  49. package/lib/public/css/worker-proposal.css +72 -150
  50. package/lib/public/css/you.css +74 -0
  51. package/lib/public/index.html +33 -101
  52. package/lib/public/modules/account-island.js +230 -0
  53. package/lib/public/modules/app-cursors.js +19 -43
  54. package/lib/public/modules/app-debate-ui.js +4 -3
  55. package/lib/public/modules/app-header.js +106 -0
  56. package/lib/public/modules/app-message-router.js +12 -3
  57. package/lib/public/modules/app-messages.js +34 -9
  58. package/lib/public/modules/app-notifications.js +4 -7
  59. package/lib/public/modules/app-projects.js +5 -38
  60. package/lib/public/modules/app-rendering.js +12 -13
  61. package/lib/public/modules/avatar.js +25 -9
  62. package/lib/public/modules/chat-render-runtime.js +16 -4
  63. package/lib/public/modules/command-palette.js +2 -15
  64. package/lib/public/modules/cursor-sharing-preference.js +3 -3
  65. package/lib/public/modules/debate-controls.js +299 -0
  66. package/lib/public/modules/debate.js +2 -0
  67. package/lib/public/modules/debates-workbench.js +339 -0
  68. package/lib/public/modules/default-ai.js +81 -65
  69. package/lib/public/modules/home-debate-controls.js +18 -289
  70. package/lib/public/modules/home-mate-avatar-editor.js +228 -0
  71. package/lib/public/modules/home-mate-color-picker.js +66 -0
  72. package/lib/public/modules/home-mate-creation.js +1 -1
  73. package/lib/public/modules/home-mate-instructions.js +90 -0
  74. package/lib/public/modules/home-mate-model-picker.js +80 -271
  75. package/lib/public/modules/home-mate-profile-editor.js +72 -0
  76. package/lib/public/modules/home-mate-settings.js +118 -125
  77. package/lib/public/modules/home-shell.js +3 -0
  78. package/lib/public/modules/home-surface-boot.js +1 -9
  79. package/lib/public/modules/icon-strip-tooltip.js +95 -0
  80. package/lib/public/modules/knowledge-db-edit-state.js +35 -0
  81. package/lib/public/modules/knowledge-db-workbench.js +234 -0
  82. package/lib/public/modules/knowledge-history-state.js +55 -0
  83. package/lib/public/modules/knowledge-markdown-editor.js +57 -0
  84. package/lib/public/modules/knowledge-preview-links.js +70 -0
  85. package/lib/public/modules/knowledge-workbench-shell.js +21 -0
  86. package/lib/public/modules/mate-knowledge-workbench-state.js +174 -0
  87. package/lib/public/modules/mate-knowledge-workbench.js +500 -0
  88. package/lib/public/modules/mate-knowledge.js +11 -3
  89. package/lib/public/modules/mate-management.js +54 -10
  90. package/lib/public/modules/mate-sidebar.js +11 -1
  91. package/lib/public/modules/mate-workspace-color.js +33 -0
  92. package/lib/public/modules/mention.js +5 -13
  93. package/lib/public/modules/profile.js +51 -18
  94. package/lib/public/modules/project-chat-identity.js +79 -0
  95. package/lib/public/modules/project-debate-planning-workspace.js +250 -0
  96. package/lib/public/modules/project-debate-workspace.js +185 -0
  97. package/lib/public/modules/project-header-identity.js +127 -0
  98. package/lib/public/modules/project-logs-render.js +9 -4
  99. package/lib/public/modules/project-mate-creation-workspace.js +414 -0
  100. package/lib/public/modules/project-mate-navigation.js +238 -0
  101. package/lib/public/modules/project-session-navigation.js +29 -0
  102. package/lib/public/modules/project-switcher.js +6 -8
  103. package/lib/public/modules/projects-hub-view.js +5 -6
  104. package/lib/public/modules/projects-hub.js +2 -6
  105. package/lib/public/modules/qrcode.js +27 -8
  106. package/lib/public/modules/search-clay-chat.js +8 -11
  107. package/lib/public/modules/session-activity-tooltip.js +12 -0
  108. package/lib/public/modules/session-create-form.js +86 -14
  109. package/lib/public/modules/session-create.js +50 -7
  110. package/lib/public/modules/session-list-visibility.js +41 -0
  111. package/lib/public/modules/session-presence-ui.js +4 -1
  112. package/lib/public/modules/session-title-marquee.js +51 -0
  113. package/lib/public/modules/sidebar-mates.js +3 -50
  114. package/lib/public/modules/sidebar-mobile.js +63 -60
  115. package/lib/public/modules/sidebar-projects.js +84 -97
  116. package/lib/public/modules/sidebar-session-folders-ui.js +2 -2
  117. package/lib/public/modules/sidebar-session-hierarchy.js +149 -70
  118. package/lib/public/modules/sidebar-sessions.js +49 -50
  119. package/lib/public/modules/sidebar.js +11 -13
  120. package/lib/public/modules/thinking-lifecycle.js +7 -6
  121. package/lib/public/modules/tool-palette-order.js +4 -3
  122. package/lib/public/modules/tool-palette.js +13 -3
  123. package/lib/public/modules/tools.js +22 -22
  124. package/lib/public/modules/worker-proposal.js +42 -8
  125. package/lib/public/modules/worker-runtime-picker.js +115 -0
  126. package/lib/public/modules/you-activity.js +121 -0
  127. package/lib/public/modules/you.js +251 -0
  128. package/lib/public/style.css +16 -8
  129. package/lib/public/vendor/codemirror/LICENSE +21 -0
  130. package/lib/public/vendor/codemirror/codemirror.css +344 -0
  131. package/lib/public/vendor/codemirror/codemirror.js +9884 -0
  132. package/lib/public/vendor/codemirror/continuelist.js +101 -0
  133. package/lib/public/vendor/codemirror/markdown.js +886 -0
  134. package/lib/public/vendor/codemirror/show-hint.css +37 -0
  135. package/lib/public/vendor/codemirror/show-hint.js +523 -0
  136. package/lib/sdk-bridge.js +15 -3
  137. package/lib/server-admin.js +11 -0
  138. package/lib/server-home-chat-events.js +1 -1
  139. package/lib/server-home-chat.js +25 -3
  140. package/lib/server-home-debate-planning.js +4 -1
  141. package/lib/server-home-debates.js +2 -0
  142. package/lib/server-home-mate-creation.js +4 -1
  143. package/lib/server-mate-instructions.js +44 -0
  144. package/lib/server-mates.js +12 -3
  145. package/lib/server-palette.js +1 -1
  146. package/lib/server-settings.js +65 -1
  147. package/lib/server-user-knowledge.js +119 -0
  148. package/lib/server.js +21 -1
  149. package/lib/session-visibility.js +7 -2
  150. package/lib/sessions.js +32 -6
  151. package/lib/user-knowledge-service.js +167 -0
  152. package/lib/users-permissions.js +7 -0
  153. package/lib/users-project-mate-filter-preferences.js +39 -0
  154. package/lib/users.js +6 -0
  155. package/lib/workspace-query-access.js +4 -1
  156. package/lib/ws-schema.js +50 -0
  157. package/package.json +10 -1
@@ -13,6 +13,53 @@
13
13
  gap: 8px;
14
14
  }
15
15
 
16
+ .top-bar-brand-link {
17
+ display: flex;
18
+ align-items: center;
19
+ flex: 0 0 auto;
20
+ width: 80px;
21
+ height: 18px;
22
+ color: var(--text-muted);
23
+ border-radius: 2px;
24
+ transition: color 180ms ease-out;
25
+ }
26
+
27
+ .top-bar-brand-wordmark {
28
+ display: block;
29
+ width: 100%;
30
+ height: 100%;
31
+ background: currentColor;
32
+ -webkit-mask: url("../clay-studio-wordmark-bold.svg") center / contain no-repeat;
33
+ mask: url("../clay-studio-wordmark-bold.svg") center / contain no-repeat;
34
+ opacity: 0.5;
35
+ transition: opacity 180ms ease-out;
36
+ user-select: none;
37
+ }
38
+
39
+ .top-bar-brand-link:hover,
40
+ .top-bar-brand-link:focus-visible {
41
+ color: var(--text);
42
+ }
43
+
44
+ .top-bar-brand-link:hover .top-bar-brand-wordmark,
45
+ .top-bar-brand-link:focus-visible .top-bar-brand-wordmark {
46
+ opacity: 1;
47
+ }
48
+
49
+ .top-bar-brand-link:focus-visible {
50
+ outline: 2px solid var(--accent);
51
+ outline-offset: 2px;
52
+ }
53
+
54
+ @media (max-width: 980px) {
55
+ .top-bar-brand-link { width: 72px; }
56
+ }
57
+
58
+ @media (prefers-reduced-motion: reduce) {
59
+ .top-bar-brand-link,
60
+ .top-bar-brand-wordmark { transition: none; }
61
+ }
62
+
16
63
  /* --- Update banner --- */
17
64
  .top-bar-update {
18
65
  display: flex;
@@ -262,6 +309,43 @@
262
309
  display: none;
263
310
  }
264
311
 
312
+ .title-bar-project-icon.is-mate-avatar {
313
+ overflow: visible;
314
+ padding: 0;
315
+ background: transparent;
316
+ box-shadow: none;
317
+ }
318
+
319
+ .title-bar-project-icon.is-clay-identity {
320
+ display: none;
321
+ }
322
+
323
+ .title-bar-mate-avatar {
324
+ display: block;
325
+ width: 28px;
326
+ height: 28px;
327
+ border: 1px solid rgba(var(--overlay-rgb), 0.14);
328
+ border-radius: 8px;
329
+ background: var(--bg-alt);
330
+ object-fit: cover;
331
+ box-shadow: 0 1px 3px rgba(var(--shadow-rgb), 0.14);
332
+ }
333
+
334
+ .title-bar-mate-vendor {
335
+ position: absolute;
336
+ right: -4px;
337
+ bottom: -4px;
338
+ display: block;
339
+ width: 13px;
340
+ height: 13px;
341
+ padding: 1px;
342
+ border: 2px solid var(--sidebar-bg);
343
+ border-radius: 5px;
344
+ background: var(--bg);
345
+ object-fit: contain;
346
+ box-sizing: border-box;
347
+ }
348
+
265
349
  .title-bar-project-dropdown:hover .title-bar-project-icon,
266
350
  .title-bar-project-dropdown.open .title-bar-project-icon {
267
351
  background: var(--bg-alt);
@@ -269,6 +353,12 @@
269
353
  transform: translateY(-1px);
270
354
  }
271
355
 
356
+ .title-bar-project-dropdown:hover .title-bar-project-icon.is-mate-avatar,
357
+ .title-bar-project-dropdown.open .title-bar-project-icon.is-mate-avatar {
358
+ background: transparent;
359
+ box-shadow: none;
360
+ }
361
+
272
362
  .title-bar-project-icon .emoji {
273
363
  width: 18px;
274
364
  height: 18px;
@@ -293,6 +383,67 @@
293
383
  min-width: 0;
294
384
  }
295
385
 
386
+ .title-bar-project-label {
387
+ display: flex;
388
+ flex: 0 1 auto;
389
+ min-width: 0;
390
+ flex-direction: column;
391
+ }
392
+
393
+ .title-bar-project-default {
394
+ display: none;
395
+ overflow: hidden;
396
+ color: var(--text-dimmer);
397
+ font-size: 9px;
398
+ line-height: 1.15;
399
+ text-overflow: ellipsis;
400
+ white-space: nowrap;
401
+ }
402
+
403
+ .title-bar-project-dropdown[data-mate-defaults="true"][data-mate-bio="true"] .title-bar-project-default { display: block; }
404
+
405
+ /* One continuous identity surface; the crown and label are not controls. */
406
+ .title-bar-project-dropdown[data-clay-identity="true"] .title-bar-project-default {
407
+ display: inline-flex;
408
+ align-items: center;
409
+ width: fit-content;
410
+ max-width: 100%;
411
+ height: 18px;
412
+ margin-top: 1px;
413
+ padding: 0 6px;
414
+ border: 1px solid color-mix(in srgb, var(--brand-gold) 48%, var(--brand-ink));
415
+ border-radius: 5px;
416
+ background: color-mix(in srgb, var(--brand-indigo) 28%, var(--brand-ink));
417
+ color: #fff;
418
+ font-size: 10px;
419
+ font-weight: 600;
420
+ letter-spacing: 0.015em;
421
+ line-height: 1;
422
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.09), 0 1px 1px rgba(var(--shadow-rgb), 0.12);
423
+ }
424
+
425
+ .clay-role-badge {
426
+ display: inline-flex;
427
+ align-items: center;
428
+ gap: 5px;
429
+ white-space: nowrap;
430
+ }
431
+
432
+ .clay-role-insignia {
433
+ width: 12px;
434
+ height: 12px;
435
+ flex: 0 0 12px;
436
+ color: var(--brand-gold);
437
+ fill: currentColor;
438
+ stroke-width: 1.8;
439
+ }
440
+
441
+ .clay-role-label {
442
+ color: inherit;
443
+ }
444
+
445
+ .title-bar-project-dropdown[data-mate-defaults="true"] .title-bar-chevron { display: none; }
446
+
296
447
  .title-bar-chevron {
297
448
  width: 12px;
298
449
  height: 12px;
@@ -0,0 +1,47 @@
1
+ /* One attributed instruction brief, using the same material as its proposal. */
2
+ #messages > .msg-user-delegated {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: stretch;
6
+ gap: 0;
7
+ box-sizing: border-box;
8
+ width: 100%;
9
+ max-width: var(--content-width);
10
+ margin: 12px auto;
11
+ padding: 0 20px;
12
+ }
13
+ #messages > .msg-user-delegated:hover { background: transparent; }
14
+ #messages > .msg-user-delegated > .dm-bubble-avatar,
15
+ #messages > .msg-user-delegated .dm-bubble-header { display: none; }
16
+ #messages > .msg-user-delegated > .dm-bubble-content { display: block; flex: none; width: 100%; min-width: 0; }
17
+ #messages > .msg-user-delegated .bubble {
18
+ box-sizing: border-box;
19
+ width: 100%;
20
+ max-width: 100%;
21
+ padding: 0;
22
+ background: var(--bg);
23
+ border: 1px solid var(--border);
24
+ border-radius: 10px;
25
+ box-shadow: 0 1px 3px rgba(var(--shadow-rgb), .08);
26
+ white-space: normal;
27
+ overflow: hidden;
28
+ }
29
+ #messages .delegated-card-head { display: flex; align-items: center; gap: 8px; padding: 12px 14px 10px; background: transparent; border-bottom: 1px solid var(--border-subtle); }
30
+ #messages .delegated-card-avatar { width: 24px; height: 24px; border-radius: 6px; flex-shrink: 0; }
31
+ #messages .delegated-card-headtext { display: grid; gap: 1px; min-width: 0; flex: 1; }
32
+ #messages .delegated-card-eyebrow { color: var(--text-muted); font-size: 11px; font-weight: 400; letter-spacing: 0; text-transform: none; line-height: 1.4; }
33
+ #messages .delegated-card-from { font-size: 13px; font-weight: 550; line-height: 1.4; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
34
+ #messages .delegated-card-time { font-size: 11px; color: var(--text-muted); flex-shrink: 0; align-self: flex-start; margin-top: 2px; }
35
+ #messages .msg-user-delegated .delegated-brief { padding: 12px 14px 14px; color: var(--text); font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; }
36
+ #messages .msg-user-delegated .delegated-brief :is(h1, h2, h3) { font-size: 13px; font-weight: 600; margin: 14px 0 4px; }
37
+ #messages .msg-user-delegated .delegated-brief li::marker { color: var(--text-muted); }
38
+ #messages > .msg-user-delegated > .msg-actions { align-self: flex-end; margin-left: 0; padding-top: 2px; }
39
+ @media (max-width: 768px) { #messages > .msg-user-delegated { padding-inline: 12px; } }
40
+
41
+ #messages .delegated-brief > :first-child { margin-top: 0; }
42
+ #messages .delegated-brief > :last-child { margin-bottom: 0; }
43
+ #messages .delegated-brief p { margin: 8px 0; }
44
+ #messages .delegated-brief pre { max-width: 100%; overflow-x: auto; border: 1px solid var(--border-subtle); border-radius: 8px; }
45
+ #messages .delegated-brief code { font-size: 12px; }
46
+ #messages .delegated-brief :is(ol, ul) { padding-left: 20px; margin: 6px 0; }
47
+ #messages .delegated-brief li { margin: 3px 0; }
@@ -1,160 +1,82 @@
1
- /* Inline approval surface for user-controlled Split Worker configuration. */
2
-
1
+ /* Worker proposals are decisions first, and readable receipts after acceptance. */
3
2
  .worker-proposal-card {
3
+ box-sizing: border-box;
4
4
  width: min(var(--content-width), calc(100% - 40px));
5
5
  margin: 16px auto;
6
- padding: 16px;
7
- border: 1px solid color-mix(in srgb, var(--accent2) 30%, var(--border));
8
- border-radius: 16px;
9
- background:
10
- radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--accent2) 10%, transparent), transparent 42%),
11
- var(--bg-alt);
12
- box-shadow: 0 12px 32px rgba(var(--shadow-rgb), 0.12);
13
- }
14
-
15
- .worker-proposal-header {
16
- display: flex;
17
- align-items: center;
18
- gap: 10px;
19
- }
20
-
21
- .worker-proposal-mark {
22
- width: 34px;
23
- height: 34px;
24
- display: grid;
25
- place-items: center;
26
- flex-shrink: 0;
27
- border-radius: 11px;
28
- background: color-mix(in srgb, var(--accent2) 14%, var(--bg));
29
- color: var(--accent2);
30
- }
31
-
32
- .worker-proposal-mark .lucide { width: 17px; height: 17px; }
33
- .worker-proposal-heading { min-width: 0; display: grid; gap: 1px; }
34
- .worker-proposal-heading strong { color: var(--text); font-size: 14px; line-height: 1.25; }
35
- .worker-proposal-kicker { color: var(--accent2); font-size: 8px; font-weight: 800; letter-spacing: 0.14em; }
36
-
37
- .worker-proposal-status {
38
- margin-left: auto;
39
- padding: 3px 8px;
40
- border-radius: 999px;
41
- background: color-mix(in srgb, var(--accent2) 10%, transparent);
42
- color: var(--accent2);
43
- font-size: 9px;
44
- font-weight: 700;
45
- white-space: nowrap;
46
- }
47
-
48
- .worker-proposal-summary {
49
- margin: 12px 0 10px;
50
- color: var(--text-secondary);
51
- font-size: 13px;
52
- line-height: 1.5;
53
- }
54
-
55
- .worker-proposal-plan {
56
- display: grid;
57
- gap: 5px;
58
- margin: 0 0 14px;
59
- padding: 10px 12px 10px 32px;
60
- border: 1px solid var(--border-subtle);
61
- border-radius: 11px;
62
- background: color-mix(in srgb, var(--bg) 72%, transparent);
63
- color: var(--text-muted);
64
- font-size: 11px;
65
- line-height: 1.45;
66
- }
67
-
68
- .worker-proposal-plan li::marker { color: var(--accent2); font-weight: 700; }
69
-
70
- .worker-proposal-rationale {
71
- display: grid;
72
- gap: 4px;
73
- margin: 0 0 14px;
74
- padding: 10px 12px;
75
- border-left: 2px solid color-mix(in srgb, var(--accent2) 62%, var(--border));
76
- background: color-mix(in srgb, var(--accent2) 5%, transparent);
77
- }
78
-
79
- .worker-proposal-rationale > span {
80
- color: var(--accent2);
81
- font-size: 9px;
82
- font-weight: 750;
83
- letter-spacing: 0.06em;
84
- text-transform: uppercase;
85
- }
86
-
87
- .worker-proposal-rationale p {
88
- margin: 0;
89
- color: var(--text-secondary);
90
- font-size: 11px;
91
- line-height: 1.45;
92
- }
93
-
94
- .worker-proposal-config {
95
- display: grid;
96
- grid-template-columns: minmax(120px, 0.8fr) minmax(160px, 1.2fr) minmax(190px, auto);
97
- gap: 9px;
98
- align-items: end;
6
+ padding: 14px 16px;
7
+ border: 1px solid var(--border);
8
+ border-radius: 10px;
9
+ background: var(--bg);
10
+ box-shadow: 0 1px 3px rgba(var(--shadow-rgb), .08);
11
+ container-type: inline-size;
99
12
  }
100
-
13
+ .worker-proposal-header { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
14
+ .worker-proposal-mark { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--bg-alt); color: var(--text-muted); }
15
+ .worker-proposal-mark .lucide { width: 15px; height: 15px; }
16
+ .worker-proposal-heading { min-width: 0; flex: 1; display: grid; gap: 2px; }
17
+ .worker-proposal-heading strong { color: var(--text); font-size: 14px; line-height: 1.35; font-weight: 600; }
18
+ .worker-proposal-kicker { color: var(--text-muted); font-size: 11px; line-height: 1.3; }
19
+ .worker-proposal-status { color: var(--text-muted); background: var(--bg-alt); border: 1px solid var(--border-subtle); border-radius: 5px; padding: 3px 6px; font-size: 11px; line-height: 1.3; }
20
+ .worker-proposal-card[data-status="pending"] .worker-proposal-status { color: var(--text); }
21
+ .worker-proposal-card[data-status="error"] .worker-proposal-status { color: var(--error); }
22
+ .worker-proposal-card[data-status="completed"] .worker-proposal-status { color: var(--text); }
23
+ .worker-proposal-summary { margin: 12px 0; color: var(--text); font-size: 13px; line-height: 1.55; overflow-wrap: anywhere; }
24
+ .worker-proposal-brief { margin: 0 0 12px; }
25
+ .worker-proposal-brief > summary { list-style: none; display: flex; align-items: center; gap: 5px; width: fit-content; color: var(--text-muted); cursor: pointer; font-size: 12px; padding: 3px 0; }
26
+ .worker-proposal-brief > summary::-webkit-details-marker { display: none; }
27
+ .worker-proposal-brief > summary .lucide { width: 13px; height: 13px; transition: transform 150ms ease; }
28
+ .worker-proposal-brief[open] > summary .lucide { transform: rotate(90deg); }
29
+ .worker-proposal-plan { margin: 7px 0 10px; padding: 0 0 0 21px; color: var(--text); font-size: 13px; line-height: 1.55; display: grid; gap: 4px; overflow-wrap: anywhere; }
30
+ .worker-proposal-plan li::marker { color: var(--text-muted); font-size: 11px; }
31
+ .worker-proposal-rationale { margin: 10px 0 0; }
32
+ .worker-proposal-rationale > span { font-size: 12px; font-weight: 600; color: var(--text); }
33
+ .worker-proposal-rationale p { margin: 3px 0 0; font-size: 12px; line-height: 1.55; color: var(--text-muted); overflow-wrap: anywhere; }
34
+ .worker-proposal-config { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 10px; padding-top: 12px; border-top: 1px solid var(--border-subtle); }
101
35
  .worker-proposal-field { min-width: 0; display: grid; gap: 5px; }
102
- .worker-proposal-field > span { color: var(--text-dimmer); font-size: 9px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
36
+ .worker-proposal-field > span { color: var(--text-muted); font-size: 11px; line-height: 1.4; }
103
37
  .worker-proposal-vendor-control { position: relative; display: flex; align-items: center; }
104
- .worker-proposal-vendor-control img { position: absolute; left: 9px; width: 15px; height: 15px; border-radius: 4px; pointer-events: none; z-index: 1; }
105
- .worker-proposal-vendor-control .worker-proposal-select { padding-left: 30px; }
106
-
107
- .worker-proposal-select {
108
- width: 100%;
109
- height: 34px;
110
- min-width: 0;
111
- padding: 0 28px 0 10px;
112
- border: 1px solid var(--border);
113
- border-radius: 9px;
114
- background: var(--input-bg);
115
- color: var(--text);
116
- font: inherit;
117
- font-size: 11px;
118
- outline: none;
119
- }
120
-
121
- .worker-proposal-select:focus { border-color: var(--accent2); }
122
- .worker-proposal-effort-buttons { display: flex; height: 34px; padding: 3px; border: 1px solid var(--border); border-radius: 9px; background: var(--input-bg); }
123
- .worker-proposal-effort-btn { flex: 1; min-width: 38px; border: 0; border-radius: 6px; background: transparent; color: var(--text-dimmer); font: inherit; font-size: 9px; font-weight: 650; cursor: pointer; }
38
+ .worker-proposal-vendor-control img { position: absolute; left: 9px; width: 16px; height: 16px; border-radius: 4px; pointer-events: none; z-index: 1; }
39
+ .worker-proposal-vendor-control .worker-runtime-trigger, .worker-proposal-vendor-control .worker-proposal-select { padding-left: 31px; }
40
+ .worker-runtime-picker { min-width: 0; width: 100%; }
41
+ .worker-proposal-select, .worker-runtime-trigger { width: 100%; height: 34px; min-width: 0; padding: 0 9px; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-alt); color: var(--text); font: inherit; font-size: 13px; }
42
+ .worker-runtime-picker > select { display: none; }
43
+ .worker-runtime-trigger { display: flex; align-items: center; gap: 8px; text-align: left; cursor: pointer; }
44
+ .worker-runtime-trigger > span { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
45
+ .worker-runtime-trigger .lucide { flex: none; width: 13px; height: 13px; color: var(--text-muted); }
46
+ .worker-runtime-trigger:hover { border-color: var(--text-dimmer); }
47
+ .worker-runtime-options { position: fixed; z-index: 10050; box-sizing: border-box; max-height: min(240px, calc(100dvh - 16px)); overflow-y: auto; padding: 4px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); box-shadow: 0 3px 12px rgba(var(--shadow-rgb), .15); }
48
+ .worker-runtime-options button { display: block; width: 100%; min-height: 30px; border: 0; border-radius: 5px; padding: 5px 8px; text-align: left; font: inherit; font-size: 13px; background: transparent; color: var(--text); cursor: pointer; overflow-wrap: anywhere; }
49
+ .worker-runtime-options button:hover, .worker-runtime-options button:focus { background: var(--bg-alt); }
50
+ .worker-runtime-options [aria-selected="true"] { background: color-mix(in srgb, var(--brand-indigo) 10%, var(--bg)); }
51
+ .worker-proposal-effort { grid-column: 1 / -1; }
52
+ .worker-proposal-effort-buttons { display: flex; flex-wrap: wrap; gap: 3px; padding: 3px; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--bg-alt); }
53
+ .worker-proposal-effort-btn { flex: 1; min-width: 45px; min-height: 27px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--text-muted); font: inherit; font-size: 11px; cursor: pointer; }
124
54
  .worker-proposal-effort-btn:hover { color: var(--text); }
125
- .worker-proposal-effort-btn.active { background: color-mix(in srgb, var(--accent2) 18%, var(--bg)); color: var(--accent2); }
126
-
127
- .worker-proposal-decision {
128
- margin-top: 9px;
129
- color: var(--text-dimmer);
130
- font-size: 9px;
131
- line-height: 1.35;
55
+ .worker-proposal-effort-btn.active { color: var(--text); background: var(--bg); border-color: color-mix(in srgb, var(--brand-indigo) 40%, var(--border)); box-shadow: 0 1px 2px rgba(var(--shadow-rgb), .08); }
56
+ .worker-proposal-runtime { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--border-subtle); color: var(--text); font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
57
+ .worker-proposal-decision { margin-top: 8px; color: var(--text-muted); font-size: 11px; line-height: 1.5; }
58
+ .worker-proposal-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; margin-top: 12px; }
59
+ .worker-proposal-action { min-height: 32px; padding: 0 11px; border-radius: 7px; font: inherit; font-size: 12px; font-weight: 550; cursor: pointer; }
60
+ .worker-proposal-action.secondary { border: 1px solid var(--border); background: var(--bg); color: var(--text); }
61
+ .worker-proposal-action.primary { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid var(--brand-indigo); background: var(--brand-indigo); color: #fff; box-shadow: 0 1px 2px rgba(var(--shadow-rgb), .1); }
62
+ .worker-proposal-action.primary .lucide { width: 14px; height: 14px; }
63
+ .worker-proposal-action:active:not(:disabled) { transform: translateY(1px); }
64
+ .worker-proposal-action:disabled, .worker-proposal-select:disabled, .worker-runtime-trigger:disabled, .worker-proposal-effort-btn:disabled { cursor: default; opacity: .6; }
65
+ .worker-proposal-error { margin-top: 10px; padding: 8px 10px; border-radius: 6px; font-size: 12px; line-height: 1.5; color: var(--error); background: var(--error-8); }
66
+ .worker-proposal-card .hidden { display: none; }
67
+ .worker-proposal-card :is(button, select, summary):focus-visible, .worker-runtime-options button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
68
+ @container (max-width: 340px) {
69
+ .worker-proposal-header { display: grid; grid-template-columns: 28px minmax(0, 1fr); }
70
+ .worker-proposal-status { grid-column: 2; justify-self: start; }
71
+ .worker-proposal-config { grid-template-columns: 1fr; }
72
+ .worker-proposal-actions > button { flex: 1 1 100%; }
132
73
  }
133
-
134
- .worker-proposal-decision.automatic { color: var(--accent2); }
135
-
136
- .worker-proposal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }
137
- .worker-proposal-action { min-height: 34px; padding: 0 13px; border-radius: 9px; font: inherit; font-size: 11px; font-weight: 700; cursor: pointer; }
138
- .worker-proposal-action.secondary { border: 1px solid var(--border); background: transparent; color: var(--text-muted); }
139
- .worker-proposal-action.primary { display: inline-flex; align-items: center; gap: 6px; border: 1px solid color-mix(in srgb, var(--accent2) 55%, var(--border)); background: color-mix(in srgb, var(--accent2) 16%, var(--bg)); color: var(--accent2); }
140
- .worker-proposal-action.primary .lucide { width: 13px; height: 13px; }
141
- .worker-proposal-action:not(:disabled):hover { filter: brightness(1.12); }
142
- .worker-proposal-action:disabled, .worker-proposal-select:disabled, .worker-proposal-effort-btn:disabled { cursor: default; opacity: 0.58; }
143
-
144
- .worker-proposal-error { margin-top: 10px; padding: 8px 10px; border-radius: 8px; font-size: 10px; line-height: 1.45; }
145
- .worker-proposal-error { color: var(--error); background: var(--error-8); }
146
- .worker-proposal-error.hidden { display: none; }
147
- .worker-proposal-card[data-status="starting"] .worker-proposal-status,
148
- .worker-proposal-card[data-status="running"] .worker-proposal-status { animation: worker-proposal-pulse 1.6s ease-in-out infinite; }
149
- .worker-proposal-card[data-status="completed"] { border-color: color-mix(in srgb, var(--success) 35%, var(--border)); }
150
- .worker-proposal-card[data-status="completed"] .worker-proposal-status { color: var(--success); background: var(--success-8); }
151
- .worker-proposal-card[data-status="declined"] .worker-proposal-status { color: var(--text-muted); background: rgba(var(--overlay-rgb), 0.04); }
152
-
153
- @keyframes worker-proposal-pulse { 50% { opacity: 0.55; } }
154
-
155
74
  @media (max-width: 720px) {
156
- .worker-proposal-card { width: calc(100% - 24px); padding: 14px; }
157
- .worker-proposal-config { grid-template-columns: 1fr 1fr; }
158
- .worker-proposal-effort { grid-column: 1 / -1; }
159
- .worker-proposal-status { display: none; }
75
+ .worker-proposal-card { width: calc(100% - 24px); padding: 12px; }
76
+ }
77
+ @media (pointer: coarse) {
78
+ .worker-runtime-picker > select { display: block; }
79
+ .worker-runtime-trigger { display: none; }
80
+ .worker-proposal-action, .worker-proposal-select { min-height: 40px; }
160
81
  }
82
+ @media (prefers-reduced-motion: reduce) { .worker-proposal-brief > summary .lucide { transition: none; } }
@@ -0,0 +1,74 @@
1
+ /* You shares the Logs workbench and adds Clay's shell-level voice. */
2
+ /* Me is a fixed Clay-only tool, sharing the palette's geometry. */
3
+ body.clay-workspace-active #session-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
4
+ body.clay-workspace-active #session-actions .tool-btn-label { display: block; white-space: nowrap; word-break: normal; }
5
+ #you-button { display: none; }
6
+ body.clay-workspace-active #you-button { display: flex; }
7
+ body.clay-workspace-active #sidebar-column #you-button.palette-tile > .lucide {
8
+ color: var(--brand-indigo);
9
+ background: #fff;
10
+ box-shadow: inset 0 0 0 1px rgba(88,87,252,.18), 0 1px 2px rgba(var(--shadow-rgb),.1), 0 3px 7px rgba(88,87,252,.16);
11
+ }
12
+ body.clay-workspace-active #sidebar-column #you-button.palette-tile:hover > .lucide {
13
+ color: var(--brand-indigo);
14
+ background: #fff;
15
+ box-shadow: inset 0 0 0 1px rgba(88,87,252,.3), 0 2px 3px rgba(var(--shadow-rgb),.1), 0 4px 9px rgba(88,87,252,.22);
16
+ }
17
+ body.clay-workspace-active #sidebar-column #you-button.palette-tile.active > .lucide {
18
+ box-shadow: inset 0 0 0 1px rgba(88,87,252,.4), 0 0 0 2px rgba(88,87,252,.12), 0 3px 7px rgba(88,87,252,.18);
19
+ }
20
+ #you-button .tool-btn-label { font-weight: 600; }
21
+ #you-button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
22
+ #session-actions [data-fixed="true"] { -webkit-user-drag: none; }
23
+ #you-panel button:focus-visible, #you-activity button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
24
+ .you-status { margin: 0; padding: 7px 14px; color: var(--text-muted); font-size: 12px; }
25
+ .you-status:empty { display: none; }
26
+ .you-pending { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 14px; border-bottom: 1px solid var(--border-subtle); color: var(--text-secondary); font-size: 12px; }
27
+ .you-pending.hidden { display: none; }
28
+ #you-panel .you-more, .you-pending button { border: 1px solid var(--border); background: var(--bg-alt); color: var(--text); border-radius: 7px; padding: 5px 9px; font: inherit; font-size: 12px; cursor: pointer; }
29
+ .you-more { margin: 6px 14px; }
30
+ .you-evidence { white-space: pre-wrap; margin: 12px 24px 24px; padding-top: 12px; border-top: 1px solid var(--border-subtle); color: var(--text-secondary); font-size: 12px; line-height: 1.6; }
31
+ .you-categories { position: relative; }
32
+ .you-categories summary { display: flex; align-items: center; cursor: pointer; white-space: nowrap; }
33
+ .you-category-options { position: absolute; right: 0; top: 42px; z-index: 2; min-width: 160px; max-height: 240px; overflow: auto; padding: 4px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); box-shadow: 0 3px 9px rgba(0,0,0,.12); }
34
+ .you-category-options button { display: block; width: 100%; padding: 6px 8px; border: 0; border-radius: 5px; background: transparent; color: var(--text); text-align: left; font: inherit; font-size: 12px; cursor: pointer; }
35
+ .you-category-options button:hover, .you-category-options button[aria-pressed="true"] { background: var(--bg-alt); }
36
+ #you-activity { display: none; position: relative; margin-left: 0; min-width: 0; max-width: 360px; }
37
+ #you-activity.announcing { display: block; }
38
+ #you-activity.announcing ~ .top-bar-brand-link { display: none; }
39
+ #you-activity-toggle { position: relative; display: flex; align-items: center; height: 28px; width: 100%; padding: 0 10px; border: 1.5px solid var(--text-muted); border-radius: 15px 16px 14px 7px; background: var(--bg-alt); color: var(--text-secondary); cursor: pointer; font: inherit; font-size: 11px; box-shadow: 0 1px 2px rgba(0,0,0,.08); }
40
+ #you-activity-toggle::before, #you-activity-toggle::after { content: ''; position: absolute; left: 14px; bottom: -13px; width: 17px; height: 14px; background: var(--text-muted); clip-path: polygon(0 0, 100% 0, 35% 100%); pointer-events: none; }
41
+ #you-activity-toggle::after { left: 15px; bottom: -10px; width: 14px; height: 11px; background: var(--bg-alt); }
42
+ #you-activity-text { overflow: hidden; white-space: nowrap; text-overflow: clip; }
43
+ #you-activity-history { position: absolute; left: 0; top: 38px; width: min(390px, calc(100vw - 80px)); max-height: min(520px, calc(100dvh - 70px)); overflow-y: auto; z-index: 500; border: 1px solid var(--border); border-radius: 10px; background: var(--bg); box-shadow: 0 5px 18px rgba(0,0,0,.16); color: var(--text); }
44
+ #you-activity-history header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid var(--border-subtle); font-size: 12px; }
45
+ #you-activity-history button { font: inherit; font-size: 12px; color: var(--text-secondary); cursor: pointer; }
46
+ #you-activity-close { border: 0; background: transparent; }
47
+ .you-activity-entry { display: grid; gap: 5px; width: 100%; padding: 10px 12px; text-align: left; border: 0; border-bottom: 1px solid var(--border-subtle); background: transparent; line-height: 1.5; }
48
+ .you-activity-entry:hover { background: var(--bg-alt); }
49
+ .you-activity-entry small { color: var(--text-dimmer); font-size: 10px; }
50
+ .you-activity-empty { padding: 10px 12px; color: var(--text-dimmer); font-size: 12px; }
51
+ #you-activity-open, #you-activity-more { margin: 8px 12px; padding: 5px 9px; border: 1px solid var(--border); border-radius: 7px; background: var(--bg-alt); }
52
+ @media (max-width: 1023px) { #you-wide, #you-fullscreen { display: none; } }
53
+ @media (max-width: 768px) {
54
+ #you-activity { margin-left: 0; max-width: 190px; }
55
+ #you-activity-toggle::before, #you-activity-toggle::after { display: none; }
56
+ #you-activity-history { width: min(340px, calc(100vw - 20px)); }
57
+ #you-panel .project-logs-subtitle { display: none; }
58
+ #you-panel .project-logs-window-actions { margin-left: auto; }
59
+ }
60
+ #you-activity .hidden, #you-panel .hidden { display: none; }
61
+ @media (min-width: 769px) { #you-activity { max-width: min(360px, calc(50vw - 270px)); } }
62
+
63
+ #you-announcement-status { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
64
+
65
+ /* The personal mark echoes the raised sidebar tool faces. */
66
+ .me-mark { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; flex: 0 0 22px; color: var(--accent); background: color-mix(in srgb, var(--brand-indigo) 13%, var(--bg)); border: 1px solid color-mix(in srgb, var(--brand-indigo) 26%, var(--border)); border-radius: 8px 8px 6px 8px; }
67
+ .me-mark .lucide { width: 15px; height: 15px; stroke-width: 2; }
68
+ .me-unread-badge { position: absolute; top: 3px; right: calc(50% - 24px); border: 1px solid var(--sidebar-bg); min-width: 15px; height: 15px; box-sizing: border-box; padding: 0 4px; border-radius: 8px; background: var(--brand-indigo); color: #fff; font-size: 10px; font-weight: 600; line-height: 15px; text-align: center; }
69
+ .me-unread-badge[hidden] { display: none; }
70
+ .me-new-badge { flex: 0 0 auto; color: var(--accent); background: color-mix(in srgb, var(--brand-indigo) 10%, transparent); border-radius: 4px; padding: 2px 5px; font-size: 10px; font-weight: 600; }
71
+
72
+ .me-introduction { flex: 0 0 auto; margin: 0; padding: 12px 16px; color: var(--text-secondary); font-size: 12px; line-height: 1.6; border-bottom: 1px solid var(--border-subtle); }
73
+
74
+ @media (prefers-reduced-motion: reduce) { .you-button, .you-button > .lucide { transition: none; transform: none; } }