detached 23cba99

fix(webrtc): handle enumerateDevices failures in diagnostics

commit
23cba992ab339b0671a83a3f9d51457c881cc860
author
brice · · 2026-02-08 13:02 UTC
parent
f20ef21
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +10 -5
M webui/src/pages/webrtc.ts +10 -5
@@ -34,12 +34,17 @@ async function probeDevices(output: HTMLPreElement): Promise<void> {
3434 return;
3535 }
3636
37- const devices = await navigator.mediaDevices.enumerateDevices();
38- const summary = devices
39- .map((device) => `${device.kind} ${device.label || "(label hidden until permission)"}`)
40- .join(" | ");
37+ try {
38+ const devices = await navigator.mediaDevices.enumerateDevices();
39+ const summary = devices
40+ .map((device) => `${device.kind} ${device.label || "(label hidden until permission)"}`)
41+ .join(" | ");
4142
42- appendLog(output, `Devices: ${summary || "none"}`);
43+ appendLog(output, `Devices: ${summary || "none"}`);
44+ } catch (err) {
45+ appendLog(output, `enumerateDevices failed: ${String(err)}`);
46+ appendLog(output, "Devices: none");
47+ }
4348 }
4449
4550 async function requestUserMedia(video: HTMLVideoElement, output: HTMLPreElement, status: HTMLElement): Promise<void> {
@@ -34,12 +34,17 @@ async function probeDevices(output: HTMLPreElement): Promise<void> {
34 return;34 return;
35 }35 }
36 36
37- const devices = await navigator.mediaDevices.enumerateDevices();37+ try {
38- const summary = devices38+ const devices = await navigator.mediaDevices.enumerateDevices();
39- .map((device) => `${device.kind} ${device.label || "(label hidden until permission)"}`)39+ const summary = devices
40- .join(" | ");40+ .map((device) => `${device.kind} ${device.label || "(label hidden until permission)"}`)
41+ .join(" | ");
41 42
42- appendLog(output, `Devices: ${summary || "none"}`);43+ appendLog(output, `Devices: ${summary || "none"}`);
44+ } catch (err) {
45+ appendLog(output, `enumerateDevices failed: ${String(err)}`);
46+ appendLog(output, "Devices: none");
47+ }
43 }48 }
44 49
45 async function requestUserMedia(video: HTMLVideoElement, output: HTMLPreElement, status: HTMLElement): Promise<void> {50 async function requestUserMedia(video: HTMLVideoElement, output: HTMLPreElement, status: HTMLElement): Promise<void> {

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close