codexmate 0.0.38 → 0.0.40

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 (43) hide show
  1. package/cli/builtin-proxy.js +626 -207
  2. package/cli/config-bootstrap.js +6 -1
  3. package/cli/openai-bridge.js +541 -210
  4. package/cli.js +189 -4
  5. package/package.json +1 -1
  6. package/plugins/prompt-templates/computed.mjs +61 -3
  7. package/plugins/prompt-templates/manifest.mjs +3 -0
  8. package/web-ui/app.js +14 -3
  9. package/web-ui/modules/app.computed.main-tabs.mjs +39 -30
  10. package/web-ui/modules/app.methods.claude-config.mjs +111 -9
  11. package/web-ui/modules/app.methods.index.mjs +2 -0
  12. package/web-ui/modules/app.methods.openclaw-editing.mjs +48 -0
  13. package/web-ui/modules/app.methods.openclaw-persist.mjs +13 -7
  14. package/web-ui/modules/app.methods.providers.mjs +36 -10
  15. package/web-ui/modules/app.methods.runtime.mjs +76 -1
  16. package/web-ui/modules/app.methods.startup-claude.mjs +7 -0
  17. package/web-ui/modules/app.methods.tool-config-permissions.mjs +87 -0
  18. package/web-ui/modules/config-mode.computed.mjs +3 -3
  19. package/web-ui/modules/i18n/locales/en.mjs +1140 -0
  20. package/web-ui/modules/i18n/locales/ja.mjs +1130 -0
  21. package/web-ui/modules/i18n/locales/vi.mjs +239 -0
  22. package/web-ui/modules/i18n/locales/zh.mjs +1143 -0
  23. package/web-ui/modules/i18n.dict.mjs +9 -3195
  24. package/web-ui/modules/i18n.mjs +65 -16
  25. package/web-ui/partials/index/layout-header.html +16 -46
  26. package/web-ui/partials/index/modal-openclaw-config.html +135 -71
  27. package/web-ui/partials/index/modal-webhook.html +8 -8
  28. package/web-ui/partials/index/modals-basic.html +56 -16
  29. package/web-ui/partials/index/panel-config-claude.html +51 -21
  30. package/web-ui/partials/index/panel-config-codex.html +34 -5
  31. package/web-ui/partials/index/panel-config-openclaw.html +70 -64
  32. package/web-ui/partials/index/panel-dashboard.html +62 -77
  33. package/web-ui/partials/index/panel-settings.html +28 -7
  34. package/web-ui/partials/index/panel-trash.html +14 -14
  35. package/web-ui/res/web-ui-render.precompiled.js +1783 -1386
  36. package/web-ui/styles/controls-forms.css +99 -0
  37. package/web-ui/styles/dashboard.css +46 -14
  38. package/web-ui/styles/layout-shell.css +45 -0
  39. package/web-ui/styles/navigation-panels.css +3 -3
  40. package/web-ui/styles/openclaw-structured.css +383 -33
  41. package/web-ui/styles/responsive.css +68 -0
  42. package/web-ui/styles/sessions-usage.css +105 -9
  43. package/web-ui/styles/settings-panel.css +4 -0
@@ -406,6 +406,12 @@
406
406
  font-size: 12px;
407
407
  }
408
408
 
409
+ .btn-sm {
410
+ min-height: 32px;
411
+ padding: 6px 12px;
412
+ font-size: 12px;
413
+ }
414
+
409
415
  .selector-header .btn-tool-compact {
410
416
  display: inline-flex;
411
417
  align-items: center;
@@ -431,3 +437,96 @@
431
437
  flex-direction: column;
432
438
  }
433
439
  }
440
+
441
+ .tool-config-write-card {
442
+ display: flex;
443
+ align-items: center;
444
+ justify-content: space-between;
445
+ gap: 16px;
446
+ margin: 0 0 14px;
447
+ padding: 14px 16px;
448
+ border: 1px solid var(--color-border-soft);
449
+ border-radius: 16px;
450
+ background: var(--color-surface-elevated);
451
+ }
452
+
453
+ .tool-config-write-title {
454
+ font-weight: 700;
455
+ color: var(--color-text-primary);
456
+ }
457
+
458
+ .tool-config-write-desc {
459
+ margin: 4px 0 0;
460
+ color: var(--color-text-secondary);
461
+ font-size: 13px;
462
+ line-height: 1.45;
463
+ }
464
+
465
+ .tool-config-write-toggle {
466
+ flex: 0 0 auto;
467
+ margin: 0;
468
+ }
469
+
470
+ .tool-config-write-scope {
471
+ position: relative;
472
+ }
473
+
474
+ .tool-config-write-body {
475
+ transition: filter 0.2s ease, opacity 0.2s ease;
476
+ }
477
+
478
+ .tool-config-write-scope.locked .tool-config-write-body {
479
+ pointer-events: none;
480
+ user-select: none;
481
+ filter: saturate(0.55) blur(0.5px);
482
+ opacity: 0.48;
483
+ }
484
+
485
+ .tool-config-write-overlay {
486
+ position: absolute;
487
+ inset: 0;
488
+ z-index: 20;
489
+ display: flex;
490
+ align-items: center;
491
+ justify-content: center;
492
+ box-sizing: border-box;
493
+ min-height: 360px;
494
+ padding: 16px;
495
+ border-radius: 18px;
496
+ background: rgba(247, 240, 233, 0.78);
497
+ background: color-mix(in srgb, var(--color-bg) 68%, transparent);
498
+ backdrop-filter: blur(2px);
499
+ }
500
+
501
+ .tool-config-write-overlay-card {
502
+ max-width: 460px;
503
+ padding: 18px 20px;
504
+ border: 1px solid var(--color-border-soft);
505
+ border-radius: 18px;
506
+ background: var(--color-surface-elevated);
507
+ box-shadow: var(--shadow-float);
508
+ text-align: center;
509
+ }
510
+
511
+ .tool-config-write-overlay-title {
512
+ font-weight: 800;
513
+ color: var(--color-text-primary);
514
+ margin-bottom: 8px;
515
+ }
516
+
517
+ .tool-config-write-overlay-card p {
518
+ margin: 0 0 14px;
519
+ color: var(--color-text-secondary);
520
+ line-height: 1.55;
521
+ }
522
+
523
+ @media (max-width: 720px) {
524
+ .tool-config-write-card {
525
+ align-items: stretch;
526
+ flex-direction: column;
527
+ }
528
+
529
+ .tool-config-write-toggle {
530
+ justify-content: flex-start;
531
+ }
532
+ }
@@ -4,8 +4,9 @@
4
4
 
5
5
  .doctor-grid {
6
6
  display: grid;
7
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
7
+ grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
8
8
  gap: 12px;
9
+ margin-top: 12px;
9
10
  }
10
11
 
11
12
  .doctor-card {
@@ -78,8 +79,8 @@
78
79
  -webkit-line-clamp: 2;
79
80
  overflow-wrap: anywhere;
80
81
  word-break: break-word;
81
- justify-self: center;
82
- text-align: center;
82
+ justify-self: start;
83
+ text-align: left;
83
84
  }
84
85
 
85
86
  .doctor-kv-error {
@@ -90,11 +91,11 @@
90
91
  }
91
92
 
92
93
  .doctor-status-row {
93
- margin-top: 12px;
94
+ margin-top: 4px;
94
95
  display: flex;
95
96
  flex-wrap: wrap;
96
97
  gap: 10px;
97
- justify-content: center;
98
+ justify-content: flex-start;
98
99
  }
99
100
 
100
101
  .doctor-status-chip {
@@ -135,12 +136,12 @@
135
136
  }
136
137
 
137
138
  .doctor-health-result {
138
- margin-top: 14px;
139
+ margin-top: 12px;
139
140
  border-radius: var(--radius-lg);
140
141
  border: 1px solid var(--color-border-soft);
141
142
  padding: 12px 12px 10px;
142
143
  background: rgba(255, 255, 255, 0.78);
143
- text-align: center;
144
+ text-align: left;
144
145
  }
145
146
 
146
147
  .doctor-health-result.ok {
@@ -158,8 +159,7 @@
158
159
  .doctor-health-title {
159
160
  font-weight: var(--font-weight-secondary);
160
161
  color: var(--color-text-primary);
161
- margin-bottom: 8px;
162
- text-align: center;
162
+ text-align: left;
163
163
  }
164
164
 
165
165
  .doctor-health-issues {
@@ -195,13 +195,13 @@
195
195
  background: rgba(255, 255, 255, 0.78);
196
196
  padding: 12px;
197
197
  overflow: hidden;
198
- text-align: center;
198
+ text-align: left;
199
199
  }
200
200
 
201
201
  .doctor-action-head {
202
202
  display: flex;
203
203
  align-items: center;
204
- justify-content: center;
204
+ justify-content: space-between;
205
205
  gap: 10px;
206
206
  flex-wrap: wrap;
207
207
  margin-bottom: 8px;
@@ -215,9 +215,11 @@
215
215
  text-overflow: ellipsis;
216
216
  white-space: nowrap;
217
217
  max-width: 100%;
218
+ flex: 1 1 220px;
218
219
  }
219
220
 
220
221
  .doctor-action-severity {
222
+ flex: 0 0 auto;
221
223
  font-size: var(--font-size-caption);
222
224
  padding: 3px 10px;
223
225
  border-radius: 999px;
@@ -251,26 +253,56 @@
251
253
  overflow-wrap: anywhere;
252
254
  word-break: break-word;
253
255
  max-width: 920px;
254
- margin: 0 auto 10px;
256
+ margin: 0 0 10px;
255
257
  }
256
258
 
257
259
  .doctor-action-buttons {
258
260
  display: flex;
259
261
  flex-wrap: wrap;
260
262
  gap: 8px;
261
- justify-content: center;
263
+ justify-content: flex-start;
262
264
  }
263
265
 
264
266
  .doctor-action-footer {
265
267
  display: flex;
266
- justify-content: center;
268
+ justify-content: flex-start;
269
+ flex-wrap: wrap;
270
+ gap: 8px;
267
271
  margin-top: 2px;
268
272
  }
269
273
 
270
274
  @media (max-width: 520px) {
275
+ .doctor-grid {
276
+ grid-template-columns: 1fr;
277
+ gap: 10px;
278
+ }
279
+
280
+ .doctor-card {
281
+ padding: 12px;
282
+ gap: 6px;
283
+ }
284
+
271
285
  .doctor-card-kv {
272
286
  grid-template-columns: 76px minmax(0, 1fr);
273
287
  }
288
+
289
+ .doctor-status-row {
290
+ gap: 8px;
291
+ }
292
+
293
+ .doctor-status-chip {
294
+ flex: 1 1 120px;
295
+ }
296
+
297
+ .doctor-action-card {
298
+ padding: 10px;
299
+ }
300
+
301
+ .doctor-action-buttons .btn-tool,
302
+ .doctor-action-footer .btn-tool {
303
+ flex: 1 1 150px;
304
+ justify-content: center;
305
+ }
274
306
  }
275
307
 
276
308
  .doctor-providers-health {
@@ -664,3 +664,48 @@ body::after {
664
664
  line-height: 1;
665
665
  box-shadow: 0 2px 6px rgba(200, 121, 99, 0.28);
666
666
  }
667
+
668
+ .language-settings-link {
669
+ display: inline-flex;
670
+ align-items: center;
671
+ justify-content: center;
672
+ gap: 8px;
673
+ min-height: 36px;
674
+ max-width: calc(100% - 16px);
675
+ padding: 8px 14px;
676
+ border-radius: 999px;
677
+ border: 1px solid rgba(163, 146, 134, 0.28);
678
+ background: rgba(255, 253, 252, 0.92);
679
+ color: var(--color-text-secondary);
680
+ font-size: 13px;
681
+ font-weight: 700;
682
+ line-height: 1;
683
+ white-space: nowrap;
684
+ overflow: hidden;
685
+ text-overflow: ellipsis;
686
+ box-shadow: 0 10px 28px rgba(27, 23, 20, 0.12);
687
+ cursor: pointer;
688
+ transition: background-color var(--transition-fast) var(--ease-smooth), border-color var(--transition-fast) var(--ease-smooth), color var(--transition-fast) var(--ease-smooth), transform var(--transition-fast) var(--ease-smooth);
689
+ }
690
+
691
+ .language-settings-link:hover {
692
+ border-color: rgba(200, 121, 99, 0.58);
693
+ background: rgba(255, 255, 255, 0.96);
694
+ color: var(--color-text-primary);
695
+ transform: translateY(-1px);
696
+ }
697
+
698
+ .language-settings-link:active {
699
+ transform: translateY(0);
700
+ }
701
+
702
+ .side-rail-lang .language-settings-link {
703
+ width: calc(100% - 20px);
704
+ box-shadow: none;
705
+ }
706
+
707
+ .lang-fab .language-settings-link {
708
+ pointer-events: auto;
709
+ position: relative;
710
+ z-index: 1;
711
+ }
@@ -170,7 +170,7 @@
170
170
  border: none;
171
171
  border-radius: 0;
172
172
  box-shadow: none;
173
- padding: 0 28px 28px;
173
+ padding: 0 16px 16px;
174
174
  backdrop-filter: none;
175
175
  position: relative;
176
176
  overflow-x: hidden;
@@ -189,8 +189,8 @@
189
189
  position: sticky;
190
190
  top: 0;
191
191
  z-index: 12;
192
- margin: 0 -28px 18px;
193
- padding: 0 28px 14px;
192
+ margin: 0 -16px 18px;
193
+ padding: 0 16px 14px;
194
194
  background: linear-gradient(180deg, var(--color-bg-topbar-strong) 0%, var(--color-bg-topbar-soft) 78%, var(--color-bg-topbar-clear) 100%);
195
195
  backdrop-filter: blur(18px) saturate(130%);
196
196
  }