clay-server 3.8.1 → 4.0.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 (189) hide show
  1. package/lib/ask-user-mcp-server.js +5 -119
  2. package/lib/builtin-mates.js +6 -6
  3. package/lib/claude-hook-installer.js +15 -0
  4. package/lib/clay-history-mcp-server.js +62 -297
  5. package/lib/daemon.js +1 -1
  6. package/lib/debate-model-selection.js +119 -0
  7. package/lib/home-debate-tool-policy.js +164 -0
  8. package/lib/home-response-notifications.js +26 -0
  9. package/lib/mate-creation-mcp-server.js +55 -0
  10. package/lib/mate-ready-creation.js +95 -0
  11. package/lib/mates.js +2 -0
  12. package/lib/notes.js +2 -1
  13. package/lib/project-ask-user.js +64 -0
  14. package/lib/project-capsule-catalog.js +101 -0
  15. package/lib/project-connection.js +4 -0
  16. package/lib/project-debate-proposal.js +133 -17
  17. package/lib/project-debate.js +214 -110
  18. package/lib/project-delegated-follow-up.js +84 -0
  19. package/lib/project-delegated-session.js +53 -0
  20. package/lib/project-filesystem.js +7 -9
  21. package/lib/project-knowledge.js +1 -0
  22. package/lib/project-mate-creation-proposal.js +120 -0
  23. package/lib/project-memory.js +14 -7
  24. package/lib/project-models.js +157 -32
  25. package/lib/project-session-notes.js +2 -2
  26. package/lib/project-session-pair.js +8 -8
  27. package/lib/project-sessions.js +66 -51
  28. package/lib/project-vendor-login.js +397 -0
  29. package/lib/project-worker-proposal.js +25 -25
  30. package/lib/project-workspace-query.js +144 -0
  31. package/lib/project.js +349 -102
  32. package/lib/public/app.js +85 -42
  33. package/lib/public/css/avatar-imprints.css +0 -1
  34. package/lib/public/css/base.css +4 -0
  35. package/lib/public/css/capsule-ui.css +389 -0
  36. package/lib/public/css/command-palette.css +306 -6
  37. package/lib/public/css/home-capsule-library.css +243 -0
  38. package/lib/public/css/home-capsule-source.css +192 -0
  39. package/lib/public/css/home-debate-live.css +146 -0
  40. package/lib/public/css/home-debate-planning.css +125 -0
  41. package/lib/public/css/home-debates-archive.css +281 -0
  42. package/lib/public/css/home-hub.css +896 -405
  43. package/lib/public/css/home-mate-creation.css +34 -0
  44. package/lib/public/css/home-mate-model-picker.css +131 -0
  45. package/lib/public/css/home-mate-settings.css +344 -0
  46. package/lib/public/css/home-session-actions.css +265 -0
  47. package/lib/public/css/home-sidebar.css +667 -0
  48. package/lib/public/css/icon-strip.css +1 -2
  49. package/lib/public/css/mates.css +7 -34
  50. package/lib/public/css/pane.css +1 -1
  51. package/lib/public/css/playbook.css +0 -80
  52. package/lib/public/css/sticky-notes.css +53 -117
  53. package/lib/public/css/tui-attention.css +0 -44
  54. package/lib/public/css/workspace-assignment.css +45 -0
  55. package/lib/public/fonts/source-serif-4/LICENSE.md +93 -0
  56. package/lib/public/fonts/source-serif-4/SourceSerif4Caption-Semibold.ttf.woff2 +0 -0
  57. package/lib/public/index.html +93 -74
  58. package/lib/public/modules/app-connection.js +10 -1
  59. package/lib/public/modules/app-dm.js +43 -160
  60. package/lib/public/modules/app-home-hub.js +328 -585
  61. package/lib/public/modules/app-message-cards.js +242 -0
  62. package/lib/public/modules/app-message-router.js +84 -0
  63. package/lib/public/modules/app-messages.js +102 -37
  64. package/lib/public/modules/app-notifications.js +8 -119
  65. package/lib/public/modules/app-projects.js +9 -1
  66. package/lib/public/modules/app-rendering.js +21 -602
  67. package/lib/public/modules/avatar-imprint.js +11 -8
  68. package/lib/public/modules/chat-bubble-renderer.js +152 -0
  69. package/lib/public/modules/chat-render-runtime.js +198 -0
  70. package/lib/public/modules/command-palette.js +225 -436
  71. package/lib/public/modules/dm-render.js +82 -0
  72. package/lib/public/modules/home-capsule-creation-intent.js +31 -0
  73. package/lib/public/modules/home-capsule-library.js +146 -0
  74. package/lib/public/modules/home-capsule-source.js +383 -0
  75. package/lib/public/modules/home-chat-identity.js +35 -0
  76. package/lib/public/modules/home-chat-scroll.js +77 -0
  77. package/lib/public/modules/home-chat-stream-state.js +34 -0
  78. package/lib/public/modules/home-composer-focus.js +25 -0
  79. package/lib/public/modules/home-conversations-sheet.js +179 -0
  80. package/lib/public/modules/home-debate-activity.js +48 -0
  81. package/lib/public/modules/home-debate-controls.js +295 -0
  82. package/lib/public/modules/home-debate-launch.js +41 -0
  83. package/lib/public/modules/home-debate-live.js +284 -0
  84. package/lib/public/modules/home-debate-models.js +73 -0
  85. package/lib/public/modules/home-debate-planning.js +335 -0
  86. package/lib/public/modules/home-debates-archive.js +279 -0
  87. package/lib/public/modules/home-dock-resize.js +74 -0
  88. package/lib/public/modules/home-dock.js +446 -0
  89. package/lib/public/modules/home-mate-chat.js +496 -0
  90. package/lib/public/modules/home-mate-creation.js +109 -0
  91. package/lib/public/modules/home-mate-model-picker.js +281 -0
  92. package/lib/public/modules/home-mate-selection.js +38 -0
  93. package/lib/public/modules/home-mate-settings-menu.js +131 -0
  94. package/lib/public/modules/home-mate-settings.js +383 -0
  95. package/lib/public/modules/home-session-actions.js +373 -0
  96. package/lib/public/modules/home-session-model-confirmation.js +13 -0
  97. package/lib/public/modules/home-shell.js +9 -0
  98. package/lib/public/modules/home-sidebar-chat-list.js +63 -0
  99. package/lib/public/modules/home-sidebar.js +158 -0
  100. package/lib/public/modules/home-sub-surface.js +19 -0
  101. package/lib/public/modules/home-surface-boot.js +68 -0
  102. package/lib/public/modules/home-surface.js +141 -0
  103. package/lib/public/modules/home-tools.js +271 -0
  104. package/lib/public/modules/markdown.js +50 -2
  105. package/lib/public/modules/mate-management.js +86 -0
  106. package/lib/public/modules/mate-wizard.js +0 -7
  107. package/lib/public/modules/mention.js +17 -19
  108. package/lib/public/modules/pane-bridge.js +9 -0
  109. package/lib/public/modules/profile.js +4 -5
  110. package/lib/public/modules/project-settings.js +34 -28
  111. package/lib/public/modules/project-switcher.js +11 -5
  112. package/lib/public/modules/project-workspace-assignment.js +23 -0
  113. package/lib/public/modules/search-clay-chat.js +402 -0
  114. package/lib/public/modules/server-settings.js +14 -12
  115. package/lib/public/modules/session-actions.js +1 -1
  116. package/lib/public/modules/sidebar-mates.js +56 -552
  117. package/lib/public/modules/sidebar-mobile.js +7 -64
  118. package/lib/public/modules/sidebar-presence.js +37 -0
  119. package/lib/public/modules/split-pair-ui.js +13 -13
  120. package/lib/public/modules/split-view.js +7 -0
  121. package/lib/public/modules/sticky-notes.js +7 -6
  122. package/lib/public/modules/tool-input-composition.js +48 -0
  123. package/lib/public/modules/tool-llm-status.js +167 -0
  124. package/lib/public/modules/tool-renderer-advanced.js +285 -0
  125. package/lib/public/modules/tool-renderer-chart.js +158 -0
  126. package/lib/public/modules/tool-renderer-semantics.js +35 -0
  127. package/lib/public/modules/tool-renderer.js +464 -0
  128. package/lib/public/modules/tool-runtime.js +309 -0
  129. package/lib/public/modules/tool-ui-evaluator.js +97 -0
  130. package/lib/public/modules/tool-ui-tree.js +21 -0
  131. package/lib/public/modules/tui-attention.js +10 -0
  132. package/lib/public/modules/user-settings.js +16 -23
  133. package/lib/public/modules/vendor-login.js +287 -0
  134. package/lib/public/modules/worker-proposal.js +2 -2
  135. package/lib/public/modules/workspace-assignment-card.js +149 -0
  136. package/lib/public/modules/workspace-assignment-routing.js +4 -0
  137. package/lib/public/style.css +13 -2
  138. package/lib/runtime-env.js +65 -0
  139. package/lib/sdk-bridge.js +120 -32
  140. package/lib/sdk-message-processor.js +10 -6
  141. package/lib/server-home-capsule-creation.js +36 -0
  142. package/lib/server-home-chat-events.js +287 -0
  143. package/lib/server-home-chat.js +518 -0
  144. package/lib/server-home-clay-entry.js +65 -0
  145. package/lib/server-home-clay-session-links.js +26 -0
  146. package/lib/server-home-debate-planning.js +214 -0
  147. package/lib/server-home-debates.js +137 -0
  148. package/lib/server-home-mate-creation.js +261 -0
  149. package/lib/server-home-models.js +241 -0
  150. package/lib/server-home-preferences.js +61 -0
  151. package/lib/server-mates.js +37 -0
  152. package/lib/server-tools.js +377 -0
  153. package/lib/server.js +111 -59
  154. package/lib/session-pair-mcp-server.js +6 -6
  155. package/lib/sessions.js +18 -3
  156. package/lib/tool-capsule-source.js +142 -0
  157. package/lib/tool-control-mcp-server.js +126 -0
  158. package/lib/tool-llm.js +48 -0
  159. package/lib/tool-storage.js +77 -0
  160. package/lib/tool-ui-spec-advanced.js +82 -0
  161. package/lib/tool-ui-spec.js +261 -0
  162. package/lib/tools-registry.js +286 -0
  163. package/lib/users-home-dock-preferences.js +77 -0
  164. package/lib/users-home-surface-preferences.js +99 -0
  165. package/lib/users-preferences.js +4 -7
  166. package/lib/users.js +12 -0
  167. package/lib/whats-new-content.js +3 -3
  168. package/lib/workspace-assignment-service.js +420 -0
  169. package/lib/workspace-query-mcp-server.js +154 -0
  170. package/lib/workspace-query-service.js +492 -0
  171. package/lib/ws-schema.js +93 -12
  172. package/lib/yoke/adapters/acp.js +2 -1
  173. package/lib/yoke/adapters/antigravity.js +2 -1
  174. package/lib/yoke/adapters/claude-worker.js +11 -4
  175. package/lib/yoke/adapters/claude.js +73 -43
  176. package/lib/yoke/adapters/codex.js +40 -10
  177. package/lib/yoke/adapters/kiro.js +2 -1
  178. package/lib/yoke/claude-user-input.js +38 -0
  179. package/lib/yoke/codex-app-server.js +20 -2
  180. package/lib/yoke/codex-user-input.js +64 -0
  181. package/lib/yoke/complete-once.js +164 -0
  182. package/lib/yoke/index.js +5 -1
  183. package/lib/yoke/interface.js +19 -0
  184. package/lib/yoke/mcp-bridge-server.js +2 -6
  185. package/lib/yoke/user-input.js +254 -0
  186. package/package.json +3 -2
  187. package/lib/public/css/home-chat.css +0 -380
  188. package/lib/public/modules/home-chat.js +0 -438
  189. package/lib/server-clay-home.js +0 -245
@@ -0,0 +1,667 @@
1
+ /* Home relationship and conversation navigation. */
2
+
3
+ @font-face {
4
+ font-family: "Source Serif 4";
5
+ src: url("/fonts/source-serif-4/SourceSerif4Caption-Semibold.ttf.woff2") format("woff2");
6
+ font-style: normal;
7
+ font-weight: 600;
8
+ font-display: swap;
9
+ }
10
+
11
+ .home-hub-inner { gap: 18px; }
12
+
13
+ .home-sidebar {
14
+ --home-mate-row-height: 40px;
15
+ --home-mate-row-gap: 2px;
16
+ --home-mate-list-edge: 1px;
17
+ --home-mate-list-height: calc(
18
+ var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) +
19
+ var(--home-mate-row-gap) + var(--home-mate-row-gap) + var(--home-mate-row-gap) + var(--home-mate-row-gap) + var(--home-mate-row-gap) +
20
+ var(--home-mate-list-edge) + var(--home-mate-list-edge)
21
+ );
22
+ flex: 0 0 240px;
23
+ display: flex;
24
+ flex-direction: column;
25
+ width: 240px;
26
+ min-width: 0;
27
+ min-height: 0;
28
+ padding: 0 6px 8px 0;
29
+ background: var(--bg);
30
+ }
31
+
32
+ @media (min-width: 769px) {
33
+ .home-sidebar { position: relative; }
34
+
35
+ .home-sidebar::after {
36
+ position: absolute;
37
+ top: -100vh;
38
+ right: -1px;
39
+ bottom: -100vh;
40
+ width: 1px;
41
+ background: var(--border-subtle);
42
+ content: "";
43
+ pointer-events: none;
44
+ }
45
+ }
46
+
47
+ .home-sidebar-brand-row {
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: space-between;
51
+ min-height: 44px;
52
+ padding: 0 4px 2px;
53
+ }
54
+
55
+ .home-sidebar-brand {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 10px;
59
+ color: var(--text);
60
+ }
61
+
62
+ .home-sidebar-brand img {
63
+ width: 24px;
64
+ height: 24px;
65
+ object-fit: contain;
66
+ }
67
+
68
+ .home-sidebar-brand-actions {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: 2px;
72
+ }
73
+
74
+ .home-sidebar-brand-wordmark {
75
+ display: inline-block;
76
+ color: currentColor;
77
+ font-family: "Source Serif 4", Georgia, serif;
78
+ font-size: 17px;
79
+ font-style: normal;
80
+ font-weight: 600;
81
+ font-synthesis: none;
82
+ letter-spacing: -0.012em;
83
+ line-height: 1;
84
+ text-rendering: optimizeLegibility;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ .home-sidebar-icon-btn {
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ width: 28px;
93
+ height: 28px;
94
+ padding: 0;
95
+ border: 0;
96
+ border-radius: 7px;
97
+ background: transparent;
98
+ color: var(--text-dimmer);
99
+ cursor: pointer;
100
+ }
101
+
102
+ .home-sidebar-icon-btn:hover,
103
+ .home-sidebar-icon-btn[aria-expanded="true"] {
104
+ background: rgba(var(--overlay-rgb), 0.05);
105
+ color: var(--text-secondary);
106
+ }
107
+
108
+ .home-sidebar-icon-btn .lucide {
109
+ width: 14px;
110
+ height: 14px;
111
+ }
112
+
113
+ .home-sidebar-action,
114
+ .home-sidebar-recent-row {
115
+ display: flex;
116
+ align-items: center;
117
+ width: 100%;
118
+ border: 0;
119
+ border-radius: 8px;
120
+ background: transparent;
121
+ color: var(--text-secondary);
122
+ font: inherit;
123
+ text-align: left;
124
+ cursor: pointer;
125
+ }
126
+
127
+ .home-sidebar-action {
128
+ position: relative;
129
+ gap: 8px;
130
+ min-height: 34px;
131
+ padding: 5px 8px;
132
+ font-size: 12px;
133
+ font-weight: 530;
134
+ line-height: 1.35;
135
+ }
136
+
137
+ .home-sidebar-action:hover,
138
+ .home-sidebar-recent-row:hover {
139
+ background: rgba(var(--overlay-rgb), 0.05);
140
+ color: var(--text);
141
+ }
142
+
143
+ .home-sidebar-action[aria-expanded="true"] {
144
+ background: rgba(var(--overlay-rgb), 0.055);
145
+ color: var(--text);
146
+ }
147
+
148
+ .home-sidebar-action-icon {
149
+ flex: 0 0 auto;
150
+ display: inline-flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ width: 18px;
154
+ height: 18px;
155
+ color: var(--text-muted);
156
+ }
157
+
158
+ .home-sidebar-action-icon .lucide {
159
+ width: 15px;
160
+ height: 15px;
161
+ stroke-width: 1.9;
162
+ }
163
+
164
+ .home-sidebar-action:focus-visible,
165
+ .home-sidebar-recent-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
166
+
167
+ .home-sidebar-action:disabled {
168
+ cursor: default;
169
+ opacity: 0.42;
170
+ }
171
+
172
+ .home-sidebar-processing {
173
+ flex: 0 0 auto;
174
+ width: 6px;
175
+ height: 6px;
176
+ margin-left: auto;
177
+ border-radius: 50%;
178
+ background: var(--text-secondary);
179
+ }
180
+
181
+ .home-tools-activity {
182
+ flex: 0 0 auto;
183
+ display: none;
184
+ width: 6px;
185
+ height: 6px;
186
+ margin-left: auto;
187
+ border-radius: 50%;
188
+ background: var(--text-secondary);
189
+ }
190
+
191
+ .home-tools-activity.is-active { display: block; }
192
+
193
+ .home-sidebar-section { padding: 0 4px; }
194
+
195
+ .home-sidebar-primary-actions {
196
+ display: flex;
197
+ flex: 0 0 auto;
198
+ flex-direction: column;
199
+ gap: 2px;
200
+ padding: 4px 4px 0;
201
+ }
202
+
203
+ .home-sidebar-label {
204
+ padding: 0 8px 6px;
205
+ color: var(--text-dimmer);
206
+ font-size: 9px;
207
+ font-weight: 680;
208
+ letter-spacing: 0.09em;
209
+ text-transform: uppercase;
210
+ }
211
+
212
+ .home-sidebar-mate-section {
213
+ flex: 0 0 auto;
214
+ display: flex;
215
+ flex-direction: column;
216
+ min-height: 0;
217
+ margin: 13px 4px 0;
218
+ padding: 0;
219
+ overflow: hidden;
220
+ }
221
+
222
+ .home-sidebar-mate-section .home-sidebar-label {
223
+ padding-left: 7px;
224
+ }
225
+
226
+ .home-mate-list {
227
+ flex: 0 0 var(--home-mate-list-height);
228
+ display: flex;
229
+ flex-direction: column;
230
+ gap: var(--home-mate-row-gap);
231
+ width: 100%;
232
+ min-height: var(--home-mate-list-height);
233
+ max-height: var(--home-mate-list-height);
234
+ padding: var(--home-mate-list-edge) 2px var(--home-mate-list-edge) 0;
235
+ overflow-x: hidden;
236
+ overflow-y: auto;
237
+ scrollbar-width: thin;
238
+ }
239
+
240
+ .home-mate-list-item { flex: 0 0 auto; }
241
+
242
+ .home-mate-list-row {
243
+ display: grid;
244
+ grid-template-columns: 28px minmax(0, 1fr) auto;
245
+ align-items: center;
246
+ gap: 9px;
247
+ width: 100%;
248
+ min-height: var(--home-mate-row-height);
249
+ padding: 4px 7px 4px 5px;
250
+ border: 0;
251
+ border-radius: 8px;
252
+ background: transparent;
253
+ color: var(--text-secondary);
254
+ font: inherit;
255
+ text-align: left;
256
+ cursor: pointer;
257
+ }
258
+
259
+ .home-mate-list-row:hover,
260
+ .home-mate-list-row.is-active {
261
+ background: rgba(var(--overlay-rgb), 0.045);
262
+ color: var(--text);
263
+ }
264
+
265
+ .home-mate-list-row.is-active {
266
+ background: rgba(var(--overlay-rgb), 0.055);
267
+ color: var(--text);
268
+ font-weight: 620;
269
+ }
270
+
271
+ .home-mate-list-row:focus-visible {
272
+ outline: 2px solid var(--accent);
273
+ outline-offset: -2px;
274
+ }
275
+
276
+ .home-mate-list-avatar-wrap {
277
+ position: relative;
278
+ width: 28px;
279
+ height: 28px;
280
+ }
281
+
282
+ .home-mate-list-avatar {
283
+ display: block;
284
+ width: 28px;
285
+ height: 28px;
286
+ border: 1px solid var(--border-subtle);
287
+ border-radius: 50%;
288
+ object-fit: cover;
289
+ }
290
+
291
+ .home-mate-list-create {
292
+ color: var(--text-muted);
293
+ }
294
+
295
+ .home-mate-list-create-icon {
296
+ display: grid;
297
+ width: 28px;
298
+ height: 28px;
299
+ place-items: center;
300
+ border: 1px dashed var(--border);
301
+ border-radius: 50%;
302
+ background: color-mix(in srgb, var(--accent-bg) 54%, transparent);
303
+ color: var(--accent);
304
+ }
305
+
306
+ .home-mate-list-create-icon .lucide {
307
+ width: 14px;
308
+ height: 14px;
309
+ stroke-width: 1.8;
310
+ }
311
+
312
+ .home-mate-list-create:hover .home-mate-list-create-icon {
313
+ border-color: color-mix(in srgb, var(--accent) 48%, var(--border));
314
+ background: var(--accent-bg);
315
+ }
316
+
317
+ .home-mate-list-activity {
318
+ position: absolute;
319
+ right: -1px;
320
+ bottom: -1px;
321
+ width: 8px;
322
+ height: 8px;
323
+ border: 2px solid var(--bg);
324
+ border-radius: 50%;
325
+ background: var(--accent);
326
+ }
327
+
328
+ .home-mate-list-name {
329
+ min-width: 0;
330
+ overflow: hidden;
331
+ font-size: 12px;
332
+ font-weight: 600;
333
+ text-overflow: ellipsis;
334
+ white-space: nowrap;
335
+ }
336
+
337
+ .home-mate-list-copy {
338
+ min-width: 0;
339
+ display: flex;
340
+ flex-direction: column;
341
+ gap: 1px;
342
+ }
343
+
344
+ .home-mate-list-model {
345
+ overflow: hidden;
346
+ color: var(--text-dimmer);
347
+ font-size: 8px;
348
+ font-weight: 500;
349
+ line-height: 1.2;
350
+ text-overflow: ellipsis;
351
+ white-space: nowrap;
352
+ }
353
+
354
+ .home-mate-list-unread {
355
+ min-width: 19px;
356
+ padding: 2px 5px;
357
+ border-radius: 999px;
358
+ background: var(--bg-hover);
359
+ color: var(--text-secondary);
360
+ font-size: 9px;
361
+ font-weight: 700;
362
+ text-align: center;
363
+ }
364
+
365
+ .home-mate-list-empty {
366
+ padding: 7px;
367
+ color: var(--text-dimmer);
368
+ font-size: 10px;
369
+ }
370
+
371
+ .home-sidebar-recents {
372
+ flex: 1 1 auto;
373
+ display: flex;
374
+ flex-direction: column;
375
+ min-height: 0;
376
+ margin: 16px 4px 0;
377
+ padding: 0;
378
+ overflow: hidden;
379
+ }
380
+
381
+ .home-sidebar-recents-heading {
382
+ flex: 0 0 auto;
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: space-between;
386
+ gap: 8px;
387
+ min-height: 25px;
388
+ padding: 0 2px 5px 7px;
389
+ }
390
+
391
+ .home-sidebar-recents-heading .home-sidebar-label { padding: 0; }
392
+
393
+ .home-chat-scope {
394
+ flex: 0 0 auto;
395
+ display: inline-flex;
396
+ align-items: center;
397
+ gap: 1px;
398
+ padding: 2px;
399
+ border: 1px solid var(--border-subtle);
400
+ border-radius: 7px;
401
+ background: rgba(var(--overlay-rgb), 0.025);
402
+ }
403
+
404
+ .home-chat-scope-option {
405
+ min-width: 29px;
406
+ height: 20px;
407
+ padding: 0 6px;
408
+ border: 0;
409
+ border-radius: 5px;
410
+ background: transparent;
411
+ color: var(--text-dimmer);
412
+ font: inherit;
413
+ font-size: 9px;
414
+ font-weight: 590;
415
+ line-height: 20px;
416
+ cursor: pointer;
417
+ }
418
+
419
+ .home-chat-scope-option:hover {
420
+ color: var(--text-secondary);
421
+ }
422
+
423
+ .home-chat-scope-option[aria-pressed="true"] {
424
+ background: var(--bg-hover);
425
+ color: var(--text);
426
+ }
427
+
428
+ .home-chat-scope-option:focus-visible {
429
+ outline: 2px solid var(--accent);
430
+ outline-offset: 1px;
431
+ }
432
+
433
+ .home-sidebar-recent-list {
434
+ flex: 1 1 auto;
435
+ display: flex;
436
+ flex-direction: column;
437
+ gap: 1px;
438
+ min-height: 0;
439
+ padding: 0 2px 2px 0;
440
+ overflow-x: hidden;
441
+ overflow-y: auto;
442
+ overscroll-behavior: contain;
443
+ scrollbar-width: thin;
444
+ }
445
+
446
+ .home-sidebar-recent-row {
447
+ gap: 8px;
448
+ min-height: 40px;
449
+ padding: 6px 8px;
450
+ font-size: 11px;
451
+ }
452
+
453
+ .home-sidebar-recent-copy {
454
+ flex: 1 1 auto;
455
+ min-width: 0;
456
+ display: flex;
457
+ flex-direction: column;
458
+ gap: 1px;
459
+ }
460
+
461
+ .home-sidebar-recent-title,
462
+ .home-sidebar-recent-mate {
463
+ overflow: hidden;
464
+ text-overflow: ellipsis;
465
+ white-space: nowrap;
466
+ }
467
+
468
+ .home-sidebar-recent-mate {
469
+ color: var(--text-dimmer);
470
+ font-size: 9px;
471
+ line-height: 1.3;
472
+ }
473
+
474
+ .home-sidebar-recent-empty {
475
+ padding: 7px 8px;
476
+ color: var(--text-dimmer);
477
+ font-size: 10px;
478
+ line-height: 1.45;
479
+ }
480
+
481
+ .home-sidebar-expand {
482
+ position: absolute;
483
+ top: 8px;
484
+ left: 10px;
485
+ z-index: 6;
486
+ display: none;
487
+ align-items: center;
488
+ gap: 7px;
489
+ min-height: 30px;
490
+ padding: 4px 8px;
491
+ border: 1px solid transparent;
492
+ border-radius: 8px;
493
+ background: transparent;
494
+ color: var(--text-muted);
495
+ font: inherit;
496
+ font-size: 11px;
497
+ cursor: pointer;
498
+ }
499
+
500
+ .home-sidebar-expand:hover {
501
+ border-color: var(--border-subtle);
502
+ background: rgba(var(--overlay-rgb), 0.045);
503
+ color: var(--text-secondary);
504
+ }
505
+
506
+ .home-sidebar-expand .lucide { width: 14px; height: 14px; }
507
+
508
+ .home-sidebar-expand-wordmark {
509
+ flex: 0 0 auto;
510
+ font-size: 15px;
511
+ letter-spacing: -0.01em;
512
+ }
513
+
514
+ .home-sidebar-backdrop { display: none; }
515
+
516
+ #home-hub.home-sidebar-collapsed .home-sidebar { display: none; }
517
+ #home-hub.home-sidebar-collapsed .home-sidebar-expand { display: inline-flex; }
518
+ #home-hub.dock-focus .home-sidebar-expand { display: none; }
519
+ #home-hub.home-sidebar-collapsed .home-hub-inner { gap: 0; }
520
+
521
+ .home-conversations-sheet {
522
+ position: fixed;
523
+ z-index: 1250;
524
+ inset: 0;
525
+ display: flex;
526
+ align-items: center;
527
+ justify-content: center;
528
+ padding: 24px;
529
+ }
530
+
531
+ .home-conversations-sheet-backdrop {
532
+ position: absolute;
533
+ inset: 0;
534
+ border: 0;
535
+ background: color-mix(in srgb, var(--bg) 76%, transparent);
536
+ }
537
+
538
+ .home-conversations-sheet-panel {
539
+ position: relative;
540
+ display: flex;
541
+ flex-direction: column;
542
+ width: min(620px, calc(100vw - 32px));
543
+ max-height: min(680px, calc(100vh - 48px));
544
+ overflow: hidden;
545
+ border: 1px solid var(--border-subtle);
546
+ border-radius: 14px;
547
+ background: var(--bg);
548
+ box-shadow: 0 24px 70px rgba(var(--shadow-rgb), 0.24);
549
+ }
550
+
551
+ .home-conversations-sheet-header {
552
+ display: flex;
553
+ align-items: center;
554
+ justify-content: space-between;
555
+ padding: 17px 18px 12px;
556
+ }
557
+
558
+ .home-conversations-sheet-title { font-size: 14px; font-weight: 680; }
559
+ .home-conversations-sheet-search { position: relative; padding: 0 16px 12px; }
560
+ .home-conversations-sheet-search .lucide {
561
+ position: absolute;
562
+ top: 10px;
563
+ left: 28px;
564
+ width: 14px;
565
+ height: 14px;
566
+ color: var(--text-dimmer);
567
+ pointer-events: none;
568
+ }
569
+ .home-conversations-sheet-search input {
570
+ width: 100%;
571
+ height: 34px;
572
+ padding: 7px 10px 7px 34px;
573
+ border: 1px solid var(--border-subtle);
574
+ border-radius: 9px;
575
+ outline: none;
576
+ background: rgba(var(--overlay-rgb), 0.025);
577
+ color: var(--text);
578
+ font: inherit;
579
+ font-size: 12px;
580
+ }
581
+ .home-conversations-sheet-search input:focus { border-color: var(--border); }
582
+ .home-conversations-sheet-list { overflow-y: auto; padding: 0 10px 12px; }
583
+ .home-conversations-sheet-row {
584
+ display: grid;
585
+ grid-template-columns: minmax(0, 1fr) auto;
586
+ gap: 12px;
587
+ width: 100%;
588
+ padding: 10px 9px;
589
+ border: 0;
590
+ border-radius: 9px;
591
+ background: transparent;
592
+ color: var(--text);
593
+ font: inherit;
594
+ text-align: left;
595
+ cursor: pointer;
596
+ }
597
+ .home-conversations-sheet-row:hover { background: rgba(var(--overlay-rgb), 0.05); }
598
+ .home-conversations-sheet-copy { min-width: 0; }
599
+ .home-conversations-sheet-row-title {
600
+ overflow: hidden;
601
+ font-size: 12px;
602
+ font-weight: 560;
603
+ text-overflow: ellipsis;
604
+ white-space: nowrap;
605
+ }
606
+ .home-conversations-sheet-row-mate,
607
+ .home-conversations-sheet-empty {
608
+ color: var(--text-dimmer);
609
+ font-size: 10px;
610
+ }
611
+ .home-conversations-sheet-row-mate { margin-top: 3px; }
612
+ .home-conversations-sheet-empty { padding: 32px 12px; text-align: center; }
613
+
614
+ @media (max-width: 900px) {
615
+ .home-sidebar { flex-basis: 232px; width: 232px; }
616
+ .home-hub-inner { gap: 12px; }
617
+ }
618
+
619
+ @media (max-width: 768px) {
620
+ #home-hub.dock-split .home-sidebar,
621
+ #home-hub.dock-focus .home-sidebar,
622
+ #home-hub.dock-split .home-sidebar-backdrop,
623
+ #home-hub.dock-focus .home-sidebar-backdrop,
624
+ #home-hub.dock-split .home-sidebar-expand,
625
+ #home-hub.dock-focus .home-sidebar-expand { display: none; }
626
+ .home-sidebar {
627
+ position: absolute;
628
+ z-index: 8;
629
+ top: calc(8px + var(--safe-top));
630
+ bottom: calc(64px + var(--safe-bottom, 0px));
631
+ left: 8px;
632
+ width: min(320px, calc(100vw - 24px));
633
+ padding: 6px;
634
+ border: 1px solid var(--border-subtle);
635
+ border-radius: 12px;
636
+ box-shadow: 12px 18px 44px rgba(var(--shadow-rgb), 0.22);
637
+ }
638
+ .home-sidebar-backdrop {
639
+ position: absolute;
640
+ z-index: 7;
641
+ inset: 0;
642
+ display: block;
643
+ border: 0;
644
+ background: rgba(var(--shadow-rgb), 0.13);
645
+ }
646
+ #home-hub.home-sidebar-collapsed .home-sidebar-backdrop { display: none; }
647
+ .home-conversations-sheet { align-items: flex-end; padding: 8px 8px calc(64px + var(--safe-bottom, 0px)); }
648
+ .home-conversations-sheet-panel { width: 100%; max-height: calc(100vh - 84px); border-radius: 14px 14px 10px 10px; }
649
+ }
650
+
651
+ @media (max-width: 768px) and (max-height: 520px) {
652
+ .home-sidebar {
653
+ --home-mate-list-height: calc(
654
+ var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) + var(--home-mate-row-height) +
655
+ var(--home-mate-row-gap) + var(--home-mate-row-gap) + var(--home-mate-row-gap) +
656
+ var(--home-mate-list-edge) + var(--home-mate-list-edge)
657
+ );
658
+ }
659
+
660
+ .home-sidebar-mate-section { margin-top: 8px; }
661
+ .home-sidebar-recents { margin-top: 8px; }
662
+ }
663
+
664
+ @media (prefers-reduced-motion: reduce) {
665
+ .home-sidebar,
666
+ .home-conversations-sheet-panel { animation: none; }
667
+ }
@@ -895,11 +895,10 @@
895
895
  box-shadow: 0 0 0 2px var(--accent);
896
896
  }
897
897
 
898
- /* Primary mate: full color (no desaturate), no ring */
898
+ /* Primary Mate uses its source image without a color-altering filter. */
899
899
  .icon-strip-primary-mate {
900
900
  opacity: 1;
901
901
  border-radius: 8px;
902
- filter: saturate(1) !important;
903
902
  }
904
903
 
905
904
  /* Online status dot (bottom-right on avatar, like project blink dot) */