zebra-report didn't have a defect tracker before; until now everything
lived in commit-message archaeology and signal-server log greps. Two
known defects make this the right moment to start one:
0001: fedora chrome cannot hear speakers (P0, in-progress)
P0 because every invariant (RTP arriving, worklet started,
ctxState=running) is green but the user hears nothing — silent
regression is trust-eroding. Primary hypothesis is that
AudioContext.destination always routed to system-default while
the speaker-output picker only setSinkId'd <audio> elements.
Fix landed in 467146a (applySinkToAudioCtx), awaiting fox retest
in production.
0002: fedora firefox cannot share camera (High, open)
Camera publish fails on firefox; chrome same machine works.
No telemetry yet; ticket enumerates the candidates to narrow
on the next attempt.
README.md spells out the format (status / priority / surface / first
seen, then symptom / telemetry / hypothesis / fix / status notes)
and the resolution loop (telemetry → failing test → fix → stamp →
deploy → update ticket).
2.7 KiB
0002: fedora firefox cannot share camera
Status: open Priority: High (feature unavailable — speakers expect to share camera) Surface: fedora firefox — speaker or host attempting to publish camera First seen: 2026-06-06 Reporter: fox
Symptom
On fedora firefox, the "share camera" button does not result in a camera publish. Same firefox can share screen and publish mic — only camera publish fails. Same machine + chrome publishes camera fine.
Telemetry / Repro
Not yet captured.
Repro candidates to try:
- Open fedora firefox → enter a room as speaker
- Click "share camera"
- Note whether the browser permission prompt appears
- If granted, note whether the camera tile renders locally
- Grab the in-page signal log + browser console output
Things to specifically look for:
getUserMediaerrors (NotFoundError,NotReadableError,OverconstrainedError,NotAllowedError)- Whether
navigator.mediaDevices.enumerateDevices()lists the camera pre-permission (label is empty, deviceId present) - Whether the camera deviceId saved in
localStorage(CAM_DEV_KEY) matches a device firefox still recognizes (deviceIds rotate across sessions on chrome but should be stable on firefox)
Hypothesis
Candidates, none yet confirmed:
-
Saved cameraDeviceId pointing at a stale / removed device. Firefox would
OverconstrainedErrorand the page's catch logserr. Fix would be: onOverconstrainedError, retry withdeviceIdunset and re-prompt the picker — same shape as the mic-label-fallback at line ~5041. -
Firefox v4l2 backend conflicting with chrome's hold on the camera. If chrome was using the camera, firefox can't open it (single-consumer on most fedora kernels). User-visible workaround: close chrome's camera-using tab.
-
Firefox MediaTrackConstraints quirk — possibly the page's
videoConstraints(line ~4493) demanding a resolution / framerate the camera doesn't support →OverconstrainedError. Fix: relax the constraints to{ ideal }for non-essential fields. -
Permission state stuck. Firefox's permission prompt is gated per origin + device; a previous "block" decision can persist.
about:permissionswould show this. Not a code issue if so. -
PipeWire / v4l2loopback fakery on the system — if the camera device is actually a virtual capture (OBS Virtual Cam etc), firefox may reject it where chrome accepts.
Fix
(none yet — needs telemetry)
Status notes
- 2026-06-07 (open): ticket created. Next step is to capture the firefox console / signal log when the share-camera button is clicked and see which of the hypotheses fits.