codexmate 0.0.31 → 0.0.32

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 (145) hide show
  1. package/README.md +363 -363
  2. package/README.zh.md +371 -371
  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 +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 +324 -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/zip-commands.js +510 -510
  23. package/cli.js +15829 -15778
  24. package/lib/automation.js +404 -404
  25. package/lib/cli-file-utils.js +151 -151
  26. package/lib/cli-models-utils.js +440 -440
  27. package/lib/cli-network-utils.js +190 -190
  28. package/lib/cli-path-utils.js +85 -85
  29. package/lib/cli-session-utils.js +121 -121
  30. package/lib/cli-sessions.js +426 -417
  31. package/lib/cli-utils.js +155 -155
  32. package/lib/cli-webhook.js +126 -126
  33. package/lib/download-artifacts.js +92 -92
  34. package/lib/mcp-stdio.js +453 -453
  35. package/lib/task-orchestrator.js +869 -869
  36. package/lib/text-diff.js +303 -303
  37. package/lib/workflow-engine.js +340 -340
  38. package/package.json +76 -76
  39. package/plugins/README.md +20 -20
  40. package/plugins/README.zh-CN.md +20 -20
  41. package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
  42. package/plugins/prompt-templates/computed.mjs +253 -253
  43. package/plugins/prompt-templates/index.mjs +8 -8
  44. package/plugins/prompt-templates/manifest.mjs +15 -15
  45. package/plugins/prompt-templates/methods.mjs +553 -553
  46. package/plugins/prompt-templates/overview.mjs +91 -91
  47. package/plugins/prompt-templates/ownership.mjs +19 -19
  48. package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
  49. package/plugins/prompt-templates/storage.mjs +64 -64
  50. package/plugins/registry.mjs +16 -16
  51. package/web-ui/app.js +647 -646
  52. package/web-ui/index.html +36 -36
  53. package/web-ui/logic.agents-diff.mjs +386 -386
  54. package/web-ui/logic.claude.mjs +168 -168
  55. package/web-ui/logic.codex.mjs +69 -69
  56. package/web-ui/logic.mjs +5 -5
  57. package/web-ui/logic.runtime.mjs +128 -128
  58. package/web-ui/logic.session-convert.mjs +70 -70
  59. package/web-ui/logic.sessions.mjs +781 -765
  60. package/web-ui/modules/api.mjs +90 -90
  61. package/web-ui/modules/app.computed.dashboard.mjs +248 -248
  62. package/web-ui/modules/app.computed.index.mjs +17 -17
  63. package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
  64. package/web-ui/modules/app.computed.session.mjs +693 -999
  65. package/web-ui/modules/app.constants.mjs +15 -15
  66. package/web-ui/modules/app.methods.agents.mjs +651 -632
  67. package/web-ui/modules/app.methods.claude-config.mjs +200 -200
  68. package/web-ui/modules/app.methods.codex-config.mjs +861 -841
  69. package/web-ui/modules/app.methods.index.mjs +94 -94
  70. package/web-ui/modules/app.methods.install.mjs +205 -205
  71. package/web-ui/modules/app.methods.navigation.mjs +774 -774
  72. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  73. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  74. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  75. package/web-ui/modules/app.methods.providers.mjs +529 -529
  76. package/web-ui/modules/app.methods.runtime.mjs +345 -345
  77. package/web-ui/modules/app.methods.session-actions.mjs +591 -591
  78. package/web-ui/modules/app.methods.session-browser.mjs +1012 -984
  79. package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
  80. package/web-ui/modules/app.methods.session-trash.mjs +438 -438
  81. package/web-ui/modules/app.methods.startup-claude.mjs +537 -534
  82. package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
  83. package/web-ui/modules/app.methods.webhook.mjs +79 -79
  84. package/web-ui/modules/config-mode.computed.mjs +124 -124
  85. package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
  86. package/web-ui/modules/i18n.dict.mjs +3177 -3174
  87. package/web-ui/modules/i18n.mjs +62 -62
  88. package/web-ui/modules/plugins.computed.mjs +3 -3
  89. package/web-ui/modules/plugins.methods.mjs +3 -3
  90. package/web-ui/modules/plugins.storage.mjs +11 -11
  91. package/web-ui/modules/provider-url-display.mjs +17 -17
  92. package/web-ui/modules/sessions-filters-url.mjs +85 -85
  93. package/web-ui/modules/skills.computed.mjs +107 -107
  94. package/web-ui/modules/skills.methods.mjs +482 -482
  95. package/web-ui/partials/index/layout-footer.html +13 -13
  96. package/web-ui/partials/index/layout-header.html +503 -500
  97. package/web-ui/partials/index/modal-config-template-agents.html +185 -174
  98. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  99. package/web-ui/partials/index/modal-health-check.html +45 -45
  100. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  101. package/web-ui/partials/index/modal-skills.html +200 -200
  102. package/web-ui/partials/index/modals-basic.html +162 -162
  103. package/web-ui/partials/index/panel-config-claude.html +136 -194
  104. package/web-ui/partials/index/panel-config-codex.html +197 -357
  105. package/web-ui/partials/index/panel-config-openclaw.html +83 -83
  106. package/web-ui/partials/index/panel-dashboard.html +219 -219
  107. package/web-ui/partials/index/panel-docs.html +115 -147
  108. package/web-ui/partials/index/panel-market.html +177 -177
  109. package/web-ui/partials/index/panel-orchestration.html +391 -391
  110. package/web-ui/partials/index/panel-plugins.html +253 -253
  111. package/web-ui/partials/index/panel-sessions.html +313 -302
  112. package/web-ui/partials/index/panel-settings.html +190 -190
  113. package/web-ui/partials/index/panel-trash.html +83 -88
  114. package/web-ui/partials/index/panel-usage.html +138 -371
  115. package/web-ui/res/json5.min.js +1 -1
  116. package/web-ui/res/vue.global.prod.js +13 -13
  117. package/web-ui/session-helpers.mjs +591 -591
  118. package/web-ui/source-bundle.cjs +233 -233
  119. package/web-ui/styles/base-theme.css +281 -281
  120. package/web-ui/styles/bridge-pool.css +197 -197
  121. package/web-ui/styles/controls-forms.css +433 -422
  122. package/web-ui/styles/dashboard.css +406 -406
  123. package/web-ui/styles/docs-panel.css +245 -271
  124. package/web-ui/styles/feedback.css +108 -108
  125. package/web-ui/styles/health-check-dialog.css +144 -144
  126. package/web-ui/styles/layout-shell.css +638 -626
  127. package/web-ui/styles/modals-core.css +466 -466
  128. package/web-ui/styles/navigation-panels.css +391 -391
  129. package/web-ui/styles/openclaw-structured.css +266 -266
  130. package/web-ui/styles/plugins-panel.css +564 -564
  131. package/web-ui/styles/responsive.css +392 -454
  132. package/web-ui/styles/sessions-list.css +647 -417
  133. package/web-ui/styles/sessions-preview.css +407 -407
  134. package/web-ui/styles/sessions-toolbar-trash.css +518 -348
  135. package/web-ui/styles/sessions-usage.css +588 -1040
  136. package/web-ui/styles/settings-panel.css +349 -349
  137. package/web-ui/styles/skills-list.css +305 -305
  138. package/web-ui/styles/skills-market.css +429 -429
  139. package/web-ui/styles/task-orchestration.css +822 -822
  140. package/web-ui/styles/titles-cards.css +472 -472
  141. package/web-ui/styles/trash-panel.css +90 -90
  142. package/web-ui/styles/webhook.css +81 -81
  143. package/web-ui/styles.css +24 -24
  144. package/web-ui.html +17 -17
  145. package/web-ui/partials/index/panel-config-codex.html.bak +0 -337
@@ -1,454 +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.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: 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
+ }