* feat: Use source name based receiver constraints
* add sourceNameSignaling feature flag to config
* move source name specific variables into if block
* ensure sourceName is defined in constraints
* use source name for selectedSources
* use selector to find video track by participant id
* add selector to encapsulate logic to get track source name
* refactor getTrackSourceNameByMediaTypeAndParticipant selector
* rename variable
* move flags config into Feature Flags section
* do not set constraints for local large video
* rename prioritizedSources to onStageSources
* fix flow error
* refactor visibleRemoteTrackSourceNames to a constant
* use selector to get feature flags
* rename selector function
* fix flow error
* add selector for sourceNameSignaling feature flag
* feat: Drops hide self-view setting from profile tab.
* feat: Moves function for disableSelfView value in base/settings.
* squash: Drops notification.
* feat: Move hide self view option in more tab.
* feat: Move hide self view option in more tab.
* feat: Adds option to disable self view UI settings.
* squash: Disable settings when controlled from config.
Moving to breakout room and back in main room do not fire videoConferenceLeft events.
And the videoConferenceJoined was reporting wrong conference name on join.
Update video thumbnail design
Update design of indicators
In filmstrip view move Screen Sharing indicator to the top
Removed dominant speaker indicator
Use ContextMenu component for the connection stats popover
Combine Remove video menu and Meeting participant context menu into one component
Moved some styles from SCSS to JSS
Fix mobile avatars too big
Fix mobile horizontal scroll
Created button for Send to breakout room action
* fix: Fixes disable moderation sounds in meeting.
Moderators in the meeting were sending presence update after one moderator turn it on, which even my result a inconsistent state and flipping the state between moderators several times.
* squash: Adds option to disable reaction moderation.
* fix(speaker-stats): prevent search from closing when enter pressed and from keeping previous state
* fix(speaker-stats): remove unnecessary blank lines
* fix(speaker-stats): add empty dependencies to prevent dismiss callback
* add(speaker-stats): reset search criteria action
* feat(tracks) Clean up the track if a source addition is rejected.
When jicofo rejects a source-add because of sendder limits, dispose and remove the local track from the conference.
* chore(deps) update LJM to latest.
Added config option disableSelfView. This disables it on web and native
Added button on local video menu and toggle in settings on web to change the setting
Close the menu after sending a participant to a breakout room, that will detach
the context menu from the current participant and it will work properly when
they join back.
* fix(screenshot-capture) Update screenshot capture feature
Add participants jid list to request
Enable screenshot capture only when recording is also on
Updated interval
* feat(conference) Impl audio/video mute disable when sender limit is reached.
Jicofo sends a presence when the audio/video sender limit is reached in the conference. The client can then proceed to disable the audio and video mute buttons when this occurs.
* squash: use a different action type and show notification.
Don't show more menu on the main room
Fix join room on mobile web
When moving to room reset breakout rooms state to avoid showing incorrect data before response from prosody is received
This event is the event host applications need to listen to for knowing when to
dispose the SDK from now on.
Since the introduction of breakout rooms it's possible that we navigate from one
meeting to another, so there will be several conference join / terminations.
In addition, local track destruction is now moved to SET_ROOM when there is no
room, aka, we are going back to the welcome page or to the black page.
- implement breakout-rooms
- integrated into the participants panel
- managed by moderators
- moderators can send participants to breakout-rooms
- participants can join breakout rooms by themselve
- participants can leave breakout rooms anytime
Co-authored-by: Robert Pintilii <robert.pin9@gmail.com>
Co-authored-by: Saúl Ibarra Corretgé <saghul@jitsi.org>
* Initial implementation; Happy flow
* Maybe revert this
* Functional prototype
* feat(facial-expressions): get stream when changing background effect and use presenter effect with camera
* add(facial-expressions): array that stores the expressions durin the meeting
* refactor(facial-expressions): capture imagebitmap from stream with imagecapture api
* add(speaker-stats): expression label
* fix(facial-expression): expression store
* revert: expression leabel on speaker stats
* add(facial-expressions): broadcast of expression when it changes
* feat: facial expression handling on prosody
* fix(facial-expressions): get the right track when opening and closing camera
* add(speaker-stats): facial expression column
* fix(facial-expressions): allow to start facial recognition only after joining conference
* fix(mod_speakerstats_component): storing last emotion in speaker stats component and sending it
* chore(facial-expressions): change detection from 2000ms to 1000ms
* add(facial-expressions): send expression to server when there is only one participant
* feat(facial-expressions): store expresions as a timeline
* feat(mod_speakerstats_component): store facial expresions as a timeline
* fix(facial-expressions): stop facial recognition only when muting video track
* fix(facial-expressions): presenter mode get right track to detect face
* add: polyfils for image capture for firefox and safari
* refactor(facial-expressions): store expressions by counting them in a map
* chore(facial-expressions): remove manually assigning the backend for tenserflowjs
* feat(facial-expressions): move face-api from main thread to web worker
* fix(facial-expressions): make feature work on firefox and safari
* feat(facial-expressions): camera time tracker
* feat(facial-expressions): camera time tracker in prosody
* add(facial-expressions): expressions time as TimeElapsed object in speaker stats
* fix(facial-expresions): lower the frequency of detection when tf uses cpu backend
* add(facial-expressions): duration to the expression and send it with durantion when it is done
* fix(facial-expressions): prosody speaker stats covert fro string to number and bool values set by xmpp
* refactor(facial-expressions): change expressions labels from text to emoji
* refactor(facial-expressions): remove camera time tracker
* add(facial-expressions): detection time interval
* chore(facial-expressions): add docs and minor refactor of the code
* refactor(facial-expressions): put timeout in worker and remove set interval in main thread
* feat(facial-expressions): disable feature in the config
* add(facial-expressions): tooltips of labels in speaker stats
* refactor(facial-expressions): send facial expressions function and remove some unused functions and console logs
* refactor(facial-expressions): rename action type when a change is done to the track by the virtual backgrounds to be used in facial expressions middleware
* chore(facial-expressions): order imports and format some code
* fix(facial-expressions): rebase issues with newer master
* fix(facial-expressions): package-lock.json
* fix(facial-expression): add commented default value of disableFacialRecognition flag and short description
* fix(facial-expressions): change disableFacialRecognition to enableFacialRecognition flag in config
* fix: resources load-test package-lock.json
* fix(facial-expressions): set and get facial expressions only if facial recognition enabled
* add: facial recognition resources folder in .eslintignore
* chore: package-lock update
* fix: package-lock.json
* fix(facial-expressions): gpu memory leak in the web worker
* fix(facial-expressions): set cpu time interval for detection to 6000ms
* chore(speaker-stats): fix indentation
* chore(facial-expressions): remove empty lines between comments and type declarations
* fix(facial-expressions): remove camera timetracker
* fix(facial-expressions): remove facialRecognitionAllowed flag
* fix(facial-expressions): remove sending interval time to worker
* refactor(facial-expression): middleware
* fix(facial-expression): end tensor scope after setting backend
* fix(facial-expressions): sending info back to worker only on facial expression message
* fix: lint errors
* refactor(facial-expressions): bundle web worker using webpack
* fix: deploy-facial-expressions command in makefile
* chore: fix load test package-lock.json and package.json
* chore: sync package-lock.json
Co-authored-by: Mihai-Andrei Uscat <mihai.uscat@8x8.com>
Fixed analytics where event names had duplicated words (eg. calendar.calendar.selected.selected)
Group reaction buttons analytics into one event
Removed unused code
Clicking on an item when the popup drawer is displayed would keep it open.
Now clicking on any item should automatically close the drawer.
Popup was also refactored and no longer uses refs.
Created Reusable components for:
- ListItem - used by participants list and lobby participants list
- ContextMenu - used by participant context menu and advanced moderation context menu
- Quick action button - used by quick action buttons on participant list items
Moved participants custom theme to base/components/themes
Created reusable button component for all participants pane buttons (Invite, Mute All, More)
Moved web components to web folder
Moved all styles from Styled Components to JSS
Fixed accessibility labels for some buttons
Removed unused code
Updated all styles to use theme tokens
Don't cleanup URL params when jitsi is in iframe
Fixes an issue where the user right-clicks on the iframe and Reload frame. This causes a refresh of the iframe, not the whole page, but without the parameters (jwt, configOverwrite etc are all lost). The parameters are part of the URL, so by not cleaning them up we make sure that on reload we still have all params
* In order to be able to customize the background of the chat
it had not be displayed inside of a dialog. This also removes
the need to extensively use 'TouchmoveHack' component.
* Adds the ability to change panes (Chat vs Polls) using the keyboard.
* Adds accessibility attributes to panes.
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* # Conflicts:
# react/features/filmstrip/components/web/Thumbnail.js
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* fix(translation) Reverted changes to translation parameter
Reverted param name change on translation
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* fix(lang): update German translation (#10188)
Signed-off-by: Christoph Settgast <csett86@web.de>
* Update Virtual Background Model (#9867)
* update virtual background
* remove comments
* remove general model
* fix(lang): update French translation (#10239)
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* Update Occitan (#10240)
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat: (video-thumbnail) add permanent participant name to video thumbnail fix display
* feat(reactions) Added metrics for disable reaction sounds
Reordered reactions middleware alphabetically
* feat: (video-thumbnail) add permanent participant name to video thumbnail
* feat: (video-thumbnail) add permanent participant name to video thumbnail
Co-authored-by: robertpin <robert.pin9@gmail.com>
Co-authored-by: csett86 <csett86@web.de>
Co-authored-by: Roshan Pulapura <81193065+rpulapura@users.noreply.github.com>
Co-authored-by: gpatel-fr <44170243+gpatel-fr@users.noreply.github.com>
Co-authored-by: Mejans <61360811+Mejans@users.noreply.github.com>
- created `ClearableInpu`t component on web & native
- added `ClearableInput` component to participants pane and used it for search in participants list
- update `AddPeopleDialog` to use `ClearableInput`
Video quality label now becomes "performance settings".
All CSS for labels is moved to JS.
Overflow menu button is also changed to "performance settings".
* feat: Hides prejoin screen on conference in progress event.
We enter the conference view as early as possible on conference in progress as the joined event can be late in a big conference.
Also, we show conference view only when joining is in progress, for example, the with the lobby enabled where we try to join but fail, we do not want to show the conference view for a fraction of a second before showing lobby screen.
* squash: Drops CONFERENCE_JOIN_IN_PROGRESS.
* squash: Updates ljm with the new JitsiConference event.
* squash: Adds some debugs to the github action.
Easier to catch problems with package-lock.json file.
This is a stop-gap approach to remove the AtlasKit notifications stack.
Instead of using a AK FlagGroup to render our notifications (Flag components)
in, create our own container and use a fake FlagGroupContext provider, which is
what FlagGroup uses to control what flags can be dismissed.
Since we now render all notifications, the web part has been refactored to make
sure all notifications get a timer.
Added animations
Renamed DrawerPortal to JitsiPortal
Redesigned notifications
Changed notification text and icons color and added collared ribbon
We make the request for dynamic branding as soon as possible so
at the time of the request the config is not yet added to the store.
In order to fix this we get the jass brandingDataUrl &
dynamicBrandingUrl directly from the config.
Changed screen capture to non effect. Effects are used to alter the stream, this feature does not need to alter the stream, it just needs access to it
Changed image diff library. Previous library diff’ed the whole image, the new one has en early return threshold
Use ImageCaptureAPI to take the screenshot. Added polyfill for it and polyfill for createImageBitmap
Added analytics
Since iOS 15 we really need the audio stream to exist, so make sure we don't
destroy it even when "everyone starts muted" is set, we'll just mute it.
Fixes: https://github.com/jitsi/jitsi-meet/issues/10053
Signals that the bridge channel is open. It may take a few ms to get established
after the conference join, so applications might be interested in using it once
ready.
* feat(av-moderation) Ask to Unmute and remove from Whitelist
Make Ask to Unmute work without moderation
Add remove from moderation whitelist functionality
* chore(deps) lib-jitsi-meet@latest
* feat(av-moderation) Remove from moderation whitelist functionality (#1729)
* fix(chore) corrected typo in log message
* fix(e2ee) replace nullish coalescing with or
* fix(e2ee) restore initial key when RATCHET_WINDOW_SIZE reached
3b8baa9d3b...0646bc3403
Co-authored-by: Дамян Минков <damencho@jitsi.org>
* fix(av-moderation) Improve advanced moderation
Hide moderator label on disasbleModeratorIndicator
- On disasbleModeratorIndicator config hide moderator label from participants pane
Add Ask to Unmute button to mobile web
* Fix lint error
In iOS 15 we observe that not creating the audio track early may result in not
getting audio after unmuting for the first time.
Creating the audio track early means the first unmute doesn't need to add the
track to the conference, resulting in a much faster operation.
Note that creating the track early doesn't mean we will start unmuted, the track
will be muted.
Fixes: https://github.com/jitsi/jitsi-meet/issues/9996
On iOS 15 Bluetooth devices are reported twice for some reason, one with the
normal type "Bluetooth" but another type without a know (to me) type, and the
uid ends in "-reference".
While we send those unkwno devices to JS, we were not filtering them properly.
This patch skips them altogether.
Updated participants list to:
- show Moderator label
- show correct status icons (red for force muted)
- show participants in the right order
Updated moderation to:
- show moderation menu at all times
- make moderation options functional
Updated notifications:
- fixed raise hand to show name
- display moderator rights granted
Updated mute/ stop video for all dialogs to include moderation toggles
Added ask to unmute button
Fix comments on ask to unmute
Co-authored-by: robertpin <robert.pin9@gmail.com>
* Register shortcuts on mount
* Changed icon for reactions menu
* Enable reactions by default
* Fix unreadCount bug
When having unread messages and sending a reaction the unread count now shows the correct count
* Fix overflow menu bottom color when reactions are enabled
* Revert raise hand icon
* Update raise hand functionality
On desktop show raise button with arrow for reactions. Only show raise hand in the reactions menu on mobile
* Fix lint error
Add required prop to ToolboxButtonWithIcon
* Legacy support for enable reactions
If disableReactions is undefined treat it as true
* Remove unnecessary code
* Fix unread counter showing negative count
* Fix unreadCount with reactions
UnreadCount ignores all reactions messages
* Fixed typo
* Fix background color
In the case of the recorder we were not taking into account that the
local thumbnail is not visible. This was braking the rendering and
positioning of the thumbnails in tile view.
Jibri was hitting a problem where it reloads and in certain cases (remote user is screensharing) we hit this participant undefined, which stops reload and stops recording.
It is still not obvious why we try to render this on leaving the conference and for a participant that is not in the conference ... this re-render should not happen as this component should be removed from its parent when the participant is not existing.
* Update moderation in effect notifications
Only display one notification for each media type. Display notification for keyboard shortcuts as well
* Update muted remotely notification
Display name of moderator in the notification
* Fix indentation on moderation menu
* Update text for video moderation
* Added moderator label in participant pane
* Update microphone icon in participant list
For participants that speak, or are noisy, but aren't dominant speaker, the icon in the participant list will look the same as the dominant speaker icon but will not change their position in the list
* Added sound for asked to unmute notification
* Code review changes
* Code review changes
Use simple var instead of function for audio media state
* Move constants to constants file
* Moved constants from notifications to av-moderation
- on ipads, long touch open dialog now opens the context menu to the left of the thumbnail as expected
- on ipads, now we close context menus on tap out
- fix case when participant context menu's height > tileview videos' height causing scroll on videos pane
- keep toolbox open while the overflow menu is shown
- keep remote participant video thumbnail in filmstrip visible even if toolbox is hidden, if context menu is opened
- Fix bug where toolbox could be completely disabled
* fix(participant-pane) Use the sorted participant list from redux instead of sorting it on every render making it better performant. Match the participant order with that of the order in the filmstrip. Also move the participants with raised hand to the top of the list.
* ref(filmstrip) Move enableThumbnailReordering flag to testing section.
* fix(participants) Add new selectors for getting sorted participants.
* Add configuration to disable removing raised hand on dominant speaker change
* Fix lint problem
* Avoid dispatching unnecessary action
* Fix lint problem
Creating a preview of the same audio/video track kills the tracks that is already being shared in the conference. Therefore, disable camera/mic selection in the settings dialog while the user is in the call. The devices are selectable from the prejoin screen settings dialog.
* feat(responsive-ui): Keep aspect ratio for filmstrip self view on mobile web
Right now filmstrip displays self view in landscape mode.
With these changes the aspect ratio of the self view will be maintained
so on portrait mode the thumbnail will be displayed vertically.
Of course this makes sense only on mobile web.
* Code review
* Fix height
viewableItems always comes in order and indexes are always ascending. In
addition, if the array comes empty (I saw it happen on Android at least, when
scrolling like a maniac) we'd calculate the right value, instead of Infinity.
On mobile Safari, when a user joins both audio and video muted, browser doesn't playout the remote audio because of a webkit bug. As a workaround, always add the audio track to peerconnection and then mute the track if needed.
* Fix: removed web actions from common middlewares
* Fixed raise hand sound
Fix sound to play on raise not lower and work on keyboard shortcut as well
* Fixed reaction keyboard shortcuts
Register shortcuts only when there's more than one participant
* Enforce reactions feature flag on reaction received
* Disable reactions by default on native
* Enable reactions on native by default
* Sort props alphabetically
* Created isreactionsEnabled function
* Remove unused imports
* Fix. No longer show toolbox on reactions and jibri
On message received don't show toolbox for jibri
* Fix isReactionsEnabled function for native
On native check for flag and config option as well
* Added sounds for reactions
* Updated reactions list
* Added reactions to sound settings
* Added support for multiple sounds
* Added feature flag for sounds
* Updated sound settings
Moved reactions toggle at the top of the list
* Added disable reaction sounds notification
* Added reaction button zoom for burst intensity
* Fixed raise hand sound
* Fixed register sounds for reactions
* Changed boo emoji
* Updated sounds
* Fixed lint errors
* Fixed reaction sounds file names
* Fix raise hand sound
Play sound only on raise hand not on lower hand
* Fixed types for sound constants
* Fixed type for raise hand sound constant