codexmate 0.0.21 → 0.0.22

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 (114) hide show
  1. package/README.md +389 -284
  2. package/README.zh.md +321 -0
  3. package/cli/agents-files.js +224 -162
  4. package/cli/archive-helpers.js +446 -446
  5. package/cli/auth-profiles.js +359 -359
  6. package/cli/builtin-proxy.js +1044 -580
  7. package/cli/claude-proxy.js +998 -998
  8. package/cli/config-bootstrap.js +384 -384
  9. package/cli/config-health.js +338 -338
  10. package/cli/openai-bridge.js +950 -0
  11. package/cli/openclaw-config.js +629 -629
  12. package/cli/session-usage.concurrent.js +28 -0
  13. package/cli/session-usage.js +112 -0
  14. package/cli/session-usage.models.js +176 -0
  15. package/cli/skills.js +1141 -1141
  16. package/cli/zip-commands.js +510 -510
  17. package/cli.js +13214 -13129
  18. package/lib/cli-file-utils.js +151 -151
  19. package/lib/cli-models-utils.js +419 -419
  20. package/lib/cli-network-utils.js +164 -164
  21. package/lib/cli-path-utils.js +69 -69
  22. package/lib/cli-session-utils.js +121 -121
  23. package/lib/cli-sessions.js +386 -386
  24. package/lib/cli-utils.js +155 -155
  25. package/lib/download-artifacts.js +77 -77
  26. package/lib/mcp-stdio.js +440 -440
  27. package/lib/task-orchestrator.js +869 -869
  28. package/lib/text-diff.js +303 -303
  29. package/lib/workflow-engine.js +340 -340
  30. package/package.json +74 -74
  31. package/res/json5.min.js +1 -1
  32. package/res/logo.png +0 -0
  33. package/res/vue.global.prod.js +13 -13
  34. package/web-ui/app.js +575 -530
  35. package/web-ui/index.html +34 -33
  36. package/web-ui/logic.agents-diff.mjs +386 -386
  37. package/web-ui/logic.claude.mjs +168 -168
  38. package/web-ui/logic.mjs +5 -5
  39. package/web-ui/logic.runtime.mjs +128 -124
  40. package/web-ui/logic.sessions.mjs +614 -581
  41. package/web-ui/modules/api.mjs +90 -90
  42. package/web-ui/modules/app.computed.dashboard.mjs +126 -113
  43. package/web-ui/modules/app.computed.index.mjs +17 -15
  44. package/web-ui/modules/app.computed.main-tabs.mjs +198 -195
  45. package/web-ui/modules/app.computed.session.mjs +653 -507
  46. package/web-ui/modules/app.constants.mjs +15 -15
  47. package/web-ui/modules/app.methods.agents.mjs +544 -493
  48. package/web-ui/modules/app.methods.claude-config.mjs +174 -174
  49. package/web-ui/modules/app.methods.codex-config.mjs +795 -640
  50. package/web-ui/modules/app.methods.index.mjs +92 -88
  51. package/web-ui/modules/app.methods.install.mjs +161 -149
  52. package/web-ui/modules/app.methods.navigation.mjs +619 -619
  53. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  54. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  55. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  56. package/web-ui/modules/app.methods.providers.mjs +404 -363
  57. package/web-ui/modules/app.methods.runtime.mjs +323 -323
  58. package/web-ui/modules/app.methods.session-actions.mjs +537 -520
  59. package/web-ui/modules/app.methods.session-browser.mjs +626 -626
  60. package/web-ui/modules/app.methods.session-timeline.mjs +448 -448
  61. package/web-ui/modules/app.methods.session-trash.mjs +422 -422
  62. package/web-ui/modules/app.methods.startup-claude.mjs +405 -412
  63. package/web-ui/modules/app.methods.task-orchestration.mjs +471 -471
  64. package/web-ui/modules/config-mode.computed.mjs +126 -126
  65. package/web-ui/modules/config-template-confirm-pref.mjs +33 -0
  66. package/web-ui/modules/i18n.mjs +1609 -0
  67. package/web-ui/modules/plugins.computed.mjs +220 -0
  68. package/web-ui/modules/plugins.methods.mjs +620 -0
  69. package/web-ui/modules/plugins.storage.mjs +37 -0
  70. package/web-ui/modules/skills.computed.mjs +107 -107
  71. package/web-ui/modules/skills.methods.mjs +481 -481
  72. package/web-ui/partials/index/layout-footer.html +13 -13
  73. package/web-ui/partials/index/layout-header.html +461 -402
  74. package/web-ui/partials/index/modal-config-template-agents.html +175 -125
  75. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  76. package/web-ui/partials/index/modal-health-check.html +72 -72
  77. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  78. package/web-ui/partials/index/modal-skills.html +200 -184
  79. package/web-ui/partials/index/modals-basic.html +165 -156
  80. package/web-ui/partials/index/panel-config-claude.html +138 -126
  81. package/web-ui/partials/index/panel-config-codex.html +234 -237
  82. package/web-ui/partials/index/panel-config-openclaw.html +78 -78
  83. package/web-ui/partials/index/panel-docs.html +147 -130
  84. package/web-ui/partials/index/panel-market.html +174 -174
  85. package/web-ui/partials/index/panel-orchestration.html +397 -397
  86. package/web-ui/partials/index/panel-plugins.html +243 -0
  87. package/web-ui/partials/index/panel-sessions.html +292 -292
  88. package/web-ui/partials/index/panel-settings.html +258 -190
  89. package/web-ui/partials/index/panel-usage.html +353 -213
  90. package/web-ui/session-helpers.mjs +573 -559
  91. package/web-ui/source-bundle.cjs +233 -233
  92. package/web-ui/styles/base-theme.css +264 -271
  93. package/web-ui/styles/controls-forms.css +362 -360
  94. package/web-ui/styles/docs-panel.css +247 -182
  95. package/web-ui/styles/feedback.css +108 -108
  96. package/web-ui/styles/health-check-dialog.css +144 -144
  97. package/web-ui/styles/layout-shell.css +596 -376
  98. package/web-ui/styles/modals-core.css +464 -464
  99. package/web-ui/styles/navigation-panels.css +382 -348
  100. package/web-ui/styles/openclaw-structured.css +266 -266
  101. package/web-ui/styles/plugins-panel.css +518 -0
  102. package/web-ui/styles/responsive.css +456 -450
  103. package/web-ui/styles/sessions-list.css +400 -400
  104. package/web-ui/styles/sessions-preview.css +411 -411
  105. package/web-ui/styles/sessions-toolbar-trash.css +268 -243
  106. package/web-ui/styles/sessions-usage.css +851 -628
  107. package/web-ui/styles/settings-panel.css +166 -0
  108. package/web-ui/styles/skills-list.css +303 -296
  109. package/web-ui/styles/skills-market.css +396 -335
  110. package/web-ui/styles/task-orchestration.css +776 -776
  111. package/web-ui/styles/titles-cards.css +408 -408
  112. package/web-ui/styles.css +20 -18
  113. package/web-ui.html +17 -17
  114. package/README.en.md +0 -349
@@ -1,450 +1,456 @@
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
- .app-shell {
16
- grid-template-columns: 224px minmax(0, 1fr);
17
- gap: 0;
18
- }
19
-
20
- .main-panel {
21
- padding: 0 20px 20px;
22
- }
23
-
24
- .main-panel-topbar {
25
- margin: 0 -20px 12px;
26
- padding: 0 20px 10px;
27
- }
28
-
29
- }
30
-
31
- @media (max-width: 960px) {
32
- .container {
33
- padding: 0;
34
- }
35
- .app-shell {
36
- grid-template-columns: 188px minmax(0, 1fr);
37
- gap: 0;
38
- }
39
- .main-panel {
40
- padding: 0 16px 16px;
41
- border-radius: 0;
42
- min-height: 0;
43
- }
44
- .main-panel-topbar {
45
- margin: 0 -16px 12px;
46
- padding: 0 16px 10px;
47
- }
48
- .top-tabs {
49
- display: none !important;
50
- }
51
- .status-strip {
52
- grid-template-columns: repeat(2, minmax(0, 1fr));
53
- gap: 8px;
54
- margin-top: 2px;
55
- }
56
- .status-chip {
57
- min-width: 0;
58
- }
59
-
60
- .skills-summary-strip {
61
- grid-template-columns: repeat(2, minmax(0, 1fr));
62
- }
63
-
64
- .skills-panel-header {
65
- flex-direction: column;
66
- align-items: stretch;
67
- }
68
-
69
- .skills-modal-actions {
70
- align-items: flex-start;
71
- }
72
-
73
- .market-target-switch-compact {
74
- justify-content: flex-start;
75
- }
76
- }
77
-
78
- @media (max-width: 720px) {
79
- .app-shell {
80
- grid-template-columns: 1fr;
81
- min-height: auto;
82
- height: auto;
83
- overflow: visible;
84
- }
85
-
86
- .side-rail {
87
- display: none;
88
- }
89
-
90
- .top-tabs {
91
- display: flex !important;
92
- flex-wrap: nowrap;
93
- overflow-x: auto;
94
- overflow-y: hidden;
95
- padding-bottom: 2px;
96
- margin-left: -2px;
97
- margin-right: -2px;
98
- }
99
-
100
- .main-panel {
101
- padding: 0 12px 16px;
102
- height: auto;
103
- overflow-y: visible;
104
- }
105
-
106
- .main-panel-topbar {
107
- position: static;
108
- margin: 0 0 10px;
109
- padding: 0;
110
- background: transparent;
111
- backdrop-filter: none;
112
- }
113
-
114
- .panel-header-refined {
115
- margin-left: 0;
116
- margin-right: 0;
117
- padding: 14px 0 12px;
118
- }
119
-
120
- .main-title {
121
- font-size: 18px;
122
- }
123
-
124
- .subtitle {
125
- font-size: 12px;
126
- margin-bottom: 0;
127
- line-height: 1.4;
128
- }
129
-
130
- .panel-kicker {
131
- display: none;
132
- }
133
-
134
- .top-tabs {
135
- margin: 8px 0 10px;
136
- gap: 5px;
137
- }
138
-
139
- .segmented-control {
140
- flex-direction: column;
141
- gap: 6px;
142
- }
143
-
144
- .status-strip {
145
- grid-template-columns: 1fr;
146
- gap: 12px;
147
- }
148
-
149
- .market-grid {
150
- grid-template-columns: 1fr;
151
- }
152
-
153
- .market-action-grid {
154
- grid-template-columns: 1fr;
155
- }
156
-
157
- }
158
-
159
- @media (max-width: 540px) {
160
- .trash-header-actions {
161
- display: grid;
162
- grid-template-columns: repeat(2, minmax(0, 1fr));
163
- width: 100%;
164
- }
165
-
166
- .selector-header .trash-header-actions > .btn-tool,
167
- .selector-header .trash-header-actions > .btn-tool-compact {
168
- width: 100%;
169
- min-width: 0;
170
- height: 44px;
171
- min-height: 44px;
172
- }
173
-
174
- body {
175
- padding: var(--spacing-md) var(--spacing-sm);
176
- }
177
- .container {
178
- padding: 0 var(--spacing-sm) var(--spacing-md);
179
- }
180
- .top-tabs {
181
- gap: 5px;
182
- margin: 2px 0 8px;
183
- padding-right: 14px;
184
- }
185
- .main-panel {
186
- padding: 0 10px 12px;
187
- }
188
-
189
- .main-panel-topbar {
190
- margin-bottom: 8px;
191
- }
192
- .card {
193
- padding: 12px;
194
- }
195
- .session-layout {
196
- grid-template-columns: 1fr;
197
- height: auto;
198
- min-height: 0;
199
- }
200
-
201
- .status-strip {
202
- gap: var(--spacing-xs);
203
- }
204
-
205
- .status-chip {
206
- min-width: 100%;
207
- }
208
-
209
- .btn-add,
210
- .btn-tool,
211
- .card-action-btn,
212
- .btn-session-export,
213
- .btn-session-open,
214
- .btn-session-clone,
215
- .btn-session-refresh,
216
- .btn-session-delete,
217
- .btn-icon,
218
- .session-item-copy {
219
- min-height: 44px;
220
- padding-top: 12px;
221
- padding-bottom: 12px;
222
- }
223
-
224
- .btn-icon,
225
- .session-item-copy {
226
- min-width: 36px;
227
- }
228
-
229
- .session-item {
230
- min-height: 75px;
231
- height: 75px;
232
- contain-intrinsic-size: 75px;
233
- padding: 12px 14px;
234
- }
235
-
236
- .session-item-header {
237
- flex-direction: row;
238
- align-items: center;
239
- gap: 8px;
240
- }
241
-
242
- .session-item-main {
243
- align-items: center;
244
- }
245
-
246
- .session-item-copy {
247
- width: 36px;
248
- height: 36px;
249
- min-width: 36px;
250
- min-height: 36px;
251
- border-radius: 6px;
252
- padding: 2px;
253
- display: inline-flex;
254
- align-items: center;
255
- justify-content: center;
256
- transform: translate(-3px, 0);
257
- }
258
-
259
- .session-item-copy svg {
260
- width: 10px;
261
- height: 10px;
262
- }
263
-
264
- .session-item-title {
265
- -webkit-line-clamp: 1;
266
- max-height: none;
267
- white-space: nowrap;
268
- text-overflow: ellipsis;
269
- overflow: hidden;
270
- }
271
-
272
- .session-item-actions {
273
- margin-top: 0;
274
- }
275
-
276
- .session-item-meta {
277
- margin-top: -2px;
278
- margin-bottom: 0;
279
- gap: 4px;
280
- align-items: center;
281
- }
282
-
283
- .trash-item.session-item {
284
- min-height: auto;
285
- height: auto;
286
- contain-intrinsic-size: auto;
287
- }
288
-
289
- .trash-item-header {
290
- flex-direction: column;
291
- align-items: stretch;
292
- gap: 10px;
293
- }
294
-
295
- .trash-item-mainline {
296
- flex-direction: column;
297
- align-items: flex-start;
298
- gap: 6px;
299
- }
300
-
301
- .trash-item-side {
302
- width: 100%;
303
- min-width: 0;
304
- align-items: stretch;
305
- gap: 10px;
306
- padding-top: 8px;
307
- border-top: 1px dashed rgba(216, 201, 184, 0.55);
308
- }
309
-
310
- .trash-item-actions {
311
- display: grid;
312
- grid-template-columns: repeat(2, minmax(0, 1fr));
313
- justify-content: flex-start;
314
- width: 100%;
315
- }
316
-
317
- .trash-item-actions .btn-mini {
318
- width: 100%;
319
- height: 44px;
320
- min-height: 44px;
321
- padding: 0 10px;
322
- display: inline-flex;
323
- align-items: center;
324
- justify-content: center;
325
- line-height: 1;
326
- white-space: nowrap;
327
- }
328
-
329
- .trash-item .session-count-badge {
330
- align-self: flex-start;
331
- margin-top: 0;
332
- }
333
-
334
- .trash-item-title {
335
- -webkit-line-clamp: 3;
336
- max-height: none;
337
- white-space: normal;
338
- text-overflow: clip;
339
- overflow: hidden;
340
- }
341
-
342
- .trash-item-meta {
343
- margin-top: 6px;
344
- margin-bottom: 0;
345
- gap: 6px;
346
- align-items: center;
347
- }
348
-
349
- .trash-item-time {
350
- padding-top: 2px;
351
- line-height: 1.35;
352
- text-align: right;
353
- }
354
-
355
- .trash-item-path {
356
- grid-template-columns: 1fr;
357
- gap: 4px;
358
- }
359
-
360
- .card {
361
- padding: 8px;
362
- }
363
-
364
- .card-list {
365
- gap: 4px;
366
- margin-bottom: 4px;
367
- }
368
-
369
- .card-actions {
370
- gap: 8px;
371
- }
372
-
373
- .card-action-btn {
374
- width: 40px;
375
- height: 40px;
376
- border-radius: 10px;
377
- }
378
-
379
- .card-action-btn svg {
380
- width: 18px;
381
- height: 18px;
382
- }
383
-
384
- .card-trailing {
385
- grid-auto-flow: row;
386
- grid-auto-columns: 1fr;
387
- justify-content: stretch;
388
- justify-items: end;
389
- }
390
-
391
- .card-trailing .card-actions {
392
- width: 100%;
393
- justify-content: flex-end;
394
- justify-self: end;
395
- }
396
-
397
- /* 移动端不显示配置状态 pill,节省空间 */
398
- .card-trailing .pill {
399
- display: none;
400
- }
401
-
402
- .auth-profile-item {
403
- padding: 10px;
404
- }
405
-
406
- .auth-profile-header {
407
- flex-direction: column;
408
- align-items: stretch;
409
- gap: 10px;
410
- }
411
-
412
- .auth-profile-actions {
413
- justify-content: flex-start;
414
- }
415
-
416
- .auth-profile-grid {
417
- grid-template-columns: 1fr;
418
- gap: 6px;
419
- margin-top: 8px;
420
- }
421
-
422
- .auth-profile-row {
423
- display: flex;
424
- flex-direction: column;
425
- gap: 2px;
426
- padding-bottom: 4px;
427
- border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
428
- }
429
-
430
- .auth-profile-row:last-child {
431
- border-bottom: none;
432
- padding-bottom: 0;
433
- }
434
-
435
- .session-preview {
436
- border-radius: var(--radius-lg);
437
- }
438
-
439
- .skills-summary-strip {
440
- grid-template-columns: 1fr;
441
- }
442
-
443
- .skills-panel {
444
- padding: 10px;
445
- }
446
-
447
- .skills-root-box {
448
- font-size: 11px;
449
- }
450
- }
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: 75px;
237
+ height: 75px;
238
+ contain-intrinsic-size: 75px;
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
+ -webkit-line-clamp: 1;
272
+ max-height: none;
273
+ white-space: nowrap;
274
+ text-overflow: ellipsis;
275
+ overflow: hidden;
276
+ }
277
+
278
+ .session-item-actions {
279
+ margin-top: 0;
280
+ }
281
+
282
+ .session-item-meta {
283
+ margin-top: -2px;
284
+ margin-bottom: 0;
285
+ gap: 4px;
286
+ align-items: center;
287
+ }
288
+
289
+ .trash-item.session-item {
290
+ min-height: auto;
291
+ height: auto;
292
+ contain-intrinsic-size: auto;
293
+ }
294
+
295
+ .trash-item-header {
296
+ flex-direction: column;
297
+ align-items: stretch;
298
+ gap: 10px;
299
+ }
300
+
301
+ .trash-item-mainline {
302
+ flex-direction: column;
303
+ align-items: flex-start;
304
+ gap: 6px;
305
+ }
306
+
307
+ .trash-item-side {
308
+ width: 100%;
309
+ min-width: 0;
310
+ align-items: stretch;
311
+ gap: 10px;
312
+ padding-top: 8px;
313
+ border-top: 1px dashed rgba(216, 201, 184, 0.55);
314
+ }
315
+
316
+ .trash-item-actions {
317
+ display: grid;
318
+ grid-template-columns: repeat(2, minmax(0, 1fr));
319
+ justify-content: flex-start;
320
+ width: 100%;
321
+ }
322
+
323
+ .trash-item-actions .btn-mini {
324
+ width: 100%;
325
+ height: 44px;
326
+ min-height: 44px;
327
+ padding: 0 10px;
328
+ display: inline-flex;
329
+ align-items: center;
330
+ justify-content: center;
331
+ line-height: 1;
332
+ white-space: nowrap;
333
+ }
334
+
335
+ .trash-item .session-count-badge {
336
+ align-self: flex-start;
337
+ margin-top: 0;
338
+ }
339
+
340
+ .trash-item-title {
341
+ -webkit-line-clamp: 3;
342
+ max-height: none;
343
+ white-space: normal;
344
+ text-overflow: clip;
345
+ overflow: hidden;
346
+ }
347
+
348
+ .trash-item-meta {
349
+ margin-top: 6px;
350
+ margin-bottom: 0;
351
+ gap: 6px;
352
+ align-items: center;
353
+ }
354
+
355
+ .trash-item-time {
356
+ padding-top: 2px;
357
+ line-height: 1.35;
358
+ text-align: right;
359
+ }
360
+
361
+ .trash-item-path {
362
+ grid-template-columns: 1fr;
363
+ gap: 4px;
364
+ }
365
+
366
+ .card {
367
+ padding: 8px;
368
+ }
369
+
370
+ .card-list {
371
+ gap: 4px;
372
+ margin-bottom: 4px;
373
+ }
374
+
375
+ .card-actions {
376
+ gap: 8px;
377
+ }
378
+
379
+ .card-action-btn {
380
+ width: 40px;
381
+ height: 40px;
382
+ border-radius: 10px;
383
+ }
384
+
385
+ .card-action-btn svg {
386
+ width: 18px;
387
+ height: 18px;
388
+ }
389
+
390
+ .card-trailing {
391
+ grid-auto-flow: row;
392
+ grid-auto-columns: 1fr;
393
+ justify-content: stretch;
394
+ justify-items: end;
395
+ }
396
+
397
+ .card-trailing .card-actions {
398
+ width: 100%;
399
+ justify-content: flex-end;
400
+ justify-self: end;
401
+ }
402
+
403
+ /* 移动端不显示配置状态 pill,节省空间 */
404
+ .card-trailing .pill {
405
+ display: none;
406
+ }
407
+
408
+ .auth-profile-item {
409
+ padding: 10px;
410
+ }
411
+
412
+ .auth-profile-header {
413
+ flex-direction: column;
414
+ align-items: stretch;
415
+ gap: 10px;
416
+ }
417
+
418
+ .auth-profile-actions {
419
+ justify-content: flex-start;
420
+ }
421
+
422
+ .auth-profile-grid {
423
+ grid-template-columns: 1fr;
424
+ gap: 6px;
425
+ margin-top: 8px;
426
+ }
427
+
428
+ .auth-profile-row {
429
+ display: flex;
430
+ flex-direction: column;
431
+ gap: 2px;
432
+ padding-bottom: 4px;
433
+ border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
434
+ }
435
+
436
+ .auth-profile-row:last-child {
437
+ border-bottom: none;
438
+ padding-bottom: 0;
439
+ }
440
+
441
+ .session-preview {
442
+ border-radius: var(--radius-lg);
443
+ }
444
+
445
+ .skills-summary-strip {
446
+ grid-template-columns: 1fr;
447
+ }
448
+
449
+ .skills-panel {
450
+ padding: 10px;
451
+ }
452
+
453
+ .skills-root-box {
454
+ font-size: 11px;
455
+ }
456
+ }