codex-weixin 0.2.4 → 0.2.7

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 (40) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.en.md +5 -1
  3. package/README.md +7 -1
  4. package/dist/bridge/service.d.ts +1 -0
  5. package/dist/bridge/service.js +44 -4
  6. package/dist/bridge/service.js.map +1 -1
  7. package/dist/codex/app-server-runner.d.ts +8 -0
  8. package/dist/codex/app-server-runner.js +91 -5
  9. package/dist/codex/app-server-runner.js.map +1 -1
  10. package/dist/codex/exec-runner.d.ts +2 -0
  11. package/dist/codex/exec-runner.js.map +1 -1
  12. package/dist/codex/runner.js +7 -2
  13. package/dist/codex/runner.js.map +1 -1
  14. package/dist/server/account-manager.d.ts +2 -1
  15. package/dist/server/account-manager.js +9 -2
  16. package/dist/server/account-manager.js.map +1 -1
  17. package/dist/server/http-server.d.ts +3 -0
  18. package/dist/server/http-server.js +81 -6
  19. package/dist/server/http-server.js.map +1 -1
  20. package/dist/server/index.js +40 -14
  21. package/dist/server/index.js.map +1 -1
  22. package/dist/server/restart-helper.d.ts +1 -0
  23. package/dist/server/restart-helper.js +46 -0
  24. package/dist/server/restart-helper.js.map +1 -0
  25. package/dist/server/restart.d.ts +7 -0
  26. package/dist/server/restart.js +36 -0
  27. package/dist/server/restart.js.map +1 -0
  28. package/dist/server/update-manager.d.ts +51 -0
  29. package/dist/server/update-manager.js +230 -0
  30. package/dist/server/update-manager.js.map +1 -0
  31. package/dist/state/config.d.ts +1 -0
  32. package/dist/state/config.js +2 -0
  33. package/dist/state/config.js.map +1 -1
  34. package/dist/state/runtime-state.d.ts +3 -0
  35. package/dist/state/runtime-state.js +20 -0
  36. package/dist/state/runtime-state.js.map +1 -1
  37. package/dist/web/app.js +299 -10
  38. package/dist/web/index.html +53 -4
  39. package/dist/web/styles.css +43 -2
  40. package/package.json +1 -1
@@ -44,7 +44,8 @@ button:disabled { cursor: not-allowed; opacity: .48; }
44
44
  .tab { min-width: 82px; height: 30px; border: 0; border-radius: 4px; color: var(--ink-soft); background: transparent; font-size: 13px; font-weight: 650; }
45
45
  .tab:hover { color: var(--ink); }
46
46
  .tab.is-active { color: var(--ink); background: var(--surface); box-shadow: 0 1px 3px rgb(20 27 25 / 12%); }
47
- .header-action { justify-self: end; }
47
+ .header-actions { justify-self: end; display: flex; align-items: center; gap: 8px; }
48
+ .github-link { color: var(--ink); text-decoration: none; }
48
49
 
49
50
  .button { min-height: 38px; padding: 0 14px; border: 1px solid transparent; border-radius: var(--radius); display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: 13px; font-weight: 700; white-space: nowrap; transition: background-color .16s ease, border-color .16s ease, transform .16s ease; }
50
51
  .button svg { width: 17px; height: 17px; }
@@ -164,7 +165,7 @@ h2 { margin: 0; font-size: 19px; line-height: 1.3; }
164
165
  .chat-header { min-height: 82px; padding: 17px 20px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 18px; }
165
166
  .chat-header h2 { max-width: 620px; overflow: hidden; font-size: 17px; text-overflow: ellipsis; white-space: nowrap; }
166
167
  .chat-context { max-width: 720px; margin: 5px 0 0; overflow: hidden; color: var(--ink-soft); font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
167
- .chat-runtime-toolbar { min-height: 54px; padding: 9px 20px; border-bottom: 1px solid var(--line); background: #f7f9f7; display: grid; grid-template-columns: auto minmax(190px, 1fr) minmax(170px, .72fr); align-items: center; gap: 14px; }
168
+ .chat-runtime-toolbar { min-height: 54px; padding: 9px 20px; border-bottom: 1px solid var(--line); background: #f7f9f7; display: grid; grid-template-columns: auto minmax(170px, 1fr) minmax(150px, .72fr) minmax(130px, .55fr); align-items: center; gap: 12px; }
168
169
  .chat-runtime-title { color: var(--ink-soft); display: inline-flex; align-items: center; gap: 6px; font-size: 9px; font-weight: 800; letter-spacing: .04em; white-space: nowrap; }
169
170
  .chat-runtime-title svg { width: 14px; height: 14px; color: var(--green-dark); }
170
171
  .chat-runtime-toolbar label { min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 7px; }
@@ -175,6 +176,16 @@ h2 { margin: 0; font-size: 19px; line-height: 1.3; }
175
176
  .chat-message.is-user { margin-left: auto; justify-items: end; }
176
177
  .chat-message.is-assistant { margin-right: auto; justify-items: start; }
177
178
  .chat-message.has-attachments { width: min(78%, 720px); }
179
+ .chat-progress-group { width: min(78%, 720px); margin: 0 0 22px; color: var(--ink-soft); }
180
+ .chat-progress-group summary { min-height: 32px; padding: 0 3px; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 14px; cursor: pointer; font-size: 10px; font-weight: 700; }
181
+ .chat-progress-group summary::-webkit-details-marker { display: none; }
182
+ .chat-progress-group summary:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
183
+ .progress-summary-title { color: var(--ink); display: inline-flex; align-items: center; gap: 6px; }
184
+ .progress-summary-title svg { width: 14px; height: 14px; color: var(--green-dark); transition: transform 160ms ease; }
185
+ .chat-progress-group[open] .progress-summary-title svg { transform: rotate(90deg); }
186
+ .progress-list { margin: 5px 0 0 8px; padding: 8px 12px 8px 24px; border-left: 2px solid #b9c9c0; font-size: 11px; line-height: 1.6; }
187
+ .progress-list li + li { margin-top: 7px; }
188
+ .progress-list p { margin: 0; }
178
189
  .message-meta { padding: 0 3px; color: var(--ink-soft); display: flex; align-items: center; gap: 8px; font-size: 9px; font-weight: 750; }
179
190
  .message-meta time { font-weight: 550; }
180
191
  .message-bubble { max-width: 100%; padding: 13px 15px; border: 1px solid var(--line); border-radius: 7px; background: white; box-shadow: 0 4px 14px rgb(23 34 29 / 6%); font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
@@ -249,6 +260,14 @@ h2 { margin: 0; font-size: 19px; line-height: 1.3; }
249
260
  .settings-group h2 { font-size: 14px; }
250
261
  .settings-group > label, .field-grid { width: 100%; max-width: 720px; grid-column: 2; }
251
262
  .field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
263
+ .toggle-field { min-height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); background: #f8faf8; display: flex; align-items: center; justify-content: space-between; gap: 18px; }
264
+ .toggle-control { width: 38px; height: 22px; position: relative; flex: 0 0 38px; }
265
+ .toggle-control input { position: absolute; width: 1px; height: 1px; opacity: 0; }
266
+ .toggle-control > span { position: absolute; inset: 0; border: 1px solid #aeb8b2; border-radius: 11px; background: #dfe4e1; transition: background-color .16s ease, border-color .16s ease; }
267
+ .toggle-control > span::after { content: ""; width: 16px; height: 16px; position: absolute; left: 2px; top: 2px; border-radius: 50%; background: white; box-shadow: 0 1px 3px rgb(23 34 29 / 24%); transition: transform .16s ease; }
268
+ .toggle-control input:checked + span { border-color: var(--green-dark); background: var(--green); }
269
+ .toggle-control input:checked + span::after { transform: translateX(16px); }
270
+ .toggle-control input:focus-visible + span { outline: 3px solid color-mix(in srgb, var(--focus) 30%, transparent); outline-offset: 2px; }
252
271
  label { min-width: 0; display: grid; gap: 8px; color: var(--ink-soft); font-size: 11px; font-weight: 700; }
253
272
  .field-hint { color: var(--ink-soft); font-size: 10px; font-weight: 500; line-height: 1.5; }
254
273
  .effective-setting { min-width: 0; display: flex; align-items: center; gap: 7px; }
@@ -267,6 +286,28 @@ input:focus, select:focus, textarea:focus { border-color: var(--focus); outline:
267
286
  .modal-header h2 { font-size: 18px; }
268
287
  .modal-body { padding: 22px 20px; }
269
288
  .modal-footer { min-height: 70px; padding: 14px 20px; border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: end; gap: 10px; }
289
+ .update-modal { width: min(calc(100% - 32px), 520px); }
290
+ .update-modal-header { background: #f8faf8; }
291
+ .update-modal-icon { width: 42px; height: 42px; flex: 0 0 42px; border-radius: var(--radius); color: var(--green-dark); background: var(--green-soft); display: grid; place-items: center; }
292
+ .update-modal-icon svg { width: 21px; height: 21px; }
293
+ .update-modal-body { display: grid; gap: 17px; }
294
+ .update-version-flow { min-height: 86px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--canvas); display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 14px; }
295
+ .update-version-flow > span { min-width: 0; }
296
+ .update-version-flow small { margin-bottom: 5px; color: var(--ink-soft); font-size: 9px; font-weight: 750; display: block; }
297
+ .update-version-flow strong { overflow: hidden; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; display: block; }
298
+ .update-version-flow > svg { width: 17px; height: 17px; color: #84908a; }
299
+ .update-version-flow .is-latest strong { color: var(--green-dark); }
300
+ .update-description { margin: 0; color: var(--ink-soft); font-size: 11px; line-height: 1.65; }
301
+ .update-progress { min-height: 64px; padding: 12px 14px; border: 1px solid #b9ddc7; border-radius: var(--radius); background: var(--green-soft); display: flex; align-items: center; gap: 13px; }
302
+ .update-progress[hidden] { display: none; }
303
+ .update-progress .spinner { width: 25px; height: 25px; flex: 0 0 25px; border-color: rgb(8 114 57 / 18%); border-top-color: var(--green-dark); }
304
+ .update-progress strong, .update-progress span { display: block; }
305
+ .update-progress strong { color: var(--green-dark); font-size: 11px; }
306
+ .update-progress div span { margin-top: 3px; color: #466453; font-size: 9px; }
307
+ .update-progress.is-error { border-color: #efc5c3; background: var(--red-soft); }
308
+ .update-progress.is-error .spinner { display: none; }
309
+ .update-progress.is-error strong { color: var(--red); }
310
+ .update-progress.is-error div span { color: #7c4442; }
270
311
  .qr-stage { min-height: 390px; padding: 28px 20px 22px; display: grid; justify-items: center; align-content: center; }
271
312
  .qr-frame { width: 300px; height: 300px; border: 1px solid var(--line); border-radius: var(--radius); background: white; display: grid; place-items: center; overflow: hidden; }
272
313
  .qr-frame img { width: 100%; height: 100%; object-fit: contain; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-weixin",
3
- "version": "0.2.4",
3
+ "version": "0.2.7",
4
4
  "description": "Local multi-account WeChat server for OpenAI Codex.",
5
5
  "license": "MIT",
6
6
  "author": "Xuechao Zou",