mattermost / mattermost/desktop

[bug]:Jitsi Meet does not have microphone and camera permissions in embedded mode, but it works fine in Chrome/Safari.

Open
#3,074 7 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

All Platforms PR Exists Type/Bug
Dominant language
TypeScript
Stars
2.3k
Forks
980
Avg merge
1d 5h
Merged PRs (30d)
30

Description

Checks before filing an issue
Mattermost Desktop Version

5.8.1

Operating System

macOS Sonoma 14.5 / Windows 10 x64

Mattermost Server Version

9.9.0

Steps to reproduce
  1. Enable "Embed video inside Mattermost" in the Jitsi Meet plugin settings.
  2. Start a meeting.
  3. Initiate and join a meeting in Mattermost Desktop.
Expected behavior

When starting and joining a Jitsi Meet meeting in Mattermost Desktop with the "Embed video inside Mattermost" setting enabled, the microphone and camera should work correctly without any permission issues.

Observed behavior

When starting and joining a Jitsi Meet meeting in Mattermost Desktop in embedded mode, Jitsi Meet prompts for insufficient permissions for the microphone and camera, even though it works fine in Chrome/Safari.

Log Output
[2024-06-20 13:21:35.059] [info]  [App.Utils] MAS: No files to migrate, skipping
[2024-06-20 13:21:35.072] [info]  [App.Initialize] Autoupgrade disabled: false
[2024-06-20 13:21:35.098] [info]  [ServerDropdownView] init
[2024-06-20 13:21:35.131] [info]  [i18nManager] Set new language en-US
[2024-06-20 13:21:45.553] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.553Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:21:45.554] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.553Z [features/base/tracks] Failed to create local tracks audio,video [object Object]
[2024-06-20 13:21:45.571] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.571Z [modules/RTC/RTCUtils.js] Failed to get access to local media. NotAllowedError: Permission denied {"video":false,"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:21:45.572] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.572Z [features/base/tracks] Failed to create local tracks audio [object Object]
[2024-06-20 13:21:45.573] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.573Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":false}
[2024-06-20 13:21:45.573] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.573Z [features/base/tracks] Failed to create local tracks video [object Object]
[2024-06-20 13:21:45.573] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.573Z [conference.js] Audio track creation failed with error gum.permission_denied: User denied permission to use device(s): audio
[2024-06-20 13:21:45.573] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:45.573Z [conference.js] Video track creation failed with error gum.constraint_failed: Constraint could not be satisfied: undefined
[2024-06-20 13:21:46.428] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:46.428Z [modules/xmpp/XmppConnection.js] <Oo._maybeEnableStreamResume>:  Stream resume enabled, but WebSockets are not enabled
[2024-06-20 13:21:47.620] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] Permissions policy violation: screen-wake-lock is not allowed in this document.
[2024-06-20 13:21:47.624] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:47.624Z [JitsiConference.js] <qh.setSubject>:  Failed to set subject, participant is not a moderator
[2024-06-20 13:21:47.636] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:47.636Z [features/base/conference] Error while requesting wake lock for screen: NotAllowedError: Failed to execute 'request' on 'WakeLock': Access to Screen Wake Lock features is disallowed by permissions policy
[2024-06-20 13:21:49.675] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:49.675Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
[2024-06-20 13:21:50.828] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:50.827Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
[2024-06-20 13:21:52.836] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:52.835Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
[2024-06-20 13:21:56.841] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:21:56.840Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
[2024-06-20 13:22:02.230] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:02.230Z [conference.js] <C1._onConferenceFailed>:  CONFERENCE FAILED: conference.destroyed The meeting has been terminated undefined
[2024-06-20 13:22:11.003] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.003Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:22:11.003] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.003Z [features/base/tracks] Failed to create local tracks audio,video [object Object]
[2024-06-20 13:22:11.053] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.053Z [modules/RTC/RTCUtils.js] Failed to get access to local media. NotAllowedError: Permission denied {"video":false,"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:22:11.054] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.053Z [features/base/tracks] Failed to create local tracks audio [object Object]
[2024-06-20 13:22:11.055] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.055Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":false}
[2024-06-20 13:22:11.055] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.055Z [features/base/tracks] Failed to create local tracks video [object Object]
[2024-06-20 13:22:11.055] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.055Z [conference.js] Audio track creation failed with error gum.permission_denied: User denied permission to use device(s): audio
[2024-06-20 13:22:11.055] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.055Z [conference.js] Video track creation failed with error gum.constraint_failed: Constraint could not be satisfied: undefined
[2024-06-20 13:22:11.886] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:11.885Z [modules/xmpp/XmppConnection.js] <Oo._maybeEnableStreamResume>:  Stream resume enabled, but WebSockets are not enabled
[2024-06-20 13:22:12.925] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] Permissions policy violation: screen-wake-lock is not allowed in this document.
[2024-06-20 13:22:12.929] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:12.928Z [JitsiConference.js] <qh.setSubject>:  Failed to set subject, participant is not a moderator
[2024-06-20 13:22:12.939] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:12.939Z [features/base/conference] Error while requesting wake lock for screen: NotAllowedError: Failed to execute 'request' on 'WakeLock': Access to Screen Wake Lock features is disallowed by permissions policy
[2024-06-20 13:22:15.748] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:15.748Z [modules/RTC/RTCUtils.js] Failed to get access to local media. NotAllowedError: Permission denied {"video":false,"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:22:15.748] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:22:15.748Z [features/base/tracks] Failed to create local tracks audio [object Object]
[2024-06-20 13:26:30.769] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:26:30.768Z [modules/xmpp/strophe.ping.js] Ping timeout null
[2024-06-20 13:28:11.306] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:28:11.306Z [conference.js] <C1._onConferenceFailed>:  CONFERENCE FAILED: conference.destroyed The meeting has been terminated undefined
[2024-06-20 13:29:05.076] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.076Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:29:05.077] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.077Z [features/base/tracks] Failed to create local tracks audio,video [object Object]
[2024-06-20 13:29:05.093] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.093Z [modules/RTC/RTCUtils.js] Failed to get access to local media. NotAllowedError: Permission denied {"video":false,"audio":{"autoGainControl":false,"echoCancellation":false,"noiseSuppression":false,"channelCount":2}}
[2024-06-20 13:29:05.095] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.095Z [features/base/tracks] Failed to create local tracks audio [object Object]
[2024-06-20 13:29:05.096] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.096Z [modules/RTC/RTCUtils.js] Failed to get access to local media. OverconstrainedError {"video":{"aspectRatio":1.7777777777777777,"height":{"ideal":1080},"frameRate":{"ideal":60,"max":60,"min":60},"width":{"ideal":1920},"facingMode":"user"},"audio":false}
[2024-06-20 13:29:05.096] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.096Z [features/base/tracks] Failed to create local tracks video [object Object]
[2024-06-20 13:29:05.097] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.097Z [conference.js] Audio track creation failed with error gum.permission_denied: User denied permission to use device(s): audio
[2024-06-20 13:29:05.097] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:05.097Z [conference.js] Video track creation failed with error gum.constraint_failed: Constraint could not be satisfied: undefined
[2024-06-20 13:29:06.019] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:06.018Z [modules/xmpp/XmppConnection.js] <Oo._maybeEnableStreamResume>:  Stream resume enabled, but WebSockets are not enabled
[2024-06-20 13:29:06.769] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] Permissions policy violation: screen-wake-lock is not allowed in this document.
[2024-06-20 13:29:06.773] [warn]  [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:06.773Z [JitsiConference.js] <qh.setSubject>:  Failed to set subject, participant is not a moderator
[2024-06-20 13:29:06.787] [error] [WebContentsEventM...] [Example] [TAB_MESSAGING] [renderer] 2024-06-20T05:29:06.787Z [features/base/conference] Error while requesting wake lock for screen: NotAllowedError: Failed to execute 'request' on 'WakeLock': Access to Screen Wake Lock features is disallowed by permissions policy
Additional Information

That's strange because there are no issues in Chrome/Safari.
Voice calls initiated by the mattermost-calls-plugin work fine, but Jitsi Meet in embedded mode does not.
This might be due to some bugs in Mattermost Desktop.
image

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the embedded Jitsi Meet entry point and the desktop application's microphone and camera permission handling; the issue names no source files or tests. Reproduce the meeting flow with embedded video enabled on macOS or Windows, then verify that both devices work without permission errors while browser behavior remains unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, typescript
Domain
audio-video-rtc, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.