codexmate 0.0.27 → 0.0.28

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 (137) hide show
  1. package/README.md +421 -421
  2. package/README.zh.md +354 -354
  3. package/cli/agents-files.js +224 -224
  4. package/cli/archive-helpers.js +446 -446
  5. package/cli/auth-profiles.js +375 -375
  6. package/cli/builtin-proxy.js +1620 -1299
  7. package/cli/claude-proxy.js +1022 -1022
  8. package/cli/config-bootstrap.js +384 -384
  9. package/cli/config-health.js +338 -338
  10. package/cli/doctor-core.js +903 -903
  11. package/cli/import-skills-url.js +356 -356
  12. package/cli/openai-bridge.js +1489 -1091
  13. package/cli/openclaw-config.js +629 -629
  14. package/cli/session-convert-args.js +65 -65
  15. package/cli/session-convert-io.js +82 -82
  16. package/cli/session-convert.js +43 -43
  17. package/cli/session-usage.concurrent.js +28 -28
  18. package/cli/session-usage.js +118 -118
  19. package/cli/session-usage.models.js +176 -176
  20. package/cli/skills.js +1141 -1141
  21. package/cli/zip-commands.js +510 -510
  22. package/cli.js +15264 -15251
  23. package/lib/automation.js +404 -404
  24. package/lib/cli-file-utils.js +151 -151
  25. package/lib/cli-models-utils.js +440 -379
  26. package/lib/cli-network-utils.js +190 -190
  27. package/lib/cli-path-utils.js +85 -85
  28. package/lib/cli-session-utils.js +121 -121
  29. package/lib/cli-sessions.js +417 -417
  30. package/lib/cli-utils.js +155 -155
  31. package/lib/download-artifacts.js +92 -92
  32. package/lib/mcp-stdio.js +453 -453
  33. package/lib/task-orchestrator.js +869 -869
  34. package/lib/text-diff.js +303 -303
  35. package/lib/workflow-engine.js +340 -340
  36. package/package.json +3 -1
  37. package/plugins/README.md +20 -20
  38. package/plugins/README.zh-CN.md +20 -20
  39. package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
  40. package/plugins/prompt-templates/computed.mjs +253 -253
  41. package/plugins/prompt-templates/index.mjs +8 -8
  42. package/plugins/prompt-templates/manifest.mjs +15 -15
  43. package/plugins/prompt-templates/methods.mjs +553 -619
  44. package/plugins/prompt-templates/overview.mjs +91 -90
  45. package/plugins/prompt-templates/ownership.mjs +19 -19
  46. package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
  47. package/plugins/prompt-templates/storage.mjs +64 -64
  48. package/plugins/registry.mjs +16 -16
  49. package/web-ui/app.js +625 -634
  50. package/web-ui/index.html +35 -35
  51. package/web-ui/logic.agents-diff.mjs +386 -386
  52. package/web-ui/logic.claude.mjs +168 -168
  53. package/web-ui/logic.codex.mjs +56 -0
  54. package/web-ui/logic.mjs +5 -5
  55. package/web-ui/logic.runtime.mjs +128 -128
  56. package/web-ui/logic.session-convert.mjs +70 -70
  57. package/web-ui/logic.sessions.mjs +765 -765
  58. package/web-ui/modules/api.mjs +90 -90
  59. package/web-ui/modules/app.computed.dashboard.mjs +225 -171
  60. package/web-ui/modules/app.computed.index.mjs +17 -17
  61. package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
  62. package/web-ui/modules/app.computed.session.mjs +994 -994
  63. package/web-ui/modules/app.constants.mjs +15 -15
  64. package/web-ui/modules/app.methods.agents.mjs +632 -632
  65. package/web-ui/modules/app.methods.claude-config.mjs +190 -184
  66. package/web-ui/modules/app.methods.codex-config.mjs +892 -860
  67. package/web-ui/modules/app.methods.index.mjs +92 -92
  68. package/web-ui/modules/app.methods.install.mjs +205 -205
  69. package/web-ui/modules/app.methods.navigation.mjs +743 -743
  70. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  71. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  72. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  73. package/web-ui/modules/app.methods.providers.mjs +412 -404
  74. package/web-ui/modules/app.methods.runtime.mjs +345 -345
  75. package/web-ui/modules/app.methods.session-actions.mjs +593 -596
  76. package/web-ui/modules/app.methods.session-browser.mjs +984 -989
  77. package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
  78. package/web-ui/modules/app.methods.session-trash.mjs +439 -439
  79. package/web-ui/modules/app.methods.startup-claude.mjs +533 -526
  80. package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
  81. package/web-ui/modules/config-mode.computed.mjs +124 -124
  82. package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
  83. package/web-ui/modules/i18n.dict.mjs +2109 -2131
  84. package/web-ui/modules/i18n.mjs +56 -56
  85. package/web-ui/modules/plugins.computed.mjs +3 -3
  86. package/web-ui/modules/plugins.methods.mjs +3 -3
  87. package/web-ui/modules/plugins.storage.mjs +11 -11
  88. package/web-ui/modules/provider-url-display.mjs +17 -0
  89. package/web-ui/modules/sessions-filters-url.mjs +85 -85
  90. package/web-ui/modules/skills.computed.mjs +107 -107
  91. package/web-ui/modules/skills.methods.mjs +481 -481
  92. package/web-ui/partials/index/layout-footer.html +13 -13
  93. package/web-ui/partials/index/layout-header.html +475 -475
  94. package/web-ui/partials/index/modal-config-template-agents.html +174 -174
  95. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  96. package/web-ui/partials/index/modal-health-check.html +45 -45
  97. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  98. package/web-ui/partials/index/modal-skills.html +200 -200
  99. package/web-ui/partials/index/modals-basic.html +165 -165
  100. package/web-ui/partials/index/panel-config-claude.html +188 -187
  101. package/web-ui/partials/index/panel-config-codex.html +312 -283
  102. package/web-ui/partials/index/panel-config-openclaw.html +83 -83
  103. package/web-ui/partials/index/panel-dashboard.html +186 -186
  104. package/web-ui/partials/index/panel-docs.html +147 -147
  105. package/web-ui/partials/index/panel-market.html +177 -177
  106. package/web-ui/partials/index/panel-orchestration.html +391 -391
  107. package/web-ui/partials/index/panel-plugins.html +253 -279
  108. package/web-ui/partials/index/panel-sessions.html +316 -326
  109. package/web-ui/partials/index/panel-settings.html +253 -274
  110. package/web-ui/partials/index/panel-usage.html +371 -371
  111. package/web-ui/res/json5.min.js +1 -1
  112. package/web-ui/res/vue.global.prod.js +13 -13
  113. package/web-ui/session-helpers.mjs +576 -576
  114. package/web-ui/source-bundle.cjs +233 -233
  115. package/web-ui/styles/base-theme.css +281 -268
  116. package/web-ui/styles/controls-forms.css +422 -423
  117. package/web-ui/styles/dashboard.css +274 -274
  118. package/web-ui/styles/docs-panel.css +247 -247
  119. package/web-ui/styles/feedback.css +108 -108
  120. package/web-ui/styles/health-check-dialog.css +144 -144
  121. package/web-ui/styles/layout-shell.css +606 -603
  122. package/web-ui/styles/modals-core.css +466 -464
  123. package/web-ui/styles/navigation-panels.css +391 -390
  124. package/web-ui/styles/openclaw-structured.css +266 -266
  125. package/web-ui/styles/plugins-panel.css +523 -523
  126. package/web-ui/styles/responsive.css +454 -454
  127. package/web-ui/styles/sessions-list.css +419 -415
  128. package/web-ui/styles/sessions-preview.css +411 -411
  129. package/web-ui/styles/sessions-toolbar-trash.css +330 -330
  130. package/web-ui/styles/sessions-usage.css +1040 -1040
  131. package/web-ui/styles/settings-panel.css +185 -185
  132. package/web-ui/styles/skills-list.css +303 -303
  133. package/web-ui/styles/skills-market.css +406 -406
  134. package/web-ui/styles/task-orchestration.css +822 -822
  135. package/web-ui/styles/titles-cards.css +472 -408
  136. package/web-ui/styles.css +21 -21
  137. package/web-ui.html +17 -17
@@ -1,454 +1,454 @@
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
- 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: -2px;
282
- margin-bottom: 0;
283
- gap: 4px;
284
- align-items: center;
285
- }
286
-
287
- .trash-item.session-item {
288
- min-height: auto;
289
- height: auto;
290
- contain-intrinsic-size: auto;
291
- }
292
-
293
- .trash-item-header {
294
- flex-direction: column;
295
- align-items: stretch;
296
- gap: 10px;
297
- }
298
-
299
- .trash-item-mainline {
300
- flex-direction: column;
301
- align-items: flex-start;
302
- gap: 6px;
303
- }
304
-
305
- .trash-item-side {
306
- width: 100%;
307
- min-width: 0;
308
- align-items: stretch;
309
- gap: 10px;
310
- padding-top: 8px;
311
- border-top: 1px dashed rgba(216, 201, 184, 0.55);
312
- }
313
-
314
- .trash-item-actions {
315
- display: grid;
316
- grid-template-columns: repeat(2, minmax(0, 1fr));
317
- justify-content: flex-start;
318
- width: 100%;
319
- }
320
-
321
- .trash-item-actions .btn-mini {
322
- width: 100%;
323
- height: 44px;
324
- min-height: 44px;
325
- padding: 0 10px;
326
- display: inline-flex;
327
- align-items: center;
328
- justify-content: center;
329
- line-height: 1;
330
- white-space: nowrap;
331
- }
332
-
333
- .trash-item .session-count-badge {
334
- align-self: flex-start;
335
- margin-top: 0;
336
- }
337
-
338
- .trash-item-title {
339
- -webkit-line-clamp: 3;
340
- max-height: none;
341
- white-space: normal;
342
- text-overflow: clip;
343
- overflow: hidden;
344
- }
345
-
346
- .trash-item-meta {
347
- margin-top: 6px;
348
- margin-bottom: 0;
349
- gap: 6px;
350
- align-items: center;
351
- }
352
-
353
- .trash-item-time {
354
- padding-top: 2px;
355
- line-height: 1.35;
356
- text-align: right;
357
- }
358
-
359
- .trash-item-path {
360
- grid-template-columns: 1fr;
361
- gap: 4px;
362
- }
363
-
364
- .card {
365
- padding: 8px;
366
- }
367
-
368
- .card-list {
369
- gap: 4px;
370
- margin-bottom: 4px;
371
- }
372
-
373
- .card-actions {
374
- gap: 8px;
375
- }
376
-
377
- .card-action-btn {
378
- width: 40px;
379
- height: 40px;
380
- border-radius: 10px;
381
- }
382
-
383
- .card-action-btn svg {
384
- width: 18px;
385
- height: 18px;
386
- }
387
-
388
- .card-trailing {
389
- grid-auto-flow: row;
390
- grid-auto-columns: 1fr;
391
- justify-content: stretch;
392
- justify-items: end;
393
- }
394
-
395
- .card-trailing .card-actions {
396
- width: 100%;
397
- justify-content: flex-end;
398
- justify-self: end;
399
- }
400
-
401
- /* 移动端不显示配置状态 pill,节省空间 */
402
- .card-trailing .pill {
403
- display: none;
404
- }
405
-
406
- .auth-profile-item {
407
- padding: 10px;
408
- }
409
-
410
- .auth-profile-header {
411
- flex-direction: column;
412
- align-items: stretch;
413
- gap: 10px;
414
- }
415
-
416
- .auth-profile-actions {
417
- justify-content: flex-start;
418
- }
419
-
420
- .auth-profile-grid {
421
- grid-template-columns: 1fr;
422
- gap: 6px;
423
- margin-top: 8px;
424
- }
425
-
426
- .auth-profile-row {
427
- display: flex;
428
- flex-direction: column;
429
- gap: 2px;
430
- padding-bottom: 4px;
431
- border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
432
- }
433
-
434
- .auth-profile-row:last-child {
435
- border-bottom: none;
436
- padding-bottom: 0;
437
- }
438
-
439
- .session-preview {
440
- border-radius: var(--radius-lg);
441
- }
442
-
443
- .skills-summary-strip {
444
- grid-template-columns: 1fr;
445
- }
446
-
447
- .skills-panel {
448
- padding: 10px;
449
- }
450
-
451
- .skills-root-box {
452
- font-size: 11px;
453
- }
454
- }
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: 108px;
237
+ height: auto;
238
+ contain-intrinsic-size: 108px;
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.session-item {
288
+ min-height: auto;
289
+ height: auto;
290
+ contain-intrinsic-size: auto;
291
+ }
292
+
293
+ .trash-item-header {
294
+ flex-direction: column;
295
+ align-items: stretch;
296
+ gap: 10px;
297
+ }
298
+
299
+ .trash-item-mainline {
300
+ flex-direction: column;
301
+ align-items: flex-start;
302
+ gap: 6px;
303
+ }
304
+
305
+ .trash-item-side {
306
+ width: 100%;
307
+ min-width: 0;
308
+ align-items: stretch;
309
+ gap: 10px;
310
+ padding-top: 8px;
311
+ border-top: 1px dashed rgba(216, 201, 184, 0.55);
312
+ }
313
+
314
+ .trash-item-actions {
315
+ display: grid;
316
+ grid-template-columns: repeat(2, minmax(0, 1fr));
317
+ justify-content: flex-start;
318
+ width: 100%;
319
+ }
320
+
321
+ .trash-item-actions .btn-mini {
322
+ width: 100%;
323
+ height: 44px;
324
+ min-height: 44px;
325
+ padding: 0 10px;
326
+ display: inline-flex;
327
+ align-items: center;
328
+ justify-content: center;
329
+ line-height: 1;
330
+ white-space: nowrap;
331
+ }
332
+
333
+ .trash-item .session-count-badge {
334
+ align-self: flex-start;
335
+ margin-top: 0;
336
+ }
337
+
338
+ .trash-item-title {
339
+ -webkit-line-clamp: 3;
340
+ max-height: none;
341
+ white-space: normal;
342
+ text-overflow: clip;
343
+ overflow: hidden;
344
+ }
345
+
346
+ .trash-item-meta {
347
+ margin-top: 6px;
348
+ margin-bottom: 0;
349
+ gap: 6px;
350
+ align-items: center;
351
+ }
352
+
353
+ .trash-item-time {
354
+ padding-top: 2px;
355
+ line-height: 1.35;
356
+ text-align: right;
357
+ }
358
+
359
+ .trash-item-path {
360
+ grid-template-columns: 1fr;
361
+ gap: 4px;
362
+ }
363
+
364
+ .card {
365
+ padding: 8px;
366
+ }
367
+
368
+ .card-list {
369
+ gap: 4px;
370
+ margin-bottom: 4px;
371
+ }
372
+
373
+ .card-actions {
374
+ gap: 8px;
375
+ }
376
+
377
+ .card-action-btn {
378
+ width: 40px;
379
+ height: 40px;
380
+ border-radius: 10px;
381
+ }
382
+
383
+ .card-action-btn svg {
384
+ width: 18px;
385
+ height: 18px;
386
+ }
387
+
388
+ .card-trailing {
389
+ grid-auto-flow: row;
390
+ grid-auto-columns: 1fr;
391
+ justify-content: stretch;
392
+ justify-items: end;
393
+ }
394
+
395
+ .card-trailing .card-actions {
396
+ width: 100%;
397
+ justify-content: flex-end;
398
+ justify-self: end;
399
+ }
400
+
401
+ /* 移动端不显示配置状态 pill,节省空间 */
402
+ .card-trailing .pill {
403
+ display: none;
404
+ }
405
+
406
+ .auth-profile-item {
407
+ padding: 10px;
408
+ }
409
+
410
+ .auth-profile-header {
411
+ flex-direction: column;
412
+ align-items: stretch;
413
+ gap: 10px;
414
+ }
415
+
416
+ .auth-profile-actions {
417
+ justify-content: flex-start;
418
+ }
419
+
420
+ .auth-profile-grid {
421
+ grid-template-columns: 1fr;
422
+ gap: 6px;
423
+ margin-top: 8px;
424
+ }
425
+
426
+ .auth-profile-row {
427
+ display: flex;
428
+ flex-direction: column;
429
+ gap: 2px;
430
+ padding-bottom: 4px;
431
+ border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
432
+ }
433
+
434
+ .auth-profile-row:last-child {
435
+ border-bottom: none;
436
+ padding-bottom: 0;
437
+ }
438
+
439
+ .session-preview {
440
+ border-radius: var(--radius-lg);
441
+ }
442
+
443
+ .skills-summary-strip {
444
+ grid-template-columns: 1fr;
445
+ }
446
+
447
+ .skills-panel {
448
+ padding: 10px;
449
+ }
450
+
451
+ .skills-root-box {
452
+ font-size: 11px;
453
+ }
454
+ }