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,34 @@
1
+ .home-mate-proposal {
2
+ width: min(620px, calc(100% - 40px));
3
+ margin: 12px auto;
4
+ padding: 20px;
5
+ border: 1px solid var(--border);
6
+ border-radius: 14px;
7
+ background: color-mix(in srgb, var(--bg-alt) 92%, transparent);
8
+ box-shadow: 0 16px 40px color-mix(in srgb, var(--bg) 28%, transparent);
9
+ color: var(--text);
10
+ }
11
+ .home-mate-proposal-eyebrow { color: var(--accent); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
12
+ .home-mate-proposal-name { margin: 5px 0 4px; font: inherit; font-size: 20px; font-weight: 700; letter-spacing: -.02em; }
13
+ .home-mate-proposal-bio { margin: 0 0 16px; color: var(--text-muted); font-size: 13px; line-height: 1.55; }
14
+ .home-mate-proposal-facts { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 8px 14px; margin: 0; padding: 14px 0; border-block: 1px solid var(--border); font-size: 12px; line-height: 1.5; }
15
+ .home-mate-proposal-facts dt { color: var(--text-dimmer); }
16
+ .home-mate-proposal-facts dd { margin: 0; color: var(--text-muted); }
17
+ .home-mate-proposal-identity { margin-top: 14px; color: var(--text-muted); font-size: 12px; }
18
+ .home-mate-proposal-identity summary { cursor: pointer; font-weight: 650; }
19
+ .home-mate-proposal-identity pre { max-height: 260px; margin: 10px 0 0; padding: 12px; overflow: auto; border-radius: 9px; background: var(--code-bg); color: var(--text-muted); font: 11px/1.55 var(--font-mono); white-space: pre-wrap; }
20
+ .home-mate-proposal-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 16px; }
21
+ .home-mate-proposal-actions button { min-height: 34px; padding: 0 13px; border-radius: 8px; font: inherit; font-size: 12px; font-weight: 650; cursor: pointer; }
22
+ .home-mate-proposal-create { border: 1px solid var(--accent); background: var(--accent); color: var(--accent-text, #fff); }
23
+ .home-mate-proposal-open { border: 1px solid var(--accent); background: var(--accent); color: var(--accent-text, #fff); }
24
+ .home-mate-proposal-cancel { border: 1px solid var(--border); background: transparent; color: var(--text-muted); }
25
+ .home-mate-proposal-actions button:focus-visible, .home-mate-proposal-identity summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
26
+ .home-mate-proposal-actions button:disabled { cursor: default; opacity: .58; }
27
+ .home-mate-proposal-error { color: var(--error); font-size: 12px; }
28
+ .home-mate-proposal-status { color: var(--success); font-size: 12px; font-weight: 650; }
29
+ @media (max-width: 640px) {
30
+ .home-mate-proposal { width: calc(100% - 24px); padding: 16px; }
31
+ .home-mate-proposal-facts { grid-template-columns: 1fr; gap: 3px; }
32
+ .home-mate-proposal-facts dd + dt { margin-top: 7px; }
33
+ .home-mate-proposal-actions button { flex: 1; }
34
+ }
@@ -0,0 +1,131 @@
1
+ /* Vendor and model controls shared by the Mate settings dialog. */
2
+
3
+ .home-mate-model-note {
4
+ max-width: 560px;
5
+ margin: 0 0 18px;
6
+ color: var(--text-muted);
7
+ font-size: 12px;
8
+ line-height: 1.55;
9
+ }
10
+
11
+ .home-mate-model-current {
12
+ margin: -8px 0 20px;
13
+ color: var(--text-dimmer);
14
+ font-size: 11px;
15
+ }
16
+
17
+ .home-mate-model-section-label {
18
+ margin: 18px 0 8px;
19
+ color: var(--text-dimmer);
20
+ font-size: 10px;
21
+ font-weight: 700;
22
+ letter-spacing: 0.08em;
23
+ text-transform: uppercase;
24
+ }
25
+
26
+ .home-mate-vendor-list {
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ gap: 6px;
30
+ }
31
+
32
+ .home-mate-vendor-option {
33
+ padding: 7px 11px;
34
+ border: 1px solid transparent;
35
+ border-radius: 999px;
36
+ background: rgba(var(--overlay-rgb), 0.035);
37
+ color: var(--text-muted);
38
+ font: inherit;
39
+ font-size: 12px;
40
+ cursor: pointer;
41
+ }
42
+
43
+ .home-mate-vendor-option:hover,
44
+ .home-mate-vendor-option[aria-pressed="true"] {
45
+ border-color: var(--border-subtle);
46
+ background: rgba(var(--overlay-rgb), 0.075);
47
+ color: var(--text);
48
+ }
49
+
50
+ .home-mate-vendor-option[aria-pressed="true"] { font-weight: 650; }
51
+
52
+ .home-mate-model-muted {
53
+ color: var(--text-dimmer);
54
+ font-size: 11px;
55
+ }
56
+
57
+ .home-mate-model-list {
58
+ display: grid;
59
+ gap: 6px;
60
+ }
61
+
62
+ .home-mate-model-option,
63
+ .home-mate-model-retry {
64
+ border: 1px solid var(--border-subtle);
65
+ background: transparent;
66
+ color: var(--text-secondary);
67
+ font: inherit;
68
+ cursor: pointer;
69
+ }
70
+
71
+ .home-mate-model-option {
72
+ display: flex;
73
+ align-items: baseline;
74
+ justify-content: space-between;
75
+ gap: 16px;
76
+ width: 100%;
77
+ padding: 11px 12px;
78
+ border-radius: 8px;
79
+ text-align: left;
80
+ }
81
+
82
+ .home-mate-model-option:hover,
83
+ .home-mate-model-option[aria-pressed="true"] {
84
+ border-color: var(--border);
85
+ background: rgba(var(--overlay-rgb), 0.045);
86
+ color: var(--text);
87
+ }
88
+
89
+ .home-mate-model-option[aria-pressed="true"] { font-weight: 600; }
90
+ .home-mate-vendor-option:disabled,
91
+ .home-mate-model-option:disabled { cursor: wait; opacity: 0.62; }
92
+
93
+ .home-mate-model-option small {
94
+ overflow: hidden;
95
+ color: var(--text-dimmer);
96
+ font-size: 10px;
97
+ font-weight: 400;
98
+ text-overflow: ellipsis;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .home-mate-model-state {
103
+ padding: 28px 0;
104
+ color: var(--text-muted);
105
+ font-size: 12px;
106
+ text-align: center;
107
+ }
108
+
109
+ .home-mate-model-retry {
110
+ display: block;
111
+ margin: 14px auto 0;
112
+ padding: 7px 11px;
113
+ border-radius: 7px;
114
+ }
115
+
116
+ .home-mate-model-retry:hover { background: rgba(var(--overlay-rgb), 0.045); color: var(--text); }
117
+
118
+ .home-mate-model-selection-status {
119
+ min-height: 20px;
120
+ padding-top: 10px;
121
+ color: var(--text-muted);
122
+ font-size: 11px;
123
+ }
124
+
125
+ .home-mate-vendor-option:focus-visible,
126
+ .home-mate-model-option:focus-visible,
127
+ .home-mate-model-retry:focus-visible {
128
+ border-radius: 4px;
129
+ outline: 2px solid var(--accent);
130
+ outline-offset: 3px;
131
+ }
@@ -0,0 +1,344 @@
1
+ /* Restrained row actions and centered Mate settings. */
2
+
3
+ .home-mate-list-item {
4
+ display: grid;
5
+ grid-template-columns: minmax(0, 1fr) 28px;
6
+ align-items: center;
7
+ border-radius: 8px;
8
+ }
9
+
10
+ .home-mate-list-item.is-active {
11
+ background: rgba(var(--overlay-rgb), 0.055);
12
+ }
13
+
14
+ .home-mate-list-item.is-active .home-mate-list-row { background: transparent; }
15
+
16
+ .home-mate-list-overflow {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ width: 26px;
21
+ height: 28px;
22
+ padding: 0;
23
+ border: 0;
24
+ border-radius: 7px;
25
+ background: transparent;
26
+ color: var(--text-secondary);
27
+ cursor: pointer;
28
+ opacity: 0;
29
+ transition: opacity 120ms ease-out;
30
+ }
31
+
32
+ .home-mate-list-item:hover .home-mate-list-overflow,
33
+ .home-mate-list-item:focus-within .home-mate-list-overflow,
34
+ .home-mate-list-overflow:focus-visible,
35
+ .home-mate-list-overflow[aria-expanded="true"] { opacity: 1; }
36
+
37
+ .home-mate-list-overflow:hover,
38
+ .home-mate-list-overflow[aria-expanded="true"] {
39
+ background: rgba(var(--overlay-rgb), 0.07);
40
+ color: var(--text);
41
+ }
42
+
43
+ .home-mate-list-overflow:focus-visible {
44
+ outline: 2px solid var(--accent);
45
+ outline-offset: -2px;
46
+ }
47
+
48
+ .home-mate-list-overflow-mark {
49
+ display: block;
50
+ font-family: sans-serif;
51
+ font-size: 9px;
52
+ font-weight: 700;
53
+ letter-spacing: 0.08em;
54
+ line-height: 1;
55
+ transform: translateY(-1px);
56
+ }
57
+
58
+ .home-mate-row-menu {
59
+ position: fixed;
60
+ z-index: 9050;
61
+ min-width: 166px;
62
+ padding: 5px;
63
+ border: 1px solid var(--border);
64
+ border-radius: 9px;
65
+ background: var(--bg-elevated, var(--bg));
66
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.16);
67
+ }
68
+
69
+ .home-mate-row-menu-item {
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 9px;
73
+ width: 100%;
74
+ min-height: 34px;
75
+ padding: 7px 9px;
76
+ border: 0;
77
+ border-radius: 6px;
78
+ background: transparent;
79
+ color: var(--text-secondary);
80
+ font: inherit;
81
+ font-size: 12px;
82
+ text-align: left;
83
+ cursor: pointer;
84
+ }
85
+
86
+ .home-mate-row-menu-item:hover,
87
+ .home-mate-row-menu-item:focus-visible {
88
+ outline: none;
89
+ background: var(--bg-hover);
90
+ color: var(--text);
91
+ }
92
+
93
+ .home-mate-row-menu-item .lucide { width: 14px; height: 14px; }
94
+
95
+ .home-mate-settings-overlay {
96
+ position: fixed;
97
+ inset: 0;
98
+ z-index: 9000;
99
+ display: grid;
100
+ place-items: center;
101
+ padding: 24px;
102
+ background: rgba(0, 0, 0, 0.38);
103
+ backdrop-filter: blur(2px);
104
+ }
105
+
106
+ body.home-mate-settings-open .profile-popover { z-index: 9050; }
107
+ body.home-mate-settings-open #confirm-modal { z-index: 9100; }
108
+
109
+ .home-mate-settings-dialog {
110
+ display: flex;
111
+ width: min(720px, calc(100vw - 48px));
112
+ height: min(590px, calc(100vh - 64px));
113
+ max-height: 720px;
114
+ flex-direction: column;
115
+ overflow: hidden;
116
+ border: 1px solid var(--border);
117
+ border-radius: 14px;
118
+ background: var(--bg);
119
+ box-shadow: 0 24px 72px rgba(0, 0, 0, 0.24);
120
+ animation: home-mate-settings-in 140ms ease-out;
121
+ }
122
+
123
+ @keyframes home-mate-settings-in {
124
+ from { opacity: 0; transform: translateY(5px) scale(0.99); }
125
+ to { opacity: 1; transform: translateY(0) scale(1); }
126
+ }
127
+
128
+ .home-mate-settings-header {
129
+ display: flex;
130
+ flex: 0 0 auto;
131
+ align-items: center;
132
+ justify-content: space-between;
133
+ min-height: 72px;
134
+ padding: 14px 18px 13px 22px;
135
+ border-bottom: 1px solid var(--border-subtle);
136
+ }
137
+
138
+ .home-mate-settings-header > div {
139
+ display: flex;
140
+ min-width: 0;
141
+ flex-direction: column;
142
+ gap: 3px;
143
+ }
144
+
145
+ .home-mate-settings-header span {
146
+ overflow: hidden;
147
+ color: var(--text-dimmer);
148
+ font-size: 10px;
149
+ font-weight: 620;
150
+ letter-spacing: 0.02em;
151
+ text-overflow: ellipsis;
152
+ white-space: nowrap;
153
+ }
154
+
155
+ .home-mate-settings-header h2 {
156
+ margin: 0;
157
+ color: var(--text);
158
+ font-size: 17px;
159
+ font-weight: 650;
160
+ letter-spacing: -0.015em;
161
+ }
162
+
163
+ .home-mate-settings-close {
164
+ display: inline-flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ width: 32px;
168
+ height: 32px;
169
+ padding: 0;
170
+ border: 0;
171
+ border-radius: 8px;
172
+ background: transparent;
173
+ color: var(--text-dimmer);
174
+ cursor: pointer;
175
+ }
176
+
177
+ .home-mate-settings-close:hover { background: var(--bg-hover); color: var(--text); }
178
+ .home-mate-settings-close:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
179
+ .home-mate-settings-close .lucide { width: 16px; height: 16px; }
180
+
181
+ .home-mate-settings-layout {
182
+ display: grid;
183
+ min-height: 0;
184
+ flex: 1 1 auto;
185
+ grid-template-columns: 172px minmax(0, 1fr);
186
+ }
187
+
188
+ .home-mate-settings-nav {
189
+ display: flex;
190
+ flex-direction: column;
191
+ gap: 2px;
192
+ padding: 14px 10px;
193
+ border-right: 1px solid var(--border-subtle);
194
+ background: color-mix(in srgb, var(--bg-hover) 38%, var(--bg));
195
+ }
196
+
197
+ .home-mate-settings-nav button {
198
+ width: 100%;
199
+ min-height: 36px;
200
+ padding: 8px 10px;
201
+ border: 0;
202
+ border-radius: 7px;
203
+ background: transparent;
204
+ color: var(--text-secondary);
205
+ font: inherit;
206
+ font-size: 12px;
207
+ font-weight: 540;
208
+ text-align: left;
209
+ cursor: pointer;
210
+ }
211
+
212
+ .home-mate-settings-nav button:hover { background: rgba(var(--overlay-rgb), 0.045); color: var(--text); }
213
+ .home-mate-settings-nav button.is-active { background: rgba(var(--overlay-rgb), 0.065); color: var(--text); font-weight: 640; }
214
+ .home-mate-settings-nav button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
215
+
216
+ .home-mate-settings-content { min-width: 0; min-height: 0; overflow-y: auto; }
217
+
218
+ .home-mate-settings-body {
219
+ display: flex;
220
+ flex-direction: column;
221
+ gap: 12px;
222
+ max-width: 520px;
223
+ padding: 24px 26px 30px;
224
+ }
225
+
226
+ .home-mate-settings-identity,
227
+ .home-mate-settings-summary,
228
+ .home-mate-settings-memory {
229
+ padding-bottom: 16px;
230
+ border-bottom: 1px solid var(--border-subtle);
231
+ }
232
+
233
+ .home-mate-settings-identity > span {
234
+ color: var(--text-dimmer);
235
+ font-size: 9px;
236
+ font-weight: 680;
237
+ letter-spacing: 0.08em;
238
+ text-transform: uppercase;
239
+ }
240
+
241
+ .home-mate-settings-identity h3,
242
+ .home-mate-settings-summary h3,
243
+ .home-mate-settings-memory h3 {
244
+ margin: 5px 0 4px;
245
+ color: var(--text);
246
+ font-size: 14px;
247
+ font-weight: 650;
248
+ }
249
+
250
+ .home-mate-settings-identity p,
251
+ .home-mate-settings-summary p,
252
+ .home-mate-settings-memory p {
253
+ margin: 0;
254
+ color: var(--text-secondary);
255
+ font-size: 12px;
256
+ line-height: 1.55;
257
+ }
258
+
259
+ .home-mate-settings-actions { display: flex; flex-wrap: wrap; gap: 8px; }
260
+
261
+ .home-mate-settings-action {
262
+ display: inline-flex;
263
+ align-items: center;
264
+ gap: 8px;
265
+ min-height: 34px;
266
+ padding: 7px 10px;
267
+ border: 1px solid var(--border);
268
+ border-radius: 8px;
269
+ background: var(--bg);
270
+ color: var(--text-secondary);
271
+ font: inherit;
272
+ font-size: 11px;
273
+ font-weight: 620;
274
+ cursor: pointer;
275
+ }
276
+
277
+ .home-mate-settings-action:hover { background: var(--bg-hover); color: var(--text); }
278
+ .home-mate-settings-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
279
+ .home-mate-settings-action.is-danger { color: var(--danger); }
280
+ .home-mate-settings-action .lucide { width: 14px; height: 14px; }
281
+
282
+ .home-mate-settings-empty {
283
+ padding: 20px 0;
284
+ color: var(--text-dimmer);
285
+ font-size: 12px;
286
+ line-height: 1.5;
287
+ }
288
+
289
+ .home-mate-settings-file {
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 9px;
293
+ min-height: 38px;
294
+ padding: 8px 10px;
295
+ border: 1px solid var(--border-subtle);
296
+ border-radius: 8px;
297
+ color: var(--text-secondary);
298
+ font-size: 12px;
299
+ }
300
+
301
+ .home-mate-settings-file .lucide { width: 14px; height: 14px; color: var(--text-dimmer); }
302
+
303
+ @media (hover: none), (pointer: coarse) {
304
+ .home-mate-list-overflow { opacity: 0.68; }
305
+ }
306
+
307
+ @media (max-width: 768px) {
308
+ #home-hub.home-settings-drawer-masked .home-sidebar,
309
+ #home-hub.home-settings-drawer-masked .home-sidebar-backdrop { visibility: hidden; }
310
+
311
+ .home-mate-list-overflow { opacity: 1; }
312
+
313
+ .home-mate-settings-overlay {
314
+ padding: max(8px, var(--safe-top)) 0 max(8px, var(--safe-bottom, 0px));
315
+ background: rgba(0, 0, 0, 0.28);
316
+ }
317
+
318
+ .home-mate-settings-dialog {
319
+ width: 100%;
320
+ height: 100%;
321
+ max-height: none;
322
+ border-right: 0;
323
+ border-left: 0;
324
+ border-radius: 0;
325
+ }
326
+
327
+ .home-mate-settings-header { min-height: 62px; padding: 10px 12px 10px 16px; }
328
+ .home-mate-settings-layout { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
329
+ .home-mate-settings-nav {
330
+ flex-direction: row;
331
+ gap: 4px;
332
+ padding: 8px 10px;
333
+ overflow-x: auto;
334
+ border-right: 0;
335
+ border-bottom: 1px solid var(--border-subtle);
336
+ }
337
+ .home-mate-settings-nav button { width: auto; min-width: max-content; text-align: center; }
338
+ .home-mate-settings-body { padding: 20px 18px 28px; }
339
+ }
340
+
341
+ @media (prefers-reduced-motion: reduce) {
342
+ .home-mate-list-overflow { transition: none; }
343
+ .home-mate-settings-dialog { animation: none; }
344
+ }