ec-web 0.0.26 → 0.0.27

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.
@@ -83,7 +83,7 @@
83
83
  'basicSettings.eckSnapshotsHelp': '可能包含敏感上下文;还需 RESPONSE_SNAPSHOT=1 才会实际写入。',
84
84
  'basicSettings.effort': '推理强度',
85
85
  'basicSettings.enableRequestUserInput': '允许请求用户输入',
86
- 'basicSettings.enableRequestUserInputHelp': '允许 Codex 在需要补充信息时向用户发起输入请求。',
86
+ 'basicSettings.enableRequestUserInputHelp': '控制 Default 模式的 request_user_input,默认开启。不是权限审批或 request_user_input_async 的总开关;异步问题自动映射为可回答卡片。',
87
87
  'basicSettings.excludeDynamicSections': '排除动态区段',
88
88
  'basicSettings.excludeDynamicSectionsHelp': '从 Claude 请求上下文中排除动态区段,减少不稳定或不需要的内容。',
89
89
  'basicSettings.expandCollapse': '展开或折叠 Base Agent',
@@ -285,7 +285,7 @@
285
285
  'basicSettings.eckSnapshotsHelp': 'May contain sensitive context; RESPONSE_SNAPSHOT=1 is also required.',
286
286
  'basicSettings.effort': 'Reasoning effort',
287
287
  'basicSettings.enableRequestUserInput': 'Allow user input requests',
288
- 'basicSettings.enableRequestUserInputHelp': 'Allow Codex to request additional input from the user when needed.',
288
+ 'basicSettings.enableRequestUserInputHelp': 'Enable request_user_input in Default mode (default: on). Does not disable approvals or request_user_input_async; async questions are bridged to answerable cards.',
289
289
  'basicSettings.excludeDynamicSections': 'Exclude dynamic sections',
290
290
  'basicSettings.excludeDynamicSectionsHelp': 'Exclude dynamic sections from Claude request context to reduce unstable or unnecessary content.',
291
291
  'basicSettings.expandCollapse': 'Expand or collapse Base Agent',
@@ -827,7 +827,7 @@
827
827
  function renderIdentity() {
828
828
  const daemon = buildFilePreview('daemon');
829
829
  const aid = daemon.aid || t('basicSettings.notSet');
830
- return panelIntro(t('basicSettings.tabs.identity'), t('basicSettings.identityIntro')) + section(t('basicSettings.controlIdentity'), t('basicSettings.readonly'), `<div class="basic-settings-form-grid"><div class="basic-settings-field" data-bs-field data-file="daemon" data-path="aid"><div class="basic-settings-field-label"><span>${htmlEscape(t('basicSettings.daemonAid'))}<span class="basic-settings-path">aid</span></span></div><div class="basic-settings-readonly"><code>${htmlEscape(aid)}</code></div></div>${scalarField({ file: 'daemon', path: 'aun.defaultAidDomain', label: t('basicSettings.defaultAidDomain'), value: getFileValue('daemon', 'aun.defaultAidDomain'), placeholder: 'agentid.cn', help: t('basicSettings.defaultAidDomainHelp') })}</div>`) + section(t('basicSettings.accessControl'), t('basicSettings.daemonScope'), `<div class="basic-settings-form-grid"><div class="basic-settings-field full" data-bs-field data-file="daemon" data-path="owners">${fieldLabel(t('basicSettings.daemonOwners'), 'owners[]', t('basicSettings.ownerHelp'), null)}${ownersMarkup(daemon)}</div>${scalarField({ file: 'daemon', path: 'aun.minEvolVersion', label: t('basicSettings.minEvolVersion'), value: getFileValue('daemon', 'aun.minEvolVersion'), placeholder: '1.6.0', help: t('basicSettings.minEvolVersionHelp') })}${scalarField({ file: 'daemon', path: 'aun.menuTokenRequired', label: t('basicSettings.menuTokenRequired'), type: 'boolean', value: getFileValue('daemon', 'aun.menuTokenRequired'), help: t('basicSettings.menuTokenRequiredHelp') })}${scalarField({ file: 'daemon', path: 'aun.defaultEncrypt', label: t('basicSettings.defaultEncrypt'), type: 'boolean', value: getFileValue('daemon', 'aun.defaultEncrypt') })}${scalarField({ file: 'daemon', path: 'fullaccess.enabled', label: t('basicSettings.fullaccessEnabled'), type: 'boolean', value: daemon.fullaccess?.enabled, help: t('basicSettings.fullaccessHelp') })}</div>`);
830
+ return panelIntro(t('basicSettings.tabs.identity'), t('basicSettings.identityIntro')) + section(t('basicSettings.controlIdentity'), t('basicSettings.readonly'), `<div class="basic-settings-form-grid"><div class="basic-settings-field" data-bs-field data-file="daemon" data-path="aid"><div class="basic-settings-field-label"><span>${htmlEscape(t('basicSettings.daemonAid'))}<span class="basic-settings-path">aid</span></span></div><div class="basic-settings-readonly"><code>${htmlEscape(aid)}</code></div></div>${scalarField({ file: 'daemon', path: 'aun.defaultAidDomain', label: t('basicSettings.defaultAidDomain'), value: getFileValue('daemon', 'aun.defaultAidDomain'), placeholder: 'agentid.cn', help: t('basicSettings.defaultAidDomainHelp') })}</div>`) + section(t('basicSettings.accessControl'), t('basicSettings.daemonScope'), `<div class="basic-settings-form-grid"><div class="basic-settings-field full" data-bs-field data-file="daemon" data-path="owners">${fieldLabel(t('basicSettings.daemonOwners'), 'owners[]', t('basicSettings.ownerHelp'), null)}${ownersMarkup(daemon)}</div>${scalarField({ file: 'daemon', path: 'aun.minEvolVersion', label: t('basicSettings.minEvolVersion'), value: getFileValue('daemon', 'aun.minEvolVersion'), placeholder: '1.6.0', help: t('basicSettings.minEvolVersionHelp') })}${scalarField({ file: 'daemon', path: 'aun.menuTokenRequired', label: t('basicSettings.menuTokenRequired'), type: 'boolean', value: getFileValue('daemon', 'aun.menuTokenRequired'), help: t('basicSettings.menuTokenRequiredHelp') })}${scalarField({ file: 'daemon', path: 'aun.defaultEncrypt', label: t('basicSettings.defaultEncrypt'), type: 'boolean', value: getFileValue('daemon', 'aun.defaultEncrypt') })}${scalarField({ file: 'daemon', path: 'fullaccess.enabled', label: t('basicSettings.fullaccessEnabled'), type: 'boolean', value: daemon.fullaccess?.enabled ?? true, help: t('basicSettings.fullaccessHelp') })}</div>`);
831
831
  }
832
832
 
833
833
  function renderRuntime() {
@@ -49,7 +49,7 @@
49
49
 
50
50
  </nav>
51
51
  <span style="flex:1"></span>
52
- <span class="build-ts" style="font-size:10px;color:var(--dim)" data-i18n-title="common.buildTime" title="构建时间">2026-09-18 10:34</span>
52
+ <span class="build-ts" style="font-size:10px;color:var(--dim)" data-i18n-title="common.buildTime" title="构建时间">2026-09-24 11:34</span>
53
53
  <span id="conn-status" class="conn-status" data-i18n="status.connecting">连接中…</span>
54
54
  <button id="lang-btn" class="theme-btn" data-i18n-title="language.buttonTitle" title="切换语言">🌐</button>
55
55
  <button id="theme-btn" class="theme-btn" data-i18n-title="theme.buttonTitle" title="主题">🌗</button>
@@ -1100,6 +1100,14 @@ tr.ag-disabled .ag-name { color: var(--dim); }
1100
1100
  .state-badge.muted { color: var(--magenta); background: var(--bg3); }
1101
1101
  .state-badge.stopped { color: var(--dim); background: var(--bg3); }
1102
1102
 
1103
+ /* Only incomplete bootstrap stages need a lifecycle hint in the name cell. */
1104
+ .lifecycle-badge {
1105
+ display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 4px;
1106
+ color: var(--orange); border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
1107
+ background: color-mix(in srgb, currentColor 10%, transparent);
1108
+ font-size: 10.5px; font-weight: 600; line-height: 1.35; white-space: nowrap; vertical-align: 1px;
1109
+ }
1110
+
1103
1111
  /* 队列数列 */
1104
1112
  .ag-queue-num { color: var(--orange); font-weight: 600; font-variant-numeric: tabular-nums; }
1105
1113
  .ag-queue-empty { color: var(--dim); }
@@ -1240,6 +1248,35 @@ tr.ag-disabled .ag-name { color: var(--dim); }
1240
1248
  margin-bottom: 12px;
1241
1249
  }
1242
1250
  .ag-edit-field:last-child { margin-bottom: 0; }
1251
+ .ag-edit-field-label {
1252
+ display: flex;
1253
+ align-items: center;
1254
+ gap: 4px;
1255
+ font-size: 12px;
1256
+ color: var(--dim);
1257
+ font-weight: 600;
1258
+ }
1259
+ .ag-edit-field-label .basic-settings-tip {
1260
+ margin-left: 0;
1261
+ }
1262
+ .ag-edit-fullaccess-row {
1263
+ display: flex;
1264
+ align-items: center;
1265
+ justify-content: space-between;
1266
+ flex-wrap: wrap;
1267
+ gap: 12px;
1268
+ }
1269
+ .ag-edit-fullaccess-switch {
1270
+ margin-left: auto;
1271
+ min-width: 0;
1272
+ }
1273
+ .ag-edit-fullaccess-switch > span:first-child {
1274
+ text-align: right;
1275
+ line-height: 1.45;
1276
+ }
1277
+ .ag-edit-fullaccess-switch .sess-switch-track { flex-shrink: 0; }
1278
+ .ag-edit-fullaccess-switch input:focus-visible + .sess-switch-track { outline: 2px solid var(--accent); outline-offset: 2px; }
1279
+ .ag-edit-fullaccess-switch:has(input:disabled) { cursor: not-allowed; opacity: .6; }
1243
1280
  .ag-edit-field span {
1244
1281
  font-size: 12px;
1245
1282
  color: var(--dim);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ec-web",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "description": "Web console and monitoring dashboard for EvolCore",
5
5
  "type": "module",
6
6
  "bin": {