codexmate 0.0.32 → 0.0.34

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 (148) hide show
  1. package/README.md +147 -363
  2. package/README.zh.md +147 -371
  3. package/cli/agents-files.js +230 -224
  4. package/cli/archive-helpers.js +453 -446
  5. package/cli/auth-profiles.js +375 -375
  6. package/cli/builtin-proxy.js +1725 -1725
  7. package/cli/claude-proxy.js +1022 -1022
  8. package/cli/config-bootstrap.js +402 -402
  9. package/cli/config-health.js +454 -454
  10. package/cli/doctor-core.js +903 -903
  11. package/cli/import-skills-url.js +356 -356
  12. package/cli/local-bridge.js +556 -324
  13. package/cli/openai-bridge.js +1653 -1653
  14. package/cli/openclaw-config.js +629 -629
  15. package/cli/session-convert-args.js +69 -69
  16. package/cli/session-convert-io.js +82 -82
  17. package/cli/session-convert.js +150 -150
  18. package/cli/session-usage.concurrent.js +28 -28
  19. package/cli/session-usage.js +118 -118
  20. package/cli/session-usage.models.js +176 -176
  21. package/cli/skills.js +1141 -1141
  22. package/cli/update.js +171 -0
  23. package/cli/zip-commands.js +510 -510
  24. package/cli.js +16079 -15829
  25. package/lib/automation.js +404 -404
  26. package/lib/cli-file-utils.js +151 -151
  27. package/lib/cli-models-utils.js +440 -440
  28. package/lib/cli-network-utils.js +190 -190
  29. package/lib/cli-path-utils.js +85 -85
  30. package/lib/cli-session-utils.js +121 -121
  31. package/lib/cli-sessions.js +427 -426
  32. package/lib/cli-utils.js +155 -155
  33. package/lib/cli-webhook.js +154 -126
  34. package/lib/download-artifacts.js +92 -92
  35. package/lib/mcp-stdio.js +453 -453
  36. package/lib/task-orchestrator.js +869 -869
  37. package/lib/text-diff.js +303 -303
  38. package/lib/win-tray.js +119 -0
  39. package/lib/workflow-engine.js +340 -340
  40. package/package.json +76 -76
  41. package/plugins/README.md +20 -20
  42. package/plugins/README.zh-CN.md +20 -20
  43. package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
  44. package/plugins/prompt-templates/computed.mjs +253 -253
  45. package/plugins/prompt-templates/index.mjs +8 -8
  46. package/plugins/prompt-templates/manifest.mjs +15 -15
  47. package/plugins/prompt-templates/methods.mjs +553 -553
  48. package/plugins/prompt-templates/overview.mjs +91 -91
  49. package/plugins/prompt-templates/ownership.mjs +19 -19
  50. package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
  51. package/plugins/prompt-templates/storage.mjs +64 -64
  52. package/plugins/registry.mjs +16 -16
  53. package/web-ui/app.js +654 -647
  54. package/web-ui/index.html +37 -36
  55. package/web-ui/logic.agents-diff.mjs +386 -386
  56. package/web-ui/logic.claude.mjs +172 -168
  57. package/web-ui/logic.codex.mjs +69 -69
  58. package/web-ui/logic.mjs +5 -5
  59. package/web-ui/logic.runtime.mjs +128 -128
  60. package/web-ui/logic.session-convert.mjs +70 -70
  61. package/web-ui/logic.sessions.mjs +781 -781
  62. package/web-ui/modules/api.mjs +90 -90
  63. package/web-ui/modules/app.computed.dashboard.mjs +248 -248
  64. package/web-ui/modules/app.computed.index.mjs +17 -17
  65. package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
  66. package/web-ui/modules/app.computed.session.mjs +735 -693
  67. package/web-ui/modules/app.constants.mjs +15 -15
  68. package/web-ui/modules/app.methods.agents.mjs +651 -651
  69. package/web-ui/modules/app.methods.claude-config.mjs +306 -200
  70. package/web-ui/modules/app.methods.codex-config.mjs +869 -861
  71. package/web-ui/modules/app.methods.index.mjs +94 -94
  72. package/web-ui/modules/app.methods.install.mjs +205 -205
  73. package/web-ui/modules/app.methods.navigation.mjs +788 -774
  74. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  75. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  76. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  77. package/web-ui/modules/app.methods.providers.mjs +575 -529
  78. package/web-ui/modules/app.methods.runtime.mjs +345 -345
  79. package/web-ui/modules/app.methods.session-actions.mjs +591 -591
  80. package/web-ui/modules/app.methods.session-browser.mjs +1011 -1012
  81. package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
  82. package/web-ui/modules/app.methods.session-trash.mjs +438 -438
  83. package/web-ui/modules/app.methods.startup-claude.mjs +547 -537
  84. package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
  85. package/web-ui/modules/app.methods.webhook.mjs +87 -79
  86. package/web-ui/modules/config-mode.computed.mjs +124 -124
  87. package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
  88. package/web-ui/modules/i18n.dict.mjs +3195 -3177
  89. package/web-ui/modules/i18n.mjs +62 -62
  90. package/web-ui/modules/plugins.computed.mjs +3 -3
  91. package/web-ui/modules/plugins.methods.mjs +3 -3
  92. package/web-ui/modules/plugins.storage.mjs +11 -11
  93. package/web-ui/modules/provider-url-display.mjs +17 -17
  94. package/web-ui/modules/sessions-filters-url.mjs +85 -85
  95. package/web-ui/modules/skills.computed.mjs +107 -107
  96. package/web-ui/modules/skills.methods.mjs +482 -482
  97. package/web-ui/partials/index/layout-footer.html +13 -13
  98. package/web-ui/partials/index/layout-header.html +499 -503
  99. package/web-ui/partials/index/modal-config-template-agents.html +185 -185
  100. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  101. package/web-ui/partials/index/modal-health-check.html +45 -45
  102. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  103. package/web-ui/partials/index/modal-skills.html +200 -200
  104. package/web-ui/partials/index/modal-webhook.html +42 -0
  105. package/web-ui/partials/index/modals-basic.html +223 -162
  106. package/web-ui/partials/index/panel-config-claude.html +155 -136
  107. package/web-ui/partials/index/panel-config-codex.html +176 -196
  108. package/web-ui/partials/index/panel-config-codex.html.bak +337 -0
  109. package/web-ui/partials/index/panel-config-openclaw.html +83 -83
  110. package/web-ui/partials/index/panel-dashboard.html +186 -219
  111. package/web-ui/partials/index/panel-docs.html +114 -114
  112. package/web-ui/partials/index/panel-market.html +177 -177
  113. package/web-ui/partials/index/panel-orchestration.html +391 -391
  114. package/web-ui/partials/index/panel-plugins.html +253 -253
  115. package/web-ui/partials/index/panel-sessions.html +319 -313
  116. package/web-ui/partials/index/panel-settings.html +158 -190
  117. package/web-ui/partials/index/panel-trash.html +82 -82
  118. package/web-ui/partials/index/panel-usage.html +137 -137
  119. package/web-ui/res/json5.min.js +1 -1
  120. package/web-ui/res/vue.global.prod.js +13 -13
  121. package/web-ui/session-helpers.mjs +591 -591
  122. package/web-ui/source-bundle.cjs +233 -233
  123. package/web-ui/styles/base-theme.css +281 -281
  124. package/web-ui/styles/bridge-pool.css +266 -197
  125. package/web-ui/styles/controls-forms.css +433 -433
  126. package/web-ui/styles/dashboard.css +406 -406
  127. package/web-ui/styles/docs-panel.css +245 -245
  128. package/web-ui/styles/feedback.css +108 -108
  129. package/web-ui/styles/health-check-dialog.css +144 -144
  130. package/web-ui/styles/layout-shell.css +628 -638
  131. package/web-ui/styles/modals-core.css +499 -466
  132. package/web-ui/styles/navigation-panels.css +391 -391
  133. package/web-ui/styles/openclaw-structured.css +266 -266
  134. package/web-ui/styles/plugins-panel.css +564 -564
  135. package/web-ui/styles/responsive.css +392 -392
  136. package/web-ui/styles/sessions-list.css +683 -647
  137. package/web-ui/styles/sessions-preview.css +407 -407
  138. package/web-ui/styles/sessions-toolbar-trash.css +518 -518
  139. package/web-ui/styles/sessions-usage.css +588 -588
  140. package/web-ui/styles/settings-panel.css +415 -349
  141. package/web-ui/styles/skills-list.css +305 -305
  142. package/web-ui/styles/skills-market.css +429 -429
  143. package/web-ui/styles/task-orchestration.css +822 -822
  144. package/web-ui/styles/titles-cards.css +472 -472
  145. package/web-ui/styles/trash-panel.css +90 -90
  146. package/web-ui/styles/webhook.css +115 -81
  147. package/web-ui/styles.css +24 -24
  148. package/web-ui.html +17 -17
@@ -1,392 +1,392 @@
1
- .content-wrapper {
2
- min-height: 300px;
3
- position: relative;
4
- }
5
-
6
- button:focus-visible,
7
- select:focus-visible,
8
- input:focus-visible,
9
- textarea:focus-visible {
10
- outline: 3px solid rgba(201, 94, 75, 0.25);
11
- outline-offset: 2px;
12
- }
13
-
14
- @media (max-width: 1280px) {
15
- :root {
16
- --side-rail-width: 224px;
17
- }
18
- .app-shell {
19
- grid-template-columns: 224px minmax(0, 1fr);
20
- gap: 0;
21
- }
22
-
23
- .main-panel {
24
- padding: 0 20px 20px;
25
- }
26
-
27
- .main-panel-topbar {
28
- margin: 0 -20px 12px;
29
- padding: 0 20px 10px;
30
- }
31
-
32
- }
33
-
34
- @media (max-width: 960px) {
35
- :root {
36
- --side-rail-width: 188px;
37
- }
38
- .container {
39
- padding: 0;
40
- }
41
- .app-shell {
42
- grid-template-columns: 188px minmax(0, 1fr);
43
- gap: 0;
44
- }
45
- .main-panel {
46
- padding: 0 16px 16px;
47
- border-radius: 0;
48
- min-height: 0;
49
- }
50
- .main-panel-topbar {
51
- margin: 0 -16px 12px;
52
- padding: 0 16px 10px;
53
- }
54
- .top-tabs {
55
- display: none !important;
56
- }
57
- .status-strip {
58
- grid-template-columns: repeat(2, minmax(0, 1fr));
59
- gap: 8px;
60
- margin-top: 2px;
61
- }
62
- .status-chip {
63
- min-width: 0;
64
- }
65
-
66
- .skills-summary-strip {
67
- grid-template-columns: repeat(2, minmax(0, 1fr));
68
- }
69
-
70
- .skills-panel-header {
71
- flex-direction: column;
72
- align-items: stretch;
73
- }
74
-
75
- .skills-modal-actions {
76
- align-items: flex-start;
77
- }
78
-
79
- .market-target-switch-compact {
80
- justify-content: flex-start;
81
- }
82
- }
83
-
84
- @media (max-width: 720px) {
85
- :root {
86
- --side-rail-width: min(188px, 46vw);
87
- }
88
- .app-shell {
89
- grid-template-columns: 1fr;
90
- min-height: auto;
91
- height: auto;
92
- overflow: visible;
93
- }
94
-
95
- .side-rail {
96
- display: none;
97
- }
98
-
99
- .lang-fab {
100
- display: block;
101
- }
102
-
103
- .top-tabs {
104
- display: flex !important;
105
- flex-wrap: nowrap;
106
- overflow-x: auto;
107
- overflow-y: hidden;
108
- padding-bottom: 2px;
109
- margin-left: -2px;
110
- margin-right: -2px;
111
- }
112
-
113
- .main-panel {
114
- padding: 0 12px 16px;
115
- height: auto;
116
- overflow-y: visible;
117
- }
118
-
119
- .main-panel-topbar {
120
- position: static;
121
- margin: 0 0 10px;
122
- padding: 0;
123
- background: transparent;
124
- backdrop-filter: none;
125
- }
126
-
127
- .panel-header-refined {
128
- margin-left: 0;
129
- margin-right: 0;
130
- padding: 14px 0 12px;
131
- }
132
-
133
- .main-title {
134
- font-size: 18px;
135
- }
136
-
137
- .subtitle {
138
- font-size: 12px;
139
- margin-bottom: 0;
140
- line-height: 1.4;
141
- }
142
-
143
- .panel-kicker {
144
- display: none;
145
- }
146
-
147
- .top-tabs {
148
- margin: 8px 0 10px;
149
- gap: 5px;
150
- }
151
-
152
- .segmented-control {
153
- flex-direction: column;
154
- gap: 6px;
155
- }
156
-
157
- .status-strip {
158
- grid-template-columns: 1fr;
159
- gap: 12px;
160
- }
161
-
162
- .market-grid {
163
- grid-template-columns: 1fr;
164
- }
165
-
166
- .market-action-grid {
167
- grid-template-columns: 1fr;
168
- }
169
-
170
- }
171
-
172
- @media (max-width: 540px) {
173
- .trash-header-actions {
174
- display: grid;
175
- grid-template-columns: repeat(2, minmax(0, 1fr));
176
- width: 100%;
177
- }
178
-
179
- .selector-header .trash-header-actions > .btn-tool,
180
- .selector-header .trash-header-actions > .btn-tool-compact {
181
- width: 100%;
182
- min-width: 0;
183
- height: 44px;
184
- min-height: 44px;
185
- }
186
- .top-tabs {
187
- gap: 5px;
188
- margin: 2px 0 8px;
189
- padding-right: 14px;
190
- }
191
- .main-panel {
192
- padding: 0 10px 12px;
193
- }
194
-
195
- .main-panel-topbar {
196
- margin-bottom: 8px;
197
- }
198
- .card {
199
- padding: 12px;
200
- }
201
- .session-layout {
202
- grid-template-columns: 1fr;
203
- height: auto;
204
- min-height: 0;
205
- }
206
-
207
- .status-strip {
208
- gap: var(--spacing-xs);
209
- }
210
-
211
- .status-chip {
212
- min-width: 100%;
213
- }
214
-
215
- .btn-add,
216
- .btn-tool,
217
- .card-action-btn,
218
- .btn-session-export,
219
- .btn-session-open,
220
- .btn-session-clone,
221
- .btn-session-refresh,
222
- .btn-session-delete,
223
- .btn-icon,
224
- .session-item-copy {
225
- min-height: 44px;
226
- padding-top: 12px;
227
- padding-bottom: 12px;
228
- }
229
-
230
- .btn-icon,
231
- .session-item-copy {
232
- min-width: 36px;
233
- }
234
-
235
- .session-item {
236
- min-height: 79px;
237
- height: 79px;
238
- contain-intrinsic-size: 79px;
239
- padding: 12px 14px;
240
- }
241
-
242
- .session-item-header {
243
- flex-direction: row;
244
- align-items: center;
245
- gap: 8px;
246
- }
247
-
248
- .session-item-main {
249
- align-items: center;
250
- }
251
-
252
- .session-item-copy {
253
- width: 36px;
254
- height: 36px;
255
- min-width: 36px;
256
- min-height: 36px;
257
- border-radius: 6px;
258
- padding: 2px;
259
- display: inline-flex;
260
- align-items: center;
261
- justify-content: center;
262
- transform: translate(-3px, 0);
263
- }
264
-
265
- .session-item-copy svg {
266
- width: 10px;
267
- height: 10px;
268
- }
269
-
270
- .session-item-title {
271
- white-space: nowrap;
272
- text-overflow: ellipsis;
273
- overflow: hidden;
274
- }
275
-
276
- .session-item-actions {
277
- margin-top: 0;
278
- }
279
-
280
- .session-item-meta {
281
- margin-top: 4px;
282
- margin-bottom: 0;
283
- gap: 4px;
284
- align-items: center;
285
- }
286
-
287
- .trash-item-body {
288
- flex-direction: column;
289
- align-items: stretch;
290
- gap: 10px;
291
- }
292
-
293
- .trash-item-actions {
294
- opacity: 1;
295
- justify-content: flex-end;
296
- }
297
-
298
- .trash-item-cwd {
299
- max-width: 140px;
300
- }
301
-
302
- .card {
303
- padding: 8px;
304
- }
305
-
306
- .card-list {
307
- gap: 4px;
308
- margin-bottom: 4px;
309
- }
310
-
311
- .card-actions {
312
- gap: 8px;
313
- }
314
-
315
- .card-action-btn {
316
- width: 40px;
317
- height: 40px;
318
- border-radius: 10px;
319
- }
320
-
321
- .card-action-btn svg {
322
- width: 18px;
323
- height: 18px;
324
- }
325
-
326
- .card-trailing {
327
- grid-auto-flow: row;
328
- grid-auto-columns: 1fr;
329
- justify-content: stretch;
330
- justify-items: end;
331
- }
332
-
333
- .card-trailing .card-actions {
334
- width: 100%;
335
- justify-content: flex-end;
336
- justify-self: end;
337
- }
338
-
339
- /* 移动端不显示配置状态 pill,节省空间 */
340
- .card-trailing .pill {
341
- display: none;
342
- }
343
-
344
- .auth-profile-item {
345
- padding: 10px;
346
- }
347
-
348
- .auth-profile-header {
349
- flex-direction: column;
350
- align-items: stretch;
351
- gap: 10px;
352
- }
353
-
354
- .auth-profile-actions {
355
- justify-content: flex-start;
356
- }
357
-
358
- .auth-profile-grid {
359
- grid-template-columns: 1fr;
360
- gap: 6px;
361
- margin-top: 8px;
362
- }
363
-
364
- .auth-profile-row {
365
- display: flex;
366
- flex-direction: column;
367
- gap: 2px;
368
- padding-bottom: 4px;
369
- border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
370
- }
371
-
372
- .auth-profile-row:last-child {
373
- border-bottom: none;
374
- padding-bottom: 0;
375
- }
376
-
377
- .session-preview {
378
- border-radius: var(--radius-lg);
379
- }
380
-
381
- .skills-summary-strip {
382
- grid-template-columns: 1fr;
383
- }
384
-
385
- .skills-panel {
386
- padding: 10px;
387
- }
388
-
389
- .skills-root-box {
390
- font-size: 11px;
391
- }
392
- }
1
+ .content-wrapper {
2
+ min-height: 300px;
3
+ position: relative;
4
+ }
5
+
6
+ button:focus-visible,
7
+ select:focus-visible,
8
+ input:focus-visible,
9
+ textarea:focus-visible {
10
+ outline: 3px solid rgba(201, 94, 75, 0.25);
11
+ outline-offset: 2px;
12
+ }
13
+
14
+ @media (max-width: 1280px) {
15
+ :root {
16
+ --side-rail-width: 224px;
17
+ }
18
+ .app-shell {
19
+ grid-template-columns: 224px minmax(0, 1fr);
20
+ gap: 0;
21
+ }
22
+
23
+ .main-panel {
24
+ padding: 0 20px 20px;
25
+ }
26
+
27
+ .main-panel-topbar {
28
+ margin: 0 -20px 12px;
29
+ padding: 0 20px 10px;
30
+ }
31
+
32
+ }
33
+
34
+ @media (max-width: 960px) {
35
+ :root {
36
+ --side-rail-width: 188px;
37
+ }
38
+ .container {
39
+ padding: 0;
40
+ }
41
+ .app-shell {
42
+ grid-template-columns: 188px minmax(0, 1fr);
43
+ gap: 0;
44
+ }
45
+ .main-panel {
46
+ padding: 0 16px 16px;
47
+ border-radius: 0;
48
+ min-height: 0;
49
+ }
50
+ .main-panel-topbar {
51
+ margin: 0 -16px 12px;
52
+ padding: 0 16px 10px;
53
+ }
54
+ .top-tabs {
55
+ display: none !important;
56
+ }
57
+ .status-strip {
58
+ grid-template-columns: repeat(2, minmax(0, 1fr));
59
+ gap: 8px;
60
+ margin-top: 2px;
61
+ }
62
+ .status-chip {
63
+ min-width: 0;
64
+ }
65
+
66
+ .skills-summary-strip {
67
+ grid-template-columns: repeat(2, minmax(0, 1fr));
68
+ }
69
+
70
+ .skills-panel-header {
71
+ flex-direction: column;
72
+ align-items: stretch;
73
+ }
74
+
75
+ .skills-modal-actions {
76
+ align-items: flex-start;
77
+ }
78
+
79
+ .market-target-switch-compact {
80
+ justify-content: flex-start;
81
+ }
82
+ }
83
+
84
+ @media (max-width: 720px) {
85
+ :root {
86
+ --side-rail-width: min(188px, 46vw);
87
+ }
88
+ .app-shell {
89
+ grid-template-columns: 1fr;
90
+ min-height: auto;
91
+ height: auto;
92
+ overflow: visible;
93
+ }
94
+
95
+ .side-rail {
96
+ display: none;
97
+ }
98
+
99
+ .lang-fab {
100
+ display: block;
101
+ }
102
+
103
+ .top-tabs {
104
+ display: flex !important;
105
+ flex-wrap: nowrap;
106
+ overflow-x: auto;
107
+ overflow-y: hidden;
108
+ padding-bottom: 2px;
109
+ margin-left: -2px;
110
+ margin-right: -2px;
111
+ }
112
+
113
+ .main-panel {
114
+ padding: 0 12px 16px;
115
+ height: auto;
116
+ overflow-y: visible;
117
+ }
118
+
119
+ .main-panel-topbar {
120
+ position: static;
121
+ margin: 0 0 10px;
122
+ padding: 0;
123
+ background: transparent;
124
+ backdrop-filter: none;
125
+ }
126
+
127
+ .panel-header-refined {
128
+ margin-left: 0;
129
+ margin-right: 0;
130
+ padding: 14px 0 12px;
131
+ }
132
+
133
+ .main-title {
134
+ font-size: 18px;
135
+ }
136
+
137
+ .subtitle {
138
+ font-size: 12px;
139
+ margin-bottom: 0;
140
+ line-height: 1.4;
141
+ }
142
+
143
+ .panel-kicker {
144
+ display: none;
145
+ }
146
+
147
+ .top-tabs {
148
+ margin: 8px 0 10px;
149
+ gap: 5px;
150
+ }
151
+
152
+ .segmented-control {
153
+ flex-direction: column;
154
+ gap: 6px;
155
+ }
156
+
157
+ .status-strip {
158
+ grid-template-columns: 1fr;
159
+ gap: 12px;
160
+ }
161
+
162
+ .market-grid {
163
+ grid-template-columns: 1fr;
164
+ }
165
+
166
+ .market-action-grid {
167
+ grid-template-columns: 1fr;
168
+ }
169
+
170
+ }
171
+
172
+ @media (max-width: 540px) {
173
+ .trash-header-actions {
174
+ display: grid;
175
+ grid-template-columns: repeat(2, minmax(0, 1fr));
176
+ width: 100%;
177
+ }
178
+
179
+ .selector-header .trash-header-actions > .btn-tool,
180
+ .selector-header .trash-header-actions > .btn-tool-compact {
181
+ width: 100%;
182
+ min-width: 0;
183
+ height: 44px;
184
+ min-height: 44px;
185
+ }
186
+ .top-tabs {
187
+ gap: 5px;
188
+ margin: 2px 0 8px;
189
+ padding-right: 14px;
190
+ }
191
+ .main-panel {
192
+ padding: 0 10px 12px;
193
+ }
194
+
195
+ .main-panel-topbar {
196
+ margin-bottom: 8px;
197
+ }
198
+ .card {
199
+ padding: 12px;
200
+ }
201
+ .session-layout {
202
+ grid-template-columns: 1fr;
203
+ height: auto;
204
+ min-height: 0;
205
+ }
206
+
207
+ .status-strip {
208
+ gap: var(--spacing-xs);
209
+ }
210
+
211
+ .status-chip {
212
+ min-width: 100%;
213
+ }
214
+
215
+ .btn-add,
216
+ .btn-tool,
217
+ .card-action-btn,
218
+ .btn-session-export,
219
+ .btn-session-open,
220
+ .btn-session-clone,
221
+ .btn-session-refresh,
222
+ .btn-session-delete,
223
+ .btn-icon,
224
+ .session-item-copy {
225
+ min-height: 44px;
226
+ padding-top: 12px;
227
+ padding-bottom: 12px;
228
+ }
229
+
230
+ .btn-icon,
231
+ .session-item-copy {
232
+ min-width: 36px;
233
+ }
234
+
235
+ .session-item {
236
+ min-height: 79px;
237
+ height: 79px;
238
+ contain-intrinsic-size: 79px;
239
+ padding: 12px 14px;
240
+ }
241
+
242
+ .session-item-header {
243
+ flex-direction: row;
244
+ align-items: center;
245
+ gap: 8px;
246
+ }
247
+
248
+ .session-item-main {
249
+ align-items: center;
250
+ }
251
+
252
+ .session-item-copy {
253
+ width: 36px;
254
+ height: 36px;
255
+ min-width: 36px;
256
+ min-height: 36px;
257
+ border-radius: 6px;
258
+ padding: 2px;
259
+ display: inline-flex;
260
+ align-items: center;
261
+ justify-content: center;
262
+ transform: translate(-3px, 0);
263
+ }
264
+
265
+ .session-item-copy svg {
266
+ width: 10px;
267
+ height: 10px;
268
+ }
269
+
270
+ .session-item-title {
271
+ white-space: nowrap;
272
+ text-overflow: ellipsis;
273
+ overflow: hidden;
274
+ }
275
+
276
+ .session-item-actions {
277
+ margin-top: 0;
278
+ }
279
+
280
+ .session-item-meta {
281
+ margin-top: 4px;
282
+ margin-bottom: 0;
283
+ gap: 4px;
284
+ align-items: center;
285
+ }
286
+
287
+ .trash-item-body {
288
+ flex-direction: column;
289
+ align-items: stretch;
290
+ gap: 10px;
291
+ }
292
+
293
+ .trash-item-actions {
294
+ opacity: 1;
295
+ justify-content: flex-end;
296
+ }
297
+
298
+ .trash-item-cwd {
299
+ max-width: 140px;
300
+ }
301
+
302
+ .card {
303
+ padding: 8px;
304
+ }
305
+
306
+ .card-list {
307
+ gap: 4px;
308
+ margin-bottom: 4px;
309
+ }
310
+
311
+ .card-actions {
312
+ gap: 8px;
313
+ }
314
+
315
+ .card-action-btn {
316
+ width: 40px;
317
+ height: 40px;
318
+ border-radius: 10px;
319
+ }
320
+
321
+ .card-action-btn svg {
322
+ width: 18px;
323
+ height: 18px;
324
+ }
325
+
326
+ .card-trailing {
327
+ grid-auto-flow: row;
328
+ grid-auto-columns: 1fr;
329
+ justify-content: stretch;
330
+ justify-items: end;
331
+ }
332
+
333
+ .card-trailing .card-actions {
334
+ width: 100%;
335
+ justify-content: flex-end;
336
+ justify-self: end;
337
+ }
338
+
339
+ /* 移动端不显示配置状态 pill,节省空间 */
340
+ .card-trailing .pill {
341
+ display: none;
342
+ }
343
+
344
+ .auth-profile-item {
345
+ padding: 10px;
346
+ }
347
+
348
+ .auth-profile-header {
349
+ flex-direction: column;
350
+ align-items: stretch;
351
+ gap: 10px;
352
+ }
353
+
354
+ .auth-profile-actions {
355
+ justify-content: flex-start;
356
+ }
357
+
358
+ .auth-profile-grid {
359
+ grid-template-columns: 1fr;
360
+ gap: 6px;
361
+ margin-top: 8px;
362
+ }
363
+
364
+ .auth-profile-row {
365
+ display: flex;
366
+ flex-direction: column;
367
+ gap: 2px;
368
+ padding-bottom: 4px;
369
+ border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
370
+ }
371
+
372
+ .auth-profile-row:last-child {
373
+ border-bottom: none;
374
+ padding-bottom: 0;
375
+ }
376
+
377
+ .session-preview {
378
+ border-radius: var(--radius-lg);
379
+ }
380
+
381
+ .skills-summary-strip {
382
+ grid-template-columns: 1fr;
383
+ }
384
+
385
+ .skills-panel {
386
+ padding: 10px;
387
+ }
388
+
389
+ .skills-root-box {
390
+ font-size: 11px;
391
+ }
392
+ }