codexmate 0.0.55 → 0.0.57

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 (49) hide show
  1. package/README.md +2 -0
  2. package/README.vi.md +2 -0
  3. package/README.zh.md +2 -0
  4. package/cli/local-bridge.js +221 -22
  5. package/cli.js +797 -134
  6. package/lib/task-orchestrator.js +90 -21
  7. package/lib/task-workspace-chat.js +292 -0
  8. package/package.json +2 -2
  9. package/web-ui/app.js +57 -129
  10. package/web-ui/modules/app.computed.main-tabs.mjs +304 -7
  11. package/web-ui/modules/app.computed.session.mjs +210 -0
  12. package/web-ui/modules/app.methods.agents.mjs +3 -0
  13. package/web-ui/modules/app.methods.claude-config.mjs +178 -22
  14. package/web-ui/modules/app.methods.codex-config.mjs +294 -65
  15. package/web-ui/modules/app.methods.navigation.mjs +71 -84
  16. package/web-ui/modules/app.methods.openclaw-editing.mjs +3 -6
  17. package/web-ui/modules/app.methods.providers.mjs +15 -1
  18. package/web-ui/modules/app.methods.runtime.mjs +7 -2
  19. package/web-ui/modules/app.methods.session-actions.mjs +25 -12
  20. package/web-ui/modules/app.methods.session-browser.mjs +23 -54
  21. package/web-ui/modules/app.methods.session-trash.mjs +0 -1
  22. package/web-ui/modules/app.methods.startup-claude.mjs +35 -17
  23. package/web-ui/modules/app.methods.task-orchestration.mjs +347 -8
  24. package/web-ui/modules/app.methods.tool-config-permissions.mjs +0 -3
  25. package/web-ui/modules/app.methods.web-ui-preferences.mjs +415 -68
  26. package/web-ui/modules/config-template-confirm-pref.mjs +2 -3
  27. package/web-ui/modules/i18n/locales/en.mjs +187 -28
  28. package/web-ui/modules/i18n/locales/ja.mjs +184 -25
  29. package/web-ui/modules/i18n/locales/vi.mjs +186 -33
  30. package/web-ui/modules/i18n/locales/zh-tw.mjs +187 -28
  31. package/web-ui/modules/i18n/locales/zh.mjs +189 -30
  32. package/web-ui/modules/i18n.mjs +5 -12
  33. package/web-ui/modules/provider-default-names.mjs +25 -0
  34. package/web-ui/modules/sessions-filters-url.mjs +1 -2
  35. package/web-ui/partials/index/layout-header.html +37 -14
  36. package/web-ui/partials/index/modal-health-check.html +69 -5
  37. package/web-ui/partials/index/panel-config-codex.html +2 -2
  38. package/web-ui/partials/index/panel-orchestration.html +489 -282
  39. package/web-ui/partials/index/panel-sessions.html +97 -17
  40. package/web-ui/res/web-ui-render.precompiled.js +1423 -732
  41. package/web-ui/session-helpers.mjs +4 -1
  42. package/web-ui/styles/layout-shell.css +157 -1
  43. package/web-ui/styles/navigation-panels.css +11 -0
  44. package/web-ui/styles/responsive.css +98 -0
  45. package/web-ui/styles/sessions-preview.css +212 -2
  46. package/web-ui/styles/sessions-toolbar-trash.css +61 -18
  47. package/web-ui/styles/skills-list.css +122 -0
  48. package/web-ui/styles/task-orchestration.css +2161 -4
  49. package/web-ui/styles/titles-cards.css +52 -0
@@ -1,9 +1,10 @@
1
1
  <div v-if="showHealthCheckModal" class="modal-overlay" @click.self="showHealthCheckModal = false">
2
- <div class="modal" role="dialog" aria-modal="true" aria-labelledby="health-check-modal-title">
2
+ <div class="modal modal-health-check" role="dialog" aria-modal="true" aria-labelledby="health-check-modal-title">
3
3
  <div class="modal-title" id="health-check-modal-title">{{ t('config.health.title') }}</div>
4
4
 
5
- <div v-if="!healthCheckResult" class="state-message">{{ t('common.notLoaded') }}</div>
6
- <template v-else>
5
+ <div class="health-check-modal-body">
6
+ <div v-if="!healthCheckResult" class="state-message">{{ t('common.notLoaded') }}</div>
7
+ <template v-else>
7
8
  <div class="form-hint">
8
9
  {{ healthCheckResult.ok ? t('config.health.ok') : t('config.health.fail') }}
9
10
  <span v-if="healthCheckResult.issues">({{ t('config.health.issues', { count: healthCheckResult.issues.length }) }})</span>
@@ -15,6 +16,62 @@
15
16
  <span v-if="healthCheckResult.remote.message"> · {{ healthCheckResult.remote.message }}</span>
16
17
  </div>
17
18
 
19
+ <div v-if="healthCheckResult.remote && healthCheckResult.remote.type === 'providers-health'" class="form-hint">
20
+ {{ t('config.health.providersSummary', healthCheckResult.remote.summary || { total: 0, green: 0, yellow: 0, red: 0 }) }}
21
+ </div>
22
+
23
+ <div v-if="getHealthCheckFailedProviderItems().length" class="model-list health-failed-provider-list">
24
+ <div class="model-item health-failed-provider-header">
25
+ <span class="health-failed-provider-main">
26
+ <input
27
+ type="checkbox"
28
+ :checked="areAllHealthCheckFailedProvidersSelected()"
29
+ :disabled="!getSelectableHealthCheckFailedProviderItems().length || healthCheckFailedProviderDeleting"
30
+ @change="setAllHealthCheckFailedProviderSelections($event.target.checked)"
31
+ :aria-label="t('config.health.failedProviders.selectAllAria')"
32
+ >
33
+ <span>{{ t('config.health.failedProviders.title') }}</span>
34
+ </span>
35
+ <span class="health-failed-provider-actions">
36
+ <button
37
+ type="button"
38
+ class="btn-link"
39
+ :disabled="!getSelectableHealthCheckFailedProviderItems().length || healthCheckFailedProviderDeleting"
40
+ @click="setAllHealthCheckFailedProviderSelections(true)"
41
+ >{{ t('config.health.failedProviders.selectAll') }}</button>
42
+ <button
43
+ type="button"
44
+ class="btn-link"
45
+ :disabled="!hasHealthCheckFailedProviderSelection() || healthCheckFailedProviderDeleting"
46
+ @click="setAllHealthCheckFailedProviderSelections(false)"
47
+ >{{ t('config.health.failedProviders.clearSelection') }}</button>
48
+ <span class="latency error">{{ getHealthCheckFailedProviderItems().length }}</span>
49
+ </span>
50
+ </div>
51
+ <label
52
+ v-for="item in getHealthCheckFailedProviderItems()"
53
+ :key="item.key"
54
+ class="model-item health-failed-provider-item"
55
+ :class="{ disabled: !item.deletable }"
56
+ >
57
+ <span class="health-failed-provider-main">
58
+ <input
59
+ type="checkbox"
60
+ :checked="item.selected"
61
+ :disabled="!item.deletable || healthCheckFailedProviderDeleting"
62
+ @change="toggleHealthCheckFailedProviderSelection(item, $event.target.checked)"
63
+ :aria-label="t('config.health.failedProviders.selectAria', { name: item.name })"
64
+ >
65
+ <span>
66
+ <strong>{{ item.name }}</strong>
67
+ <span class="form-hint" v-if="item.detail">{{ item.detail }}</span>
68
+ <span class="form-hint" v-if="!item.deletable">{{ item.blockedReason === 'readonly' ? t('config.health.failedProviders.writeRequired') : t('config.health.failedProviders.notDeletable') }}</span>
69
+ </span>
70
+ </span>
71
+ <span class="latency error">{{ item.status }}</span>
72
+ </label>
73
+ </div>
74
+
18
75
  <div v-if="healthCheckResult.remote && healthCheckResult.remote.speedTests" class="model-list">
19
76
  <div
20
77
  v-for="(result, name) in healthCheckResult.remote.speedTests"
@@ -36,9 +93,16 @@
36
93
  <span>{{ issue.message || issue.code || '' }}</span>
37
94
  </div>
38
95
  </div>
39
- </template>
96
+ </template>
97
+ </div>
40
98
 
41
- <div class="btn-group">
99
+ <div class="btn-group health-check-modal-actions">
100
+ <button
101
+ v-if="getHealthCheckFailedProviderItems().length"
102
+ class="btn btn-confirm btn-danger"
103
+ :disabled="healthCheckFailedProviderDeleting || !hasHealthCheckFailedProviderSelection()"
104
+ @click="deleteSelectedHealthCheckFailedProviders()"
105
+ >{{ healthCheckFailedProviderDeleting ? t('config.health.failedProviders.deleting') : t('config.health.failedProviders.deleteSelected') }}</button>
42
106
  <button class="btn btn-confirm" @click="showHealthCheckModal = false">{{ t('common.close') }}</button>
43
107
  </div>
44
108
  </div>
@@ -47,7 +47,7 @@
47
47
 
48
48
  <div class="tool-config-write-scope" :class="{ locked: !isToolConfigWriteAllowed('codex') }">
49
49
  <div class="tool-config-write-body">
50
- <button class="btn-add" @click="showAddProviderKey = false; showAddModal = true" v-if="!loading && !initError" :disabled="!isToolConfigWriteAllowed('codex')">
50
+ <button class="btn-add" @click="openAddProviderModal" v-if="!loading && !initError" :disabled="!isToolConfigWriteAllowed('codex')">
51
51
  <svg class="icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2"><path d="M10 4v12M4 10h12"/></svg>
52
52
  {{ t('config.addProvider') }}
53
53
  </button>
@@ -131,7 +131,7 @@
131
131
  <div class="selector-section">
132
132
  <div class="selector-header"><span class="selector-title">{{ t('config.health.title') }}</span></div>
133
133
  <button class="btn-tool" @click="runHealthCheck" :disabled="healthCheckLoading || loading || !!initError">{{ healthCheckLoading ? t('config.health.running') : t('config.health.run') }}</button>
134
- <div class="config-template-hint">{{ t('config.health.hint') }}</div>
134
+ <div class="config-template-hint">{{ t('config.health.codexHint') }}</div>
135
135
  </div>
136
136
  </template>
137
137