codexmate 0.0.33 → 0.0.36

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 (47) hide show
  1. package/cli/agents-files.js +6 -0
  2. package/cli/archive-helpers.js +11 -4
  3. package/cli/local-bridge.js +9 -4
  4. package/cli/openai-bridge.js +1 -1
  5. package/cli/update.js +11 -2
  6. package/cli.js +133 -64
  7. package/lib/cli-webhook.js +29 -1
  8. package/package.json +2 -1
  9. package/web-ui/app.js +37 -2
  10. package/web-ui/index.html +2 -1
  11. package/web-ui/logic.claude.mjs +4 -0
  12. package/web-ui/logic.sessions.mjs +6 -5
  13. package/web-ui/modules/app.computed.dashboard.mjs +4 -0
  14. package/web-ui/modules/app.computed.session.mjs +147 -6
  15. package/web-ui/modules/app.methods.claude-config.mjs +41 -0
  16. package/web-ui/modules/app.methods.codex-config.mjs +11 -3
  17. package/web-ui/modules/app.methods.navigation.mjs +32 -2
  18. package/web-ui/modules/app.methods.session-browser.mjs +12 -6
  19. package/web-ui/modules/app.methods.session-trash.mjs +30 -0
  20. package/web-ui/modules/app.methods.startup-claude.mjs +9 -0
  21. package/web-ui/modules/app.methods.webhook.mjs +8 -0
  22. package/web-ui/modules/i18n.dict.mjs +8 -0
  23. package/web-ui/modules/sessions-filters-url.mjs +65 -12
  24. package/web-ui/modules/skills.methods.mjs +31 -0
  25. package/web-ui/partials/index/layout-header.html +17 -12
  26. package/web-ui/partials/index/modal-webhook.html +42 -0
  27. package/web-ui/partials/index/modals-basic.html +50 -0
  28. package/web-ui/partials/index/panel-config-claude.html +13 -22
  29. package/web-ui/partials/index/panel-config-codex.html +8 -22
  30. package/web-ui/partials/index/panel-market.html +76 -149
  31. package/web-ui/partials/index/panel-sessions.html +2 -2
  32. package/web-ui/partials/index/panel-settings.html +119 -149
  33. package/web-ui/partials/index/panel-usage.html +115 -68
  34. package/web-ui/res/vue.runtime.global.prod.js +7 -0
  35. package/web-ui/res/web-ui-render.precompiled.js +7274 -0
  36. package/web-ui/session-helpers.mjs +15 -4
  37. package/web-ui/source-bundle.cjs +73 -1
  38. package/web-ui/styles/base-theme.css +10 -0
  39. package/web-ui/styles/bridge-pool.css +69 -0
  40. package/web-ui/styles/layout-shell.css +66 -27
  41. package/web-ui/styles/navigation-panels.css +8 -0
  42. package/web-ui/styles/responsive.css +50 -9
  43. package/web-ui/styles/sessions-usage.css +336 -319
  44. package/web-ui/styles/settings-panel.css +300 -234
  45. package/web-ui/styles/skills-market.css +294 -0
  46. package/web-ui/styles/titles-cards.css +14 -0
  47. package/web-ui/styles/webhook.css +38 -4
@@ -1,3 +1,297 @@
1
+ /* =========================
2
+ Minimalist Skills Flow Layout
3
+ ========================= */
4
+
5
+ /* Header with title and target switch */
6
+ .skills-minimal-header {
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: center;
10
+ gap: var(--spacing-sm);
11
+ margin-bottom: var(--spacing-md);
12
+ padding-bottom: var(--spacing-sm);
13
+ border-bottom: 1px solid var(--color-border-soft);
14
+ }
15
+
16
+ .skills-header-left {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 10px;
20
+ }
21
+
22
+ .skills-header-title {
23
+ font-size: 20px;
24
+ font-weight: var(--font-weight-primary);
25
+ color: var(--color-text-primary);
26
+ letter-spacing: -0.01em;
27
+ }
28
+
29
+ .skills-target-switch {
30
+ display: inline-flex;
31
+ background: var(--color-surface-alt);
32
+ border-radius: var(--radius-full);
33
+ padding: 3px;
34
+ gap: 3px;
35
+ }
36
+
37
+ .skills-target-chip {
38
+ border: none;
39
+ background: transparent;
40
+ color: var(--color-text-secondary);
41
+ padding: 6px 14px;
42
+ font-size: var(--font-size-caption);
43
+ font-weight: var(--font-weight-caption);
44
+ border-radius: var(--radius-full);
45
+ cursor: pointer;
46
+ transition: all var(--transition-fast) var(--ease-smooth);
47
+ }
48
+
49
+ .skills-target-chip:disabled,
50
+ .skills-target-chip[disabled] {
51
+ cursor: not-allowed;
52
+ opacity: 0.5;
53
+ pointer-events: none;
54
+ }
55
+
56
+ .skills-target-chip.active {
57
+ background: var(--color-surface);
58
+ color: var(--color-text-primary);
59
+ box-shadow: 0 1px 3px rgba(0,0,0,0.06);
60
+ }
61
+
62
+ .skills-target-chip:hover:not(.active):not(:disabled) {
63
+ color: var(--color-text-primary);
64
+ }
65
+
66
+ .skills-header-actions {
67
+ display: flex;
68
+ gap: 6px;
69
+ }
70
+
71
+ /* Flow panels */
72
+ .skills-flow-panel {
73
+ margin-bottom: var(--spacing-md);
74
+ background: var(--color-surface);
75
+ border: 1px solid var(--color-border);
76
+ border-radius: var(--radius-lg);
77
+ overflow: hidden;
78
+ }
79
+
80
+ .skills-flow-header {
81
+ display: flex;
82
+ justify-content: space-between;
83
+ align-items: center;
84
+ padding: var(--spacing-sm) var(--spacing-md);
85
+ border-bottom: 1px solid var(--color-border-soft);
86
+ background: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
87
+ }
88
+
89
+ .skills-flow-title-wrap {
90
+ display: flex;
91
+ align-items: baseline;
92
+ gap: 8px;
93
+ }
94
+
95
+ .skills-flow-title {
96
+ font-size: var(--font-size-body);
97
+ font-weight: var(--font-weight-secondary);
98
+ color: var(--color-text-secondary);
99
+ }
100
+
101
+ .skills-flow-count {
102
+ font-size: var(--font-size-caption);
103
+ color: var(--color-text-tertiary);
104
+ background: var(--color-surface-alt);
105
+ padding: 2px 8px;
106
+ border-radius: var(--radius-full);
107
+ font-weight: var(--font-weight-caption);
108
+ }
109
+
110
+ /* Flow list */
111
+ .skills-flow-list {
112
+ display: flex;
113
+ flex-direction: column;
114
+ }
115
+
116
+ .skills-flow-item {
117
+ display: flex;
118
+ justify-content: space-between;
119
+ align-items: center;
120
+ gap: var(--spacing-sm);
121
+ padding: var(--spacing-sm) var(--spacing-md);
122
+ border-bottom: 1px solid var(--color-border-soft);
123
+ transition: background var(--transition-fast) var(--ease-smooth);
124
+ min-height: 56px;
125
+ }
126
+
127
+ .skills-flow-item:last-child {
128
+ border-bottom: none;
129
+ }
130
+
131
+ .skills-flow-item:hover {
132
+ background: rgba(255,255,255,0.4);
133
+ }
134
+
135
+ .skills-flow-item.has-issue {
136
+ background: rgba(255,243,236,0.3);
137
+ }
138
+
139
+ .skills-flow-item.has-issue:hover {
140
+ background: rgba(255,243,236,0.5);
141
+ }
142
+
143
+ .skills-flow-main {
144
+ display: flex;
145
+ flex-direction: column;
146
+ gap: 3px;
147
+ min-width: 0;
148
+ flex: 1;
149
+ }
150
+
151
+ .skills-flow-name {
152
+ font-size: var(--font-size-body);
153
+ font-weight: var(--font-weight-secondary);
154
+ color: var(--color-text-primary);
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ white-space: nowrap;
158
+ }
159
+
160
+ .skills-flow-path,
161
+ .skills-flow-meta {
162
+ font-size: var(--font-size-caption);
163
+ color: var(--color-text-tertiary);
164
+ overflow: hidden;
165
+ text-overflow: ellipsis;
166
+ white-space: nowrap;
167
+ }
168
+
169
+ .skills-flow-status {
170
+ font-size: var(--font-size-caption);
171
+ padding: 4px 10px;
172
+ border-radius: var(--radius-full);
173
+ font-weight: var(--font-weight-caption);
174
+ white-space: nowrap;
175
+ }
176
+
177
+ .skills-flow-status.success {
178
+ background: rgba(52,168,83,0.1);
179
+ color: rgba(52,168,83,0.9);
180
+ }
181
+
182
+ .skills-flow-status.warning {
183
+ background: rgba(255,159,10,0.1);
184
+ color: rgba(255,159,10,0.9);
185
+ }
186
+
187
+ .skills-flow-add {
188
+ border: none;
189
+ background: var(--color-surface-alt);
190
+ color: var(--color-text-secondary);
191
+ width: 36px;
192
+ height: 36px;
193
+ border-radius: var(--radius-full);
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ cursor: pointer;
198
+ transition: all var(--transition-fast) var(--ease-smooth);
199
+ flex-shrink: 0;
200
+ }
201
+
202
+ .skills-flow-add:hover:not(:disabled) {
203
+ background: var(--color-brand);
204
+ color: white;
205
+ }
206
+
207
+ .skills-flow-add:disabled {
208
+ opacity: 0.5;
209
+ cursor: not-allowed;
210
+ }
211
+
212
+ /* Quick actions in import panel */
213
+ .skills-flow-actions {
214
+ display: grid;
215
+ grid-template-columns: repeat(2, minmax(0, 1fr));
216
+ gap: var(--spacing-xs);
217
+ padding: var(--spacing-sm) var(--spacing-md);
218
+ border-bottom: 1px solid var(--color-border-soft);
219
+ background: rgba(255,255,255,0.3);
220
+ }
221
+
222
+ .skills-action-btn {
223
+ border: 1px solid var(--color-border);
224
+ background: var(--color-surface);
225
+ color: var(--color-text-secondary);
226
+ padding: 10px 14px;
227
+ border-radius: var(--radius-md);
228
+ font-size: var(--font-size-caption);
229
+ font-weight: var(--font-weight-caption);
230
+ cursor: pointer;
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: center;
234
+ gap: 6px;
235
+ transition: all var(--transition-fast) var(--ease-smooth);
236
+ }
237
+
238
+ .skills-action-btn:hover:not(:disabled) {
239
+ border-color: var(--color-brand);
240
+ background: rgba(255,243,236,0.5);
241
+ color: var(--color-brand-dark);
242
+ }
243
+
244
+ .skills-action-btn:disabled {
245
+ opacity: 0.5;
246
+ cursor: not-allowed;
247
+ }
248
+
249
+ /* Loading and empty states */
250
+ .skills-flow-loading,
251
+ .skills-flow-empty {
252
+ padding: var(--spacing-md);
253
+ text-align: center;
254
+ color: var(--color-text-tertiary);
255
+ font-size: var(--font-size-caption);
256
+ }
257
+
258
+ /* Spinning icon */
259
+ @keyframes spin {
260
+ from { transform: rotate(0deg); }
261
+ to { transform: rotate(360deg); }
262
+ }
263
+
264
+ .spin {
265
+ animation: spin 0.8s linear infinite;
266
+ }
267
+
268
+ /* Responsive */
269
+ @media (max-width: 600px) {
270
+ .skills-minimal-header {
271
+ flex-direction: column;
272
+ align-items: flex-start;
273
+ gap: var(--spacing-sm);
274
+ }
275
+
276
+ .skills-header-actions {
277
+ align-self: flex-end;
278
+ }
279
+
280
+ .skills-flow-actions {
281
+ grid-template-columns: 1fr;
282
+ }
283
+
284
+ .skills-flow-item {
285
+ flex-wrap: wrap;
286
+ }
287
+
288
+ .skills-flow-status,
289
+ .skills-flow-add {
290
+ margin-left: auto;
291
+ }
292
+ }
293
+
294
+ /* Legacy styles for modal (preserved) */
1
295
  .agent-list {
2
296
  display: flex;
3
297
  flex-direction: column;
@@ -154,6 +154,20 @@
154
154
  background: var(--color-brand);
155
155
  }
156
156
 
157
+ .card.disabled {
158
+ opacity: 0.5;
159
+ pointer-events: none;
160
+ cursor: not-allowed;
161
+ }
162
+
163
+ .card.disabled:hover {
164
+ transform: none;
165
+ }
166
+
167
+ .card.disabled::after {
168
+ opacity: 0;
169
+ }
170
+
157
171
  .card:hover::after {
158
172
  opacity: 0.6;
159
173
  }
@@ -1,4 +1,39 @@
1
- /* webhook 行 — 对齐暖色设计系统 */
1
+ /* ============================================
2
+ Webhook 模态框 — 极简设计
3
+ ============================================ */
4
+
5
+ /* Webhook 事件复选框列表 */
6
+ .webhook-events-checkbox-list {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 4px;
10
+ padding: 4px 0;
11
+ }
12
+
13
+ .webhook-event-checkbox-item {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ gap: 10px;
17
+ padding: 10px 14px;
18
+ font-size: 14px;
19
+ color: var(--color-text-secondary);
20
+ cursor: pointer;
21
+ border-radius: 10px;
22
+ transition: all 0.15s ease;
23
+ }
24
+
25
+ .webhook-event-checkbox-item:hover {
26
+ background: rgba(137, 111, 94, 0.06);
27
+ }
28
+
29
+ .webhook-event-checkbox-item input[type="checkbox"] {
30
+ width: 18px;
31
+ height: 18px;
32
+ accent-color: var(--color-brand);
33
+ cursor: pointer;
34
+ }
35
+
36
+ /* 保留兼容旧组件的样式 */
2
37
  .webhook-row {
3
38
  display: flex;
4
39
  align-items: center;
@@ -30,7 +65,6 @@
30
65
  color: var(--color-text-muted);
31
66
  }
32
67
 
33
- /* 只读展示行 */
34
68
  .webhook-readonly-row {
35
69
  display: flex;
36
70
  align-items: flex-start;
@@ -71,11 +105,11 @@
71
105
 
72
106
  .webhook-event-tag {
73
107
  display: inline-block;
74
- padding: 2px 8px;
108
+ padding: 4px 10px;
75
109
  border-radius: 999px;
76
110
  border: 1px solid var(--color-border);
77
111
  background: var(--color-brand-light);
78
112
  color: var(--color-brand-dark);
79
- font-size: var(--font-size-caption);
113
+ font-size: 12px;
80
114
  font-weight: var(--font-weight-secondary);
81
115
  }