codexmate 0.1.9 → 0.1.12

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 (45) hide show
  1. package/README.md +0 -4
  2. package/README.vi.md +0 -4
  3. package/README.zh.md +0 -4
  4. package/cli/agents-files.js +27 -3
  5. package/cli/prompt-history.js +171 -0
  6. package/cli/system-prompt-files.js +20 -2
  7. package/cli.js +83 -2694
  8. package/package.json +1 -1
  9. package/web-ui/app.js +39 -56
  10. package/web-ui/index.html +0 -1
  11. package/web-ui/modules/app.computed.dashboard.mjs +0 -3
  12. package/web-ui/modules/app.computed.main-tabs.mjs +0 -474
  13. package/web-ui/modules/app.methods.agents.mjs +90 -0
  14. package/web-ui/modules/app.methods.index.mjs +1 -3
  15. package/web-ui/modules/app.methods.navigation.mjs +8 -3
  16. package/web-ui/modules/app.methods.session-actions.mjs +57 -25
  17. package/web-ui/modules/app.methods.system-prompt.mjs +81 -0
  18. package/web-ui/modules/app.methods.web-ui-preferences.mjs +26 -9
  19. package/web-ui/modules/i18n/locales/en.mjs +10 -265
  20. package/web-ui/modules/i18n/locales/ja.mjs +10 -265
  21. package/web-ui/modules/i18n/locales/vi.mjs +10 -266
  22. package/web-ui/modules/i18n/locales/zh-tw.mjs +10 -265
  23. package/web-ui/modules/i18n/locales/zh.mjs +10 -265
  24. package/web-ui/partials/index/layout-header.html +5 -48
  25. package/web-ui/partials/index/panel-config-claude.html +3 -3
  26. package/web-ui/partials/index/panel-config-codex.html +3 -3
  27. package/web-ui/partials/index/panel-config-kilocode.html +5 -5
  28. package/web-ui/partials/index/panel-config-openclaw.html +3 -3
  29. package/web-ui/partials/index/panel-config-opencode.html +5 -5
  30. package/web-ui/partials/index/panel-dashboard.html +0 -21
  31. package/web-ui/partials/index/panel-prompts.html +52 -0
  32. package/web-ui/partials/index/panel-sessions.html +12 -0
  33. package/web-ui/partials/index/panel-settings.html +35 -0
  34. package/web-ui/res/web-ui-render.precompiled.js +543 -1376
  35. package/web-ui/session-helpers.mjs +0 -16
  36. package/web-ui/styles/modals-core.css +86 -0
  37. package/web-ui/styles/sessions-preview.css +38 -0
  38. package/web-ui/styles/titles-cards.css +2 -2
  39. package/web-ui/styles.css +0 -1
  40. package/lib/automation.js +0 -404
  41. package/lib/task-orchestrator.js +0 -938
  42. package/lib/task-workspace-chat.js +0 -292
  43. package/web-ui/modules/app.methods.task-orchestration.mjs +0 -895
  44. package/web-ui/partials/index/panel-orchestration.html +0 -598
  45. package/web-ui/styles/task-orchestration.css +0 -2979
@@ -65,6 +65,13 @@
65
65
  :title="t('common.paste')">
66
66
  <svg class="btn-icon-sm" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="8" y="2" width="8" height="4" rx="1"/><path d="M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2"/></svg>
67
67
  </button>
68
+ <button
69
+ class="btn-mini"
70
+ @click="openPromptHistory"
71
+ :disabled="agentsSaving || agentsDiffVisible"
72
+ :title="t('common.history')">
73
+ <svg class="btn-icon-sm" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 8v4l3 2"/><path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.5 4M3 4v4h4"/></svg>
74
+ </button>
68
75
  </div>
69
76
  <div class="prompts-editor-group prompts-editor-group--workflow">
70
77
  <button class="btn-mini" @click="loadPromptsContent" :disabled="agentsSaving || agentsDiffLoading" :title="t('common.cancel')">
@@ -85,6 +92,27 @@
85
92
  </div>
86
93
  </div>
87
94
  </div>
95
+ <details v-if="promptHistoryVisible" class="prompt-history-panel" open>
96
+ <summary class="prompt-history-summary">
97
+ <span>{{ t('common.history') }}</span>
98
+ <button type="button" class="btn-mini prompt-history-close" @click="closePromptHistory" :title="t('common.close')">✕</button>
99
+ </summary>
100
+ <div class="prompt-history-body">
101
+ <ul v-if="!promptHistoryLoading && !promptHistoryError && promptHistoryItems.length" class="prompt-history-list">
102
+ <li v-for="item in promptHistoryItems" :key="item.id" :class="['prompt-history-item', { active: promptHistoryPreviewId === item.id }]" @click="viewPromptHistoryItem(item)">
103
+ <span class="prompt-history-time">{{ item.id }}</span>
104
+ <span class="prompt-history-size">{{ Math.round(item.size / 1024 * 10) / 10 }} KB</span>
105
+ </li>
106
+ </ul>
107
+ <div v-if="promptHistoryLoading" class="state-message">{{ t('diff.generating') }}</div>
108
+ <div v-else-if="promptHistoryError" class="state-message error">{{ promptHistoryError }}</div>
109
+ <div v-else-if="!promptHistoryItems.length" class="state-message">{{ t('toast.history.empty') }}</div>
110
+ <div v-if="promptHistoryPreviewContent" class="prompt-history-preview-wrap">
111
+ <pre class="prompt-history-preview">{{ promptHistoryPreviewContent }}</pre>
112
+ <button type="button" class="btn-mini btn-confirm-mini" @click="applyPromptHistoryToEditor" :disabled="agentsSaving || agentsDiffVisible">{{ t('common.restoreToEditor') }}</button>
113
+ </div>
114
+ </div>
115
+ </details>
88
116
  <div class="prompt-presets-inline-row">
89
117
  <div class="prompt-presets-inline-group">
90
118
  <label class="prompt-presets-inline-label">{{ t('prompts.presets.title') }}</label>
@@ -228,6 +256,9 @@
228
256
  <button class="btn-mini" @click="pasteSysPromptContent" :disabled="sysPromptLoading || sysPromptSaving || sysPromptDiffVisible" :title="t('common.paste')">
229
257
  <svg class="btn-icon-sm" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="8" y="2" width="8" height="4" rx="1"/><path d="M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2"/></svg>
230
258
  </button>
259
+ <button class="btn-mini" @click="openSysHistory" :disabled="sysPromptSaving || sysPromptDiffVisible" :title="t('common.history')">
260
+ <svg class="btn-icon-sm" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 8v4l3 2"/><path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.5 4M3 4v4h4"/></svg>
261
+ </button>
231
262
  </div>
232
263
  <div class="prompts-editor-group prompts-editor-group--workflow">
233
264
  <button class="btn-mini" @click="cancelSysPromptEdit" :disabled="sysPromptSaving || sysPromptDiffLoading" :title="t('common.cancel')">
@@ -243,6 +274,27 @@
243
274
  </div>
244
275
  </div>
245
276
  </div>
277
+ <details v-if="sysHistoryVisible" class="prompt-history-panel" open>
278
+ <summary class="prompt-history-summary">
279
+ <span>{{ t('common.history') }}</span>
280
+ <button type="button" class="btn-mini prompt-history-close" @click="closeSysHistory" :title="t('common.close')">✕</button>
281
+ </summary>
282
+ <div class="prompt-history-body">
283
+ <ul v-if="!sysHistoryLoading && !sysHistoryError && sysHistoryItems.length" class="prompt-history-list">
284
+ <li v-for="item in sysHistoryItems" :key="item.id" :class="['prompt-history-item', { active: sysHistoryPreviewId === item.id }]" @click="viewSysHistoryItem(item)">
285
+ <span class="prompt-history-time">{{ item.id }}</span>
286
+ <span class="prompt-history-size">{{ Math.round(item.size / 1024 * 10) / 10 }} KB</span>
287
+ </li>
288
+ </ul>
289
+ <div v-if="sysHistoryLoading" class="state-message">{{ t('diff.generating') }}</div>
290
+ <div v-else-if="sysHistoryError" class="state-message error">{{ sysHistoryError }}</div>
291
+ <div v-else-if="!sysHistoryItems.length" class="state-message">{{ t('toast.history.empty') }}</div>
292
+ <div v-if="sysHistoryPreviewContent" class="prompt-history-preview-wrap">
293
+ <pre class="prompt-history-preview">{{ sysHistoryPreviewContent }}</pre>
294
+ <button type="button" class="btn-mini btn-confirm-mini" @click="applySysHistoryToEditor" :disabled="sysPromptSaving || sysPromptDiffVisible">{{ t('common.restoreToEditor') }}</button>
295
+ </div>
296
+ </div>
297
+ </details>
246
298
  <div class="form-group">
247
299
  <div v-if="sysPromptDiffVisible">
248
300
  <div
@@ -410,6 +410,18 @@
410
410
  </div>
411
411
  </div>
412
412
  <div class="session-msg-content" v-html="highlightQueryText(msg.text) || ''"></div>
413
+ <button
414
+ v-if="msg.normalizedRole === 'user'"
415
+ type="button"
416
+ class="session-msg-copy"
417
+ @click="copySessionMessage(msg)"
418
+ :aria-label="t('sessions.preview.copyMessage')"
419
+ :title="t('sessions.preview.copyMessage')">
420
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
421
+ <rect x="8" y="8" width="12" height="12" rx="2"></rect>
422
+ <path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"></path>
423
+ </svg>
424
+ </button>
413
425
  </div>
414
426
  <div v-if="canLoadMoreSessionMessages" class="session-preview-load-more">
415
427
  <span>{{ t('sessions.preview.shownCount', { shown: activeSessionVisibleMessages.length, total: activeSessionMessages.length }) }}</span>
@@ -138,6 +138,41 @@
138
138
  </div>
139
139
  </div>
140
140
  </section>
141
+
142
+ <section class="settings-card" :aria-label="t('settings.configTabs.title')">
143
+ <div class="settings-card-main">
144
+ <div class="settings-card-content">
145
+ <div class="settings-card-title">{{ t('settings.configTabs.title') }}</div>
146
+ <p class="settings-card-desc">{{ t('settings.configTabs.meta') }}</p>
147
+ <label class="settings-toggle-row">
148
+ <input type="checkbox" :checked="configModeVisibility.codex" @change="setConfigModeVisibility('codex', $event.target.checked)">
149
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
150
+ <span>{{ t('tab.config.codex') }}</span>
151
+ </label>
152
+ <label class="settings-toggle-row">
153
+ <input type="checkbox" :checked="configModeVisibility.claude" @change="setConfigModeVisibility('claude', $event.target.checked)">
154
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
155
+ <span>{{ t('tab.config.claude') }}</span>
156
+ </label>
157
+ <label class="settings-toggle-row">
158
+ <input type="checkbox" :checked="configModeVisibility.openclaw" @change="setConfigModeVisibility('openclaw', $event.target.checked)">
159
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
160
+ <span>{{ t('tab.config.openclaw') }}</span>
161
+ </label>
162
+ <label class="settings-toggle-row">
163
+ <input type="checkbox" :checked="configModeVisibility.opencode" @change="setConfigModeVisibility('opencode', $event.target.checked)">
164
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
165
+ <span>{{ t('tab.config.opencode') }}</span>
166
+ </label>
167
+ <label class="settings-toggle-row">
168
+ <input type="checkbox" :checked="configModeVisibility.kilocode" @change="setConfigModeVisibility('kilocode', $event.target.checked)">
169
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
170
+ <span>{{ t('tab.config.kilocode') }}</span>
171
+ </label>
172
+ <p class="settings-card-hint">{{ t('settings.configTabs.hint') }}</p>
173
+ </div>
174
+ </div>
175
+ </section>
141
176
  </div>
142
177
  </div>
143
178