fix: window capture list not showing in video sources

Root cause: PowerShell command was wrapped in exec() with double-quote
escaping that silently failed. Rewrote using execFile() with args array
which requires no manual escaping.

Changes:
- electron/devices.js: use execFile('powershell.exe', [...args]) for
  window enumeration — eliminates quoting issues entirely
- Window list now returned INSIDE getDevices() video array (type='window')
  so they arrive together with cameras/screens in one IPC call
- StreamSettings: windows grouped from devices.video directly, with 🪟
  emoji prefix for visual distinction
- Added inline "↻ Обновить" button in video source field header to
  refresh devices+windows on demand without switching tabs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
admin
2026-04-16 01:17:03 +03:00
parent bc65186637
commit 73aa97ae7c
5 changed files with 205 additions and 188 deletions
+26
View File
@@ -485,6 +485,32 @@ html, body, #root {
border-radius: var(--radius-sm);
}
.field-label-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 4px;
}
.field-label-row .field-label { margin-bottom: 0; }
.btn-inline-refresh {
padding: 2px 8px;
font-size: 11px;
background: transparent;
border: 1px solid var(--border);
color: var(--text-muted);
border-radius: var(--radius-sm);
cursor: pointer;
transition: all 0.15s;
white-space: nowrap;
}
.btn-inline-refresh:hover:not(:disabled) {
border-color: var(--accent);
color: var(--accent);
background: var(--accent-dim);
}
.btn-inline-refresh:disabled { opacity: 0.4; cursor: not-allowed; }
.fields-row {
display: flex;
gap: 8px;