codexmate 0.0.20 → 0.0.21

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