viberadar 0.3.196 → 0.3.198

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.
@@ -3637,13 +3637,13 @@ function probeToggleKebab(event, checkName, checkFile) {
3637
3637
  const menu = document.createElement('div');
3638
3638
  menu.className = 'probe-kebab-menu';
3639
3639
  const fileItem = checkFile
3640
- ? `<div class="probe-kebab-item" onclick="probeKebabCopyPath(${JSON.stringify(checkFile)})">📋 Скопировать путь</div>
3640
+ ? `<div class="probe-kebab-item" onclick="probeKebabCopyPath(${escapeHtml(JSON.stringify(checkFile))})">📋 Скопировать путь</div>
3641
3641
  <div class="probe-kebab-sep"></div>`
3642
3642
  : '';
3643
3643
  menu.innerHTML = `
3644
- <div class="probe-kebab-item" onclick="probeKebabRename(${JSON.stringify(checkName)})">✏️ Переименовать</div>
3644
+ <div class="probe-kebab-item" onclick="probeKebabRename(${escapeHtml(JSON.stringify(checkName))})">✏️ Переименовать</div>
3645
3645
  ${fileItem}
3646
- <div class="probe-kebab-item danger" onclick="probeKebabDelete(${JSON.stringify(checkName)}, ${JSON.stringify(checkFile)})">🗑️ Удалить</div>`;
3646
+ <div class="probe-kebab-item danger" onclick="probeKebabDelete(${escapeHtml(JSON.stringify(checkName))}, ${escapeHtml(JSON.stringify(checkFile))})">🗑️ Удалить</div>`;
3647
3647
  wrap.appendChild(menu);
3648
3648
  const close = (e) => { if (!wrap.contains(e.target)) { menu.remove(); document.removeEventListener('click', close); } };
3649
3649
  setTimeout(() => document.addEventListener('click', close), 0);
@@ -3980,11 +3980,15 @@ function openProbeSettingsModal() {
3980
3980
 
3981
3981
  <div style="border-bottom:1px solid var(--border);padding-bottom:16px;margin-bottom:16px">
3982
3982
  ${sec('E2E-учётные данные')}
3983
- <div style="font-size:11px;color:var(--muted);margin-bottom:8px">Передаются как <code>E2E_USER_EMAIL</code> и <code>E2E_USER_PASSWORD</code> в тесты через <code>file:</code></div>
3984
- ${lbl('Email')}
3983
+ <div style="font-size:11px;color:var(--muted);margin-bottom:8px">Передаются как <code>EXTERNAL_E2E_USER_EMAIL</code> / <code>EXTERNAL_E2E_USER_PASSWORD</code> / <code>EXTERNAL_E2E_ADMIN_EMAIL</code> / <code>EXTERNAL_E2E_ADMIN_PASSWORD</code></div>
3984
+ ${lbl('User Email')}
3985
3985
  <input id="probeE2eEmail" type="text" placeholder="user@example.com" value="${escapeHtml(saved.e2eEmail || '')}" ${inp()}>
3986
- ${lbl('Пароль')}
3986
+ ${lbl('User Password')}
3987
3987
  <input id="probeE2ePassword" type="password" placeholder="${saved.e2ePasswordSet ? '••••••• (сохранён, оставьте пустым чтобы не менять)' : 'пароль'}" ${inp()}>
3988
+ ${lbl('Admin Email')}
3989
+ <input id="probeE2eAdminEmail" type="text" placeholder="admin@example.com" value="${escapeHtml(saved.e2eAdminEmail || '')}" ${inp()}>
3990
+ ${lbl('Admin Password')}
3991
+ <input id="probeE2eAdminPassword" type="password" placeholder="${saved.e2eAdminPasswordSet ? '••••••• (сохранён, оставьте пустым чтобы не менять)' : 'пароль'}" ${inp()}>
3988
3992
  </div>
3989
3993
 
3990
3994
  <div style="margin-bottom:4px">
@@ -4010,11 +4014,13 @@ function openProbeSettingsModal() {
4010
4014
  const chatId = document.getElementById('probeChatId').value.trim();
4011
4015
  const e2eEmail = document.getElementById('probeE2eEmail').value.trim();
4012
4016
  const e2ePassword = document.getElementById('probeE2ePassword').value;
4017
+ const e2eAdminEmail = document.getElementById('probeE2eAdminEmail').value.trim();
4018
+ const e2eAdminPassword = document.getElementById('probeE2eAdminPassword').value;
4013
4019
  const err = document.getElementById('probeSettingsErr');
4014
4020
  const btn = document.getElementById('probeSettingsSave');
4015
4021
  btn.disabled = true; btn.textContent = 'Сохраняю…';
4016
4022
  try {
4017
- const body = { target, botToken, chatId, e2eEmail, e2ePassword };
4023
+ const body = { target, botToken, chatId, e2eEmail, e2ePassword, e2eAdminEmail, e2eAdminPassword };
4018
4024
  const res = await fetch('/api/probe/settings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) });
4019
4025
  if (!res.ok) { const d = await res.json(); throw new Error(d.error || 'Ошибка сохранения'); }
4020
4026
  await loadProbeData();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viberadar",
3
- "version": "0.3.196",
3
+ "version": "0.3.198",
4
4
  "description": "Live module map with test coverage for vibecoding projects",
5
5
  "main": "./dist/cli.js",
6
6
  "bin": {