Commit Graph

741 Commits

Author SHA1 Message Date
Paulo Lanzarin
6326a81123
feat(audio): microphone bridge set to mediasoup by default
The initial goal is for this to be default in 2.7.
Set it as default early in the cycle so folks can test it for longer.

If there's any deal-breaking issue with it nearing release we can just flip back to the old (2.6, FS/SIP.js) default.
2023-05-10 16:01:45 -03:00
Arthurk12
33c9abd874 requested changes 2023-05-09 17:21:47 -03:00
Carlos
8f8bfc8903 feat(camera as content): port to BBB
Enables the presenter to share a camera in the presentation area.
The shared camera automatically uses a pre-defined, fixed and hidden camera.
Profile defined in the settings.yml file.
It is currently using the screenshare's backend.
2023-05-09 17:21:46 -03:00
Lucas Fialho Zawacki
fcb6b94787 feature(reactions): Flags to enable new/old status button and to position it centered or to the right 2023-04-28 14:10:27 -03:00
André Castro
2c52c1a596
Merge branch 'v2.6.x-release' into I-17465 2023-04-27 19:25:56 -03:00
Lucas Fialho Zawacki
2a3e2d4993 feat(user-actions): enabled option in settings.yml 2023-04-27 18:37:18 -03:00
Max Franke
fbcc611bd9 feat(interactions): add new interactions button
Interactions button is a button that stays in action bar.
Integrates several features in just one place: user-reaction, raise hand,
user-status (away/not away), toggle question panel.
2023-04-27 13:57:40 -03:00
Max Franke
d28b93a586 feat(reactions): add user reaction
add user-reaction collection
add emoji picker for user reaction in the user list
add options to enable/disable user-reaction
add a way to pass style to emoji-picker component
2023-04-27 11:54:11 -03:00
GuiLeme
7492506224 [chat-list-migration] - started migration for chatList 2023-04-26 18:02:32 -03:00
Diego Benetti
2767bee67c Enables transfer button to be displayed in tablets 2023-04-26 14:30:25 +00:00
Gustavo Trott
a5609cd217
Merge pull request #17487 from Tainan404/apollo-client
refactor (bbb-html5): Refactor of Userlist using graphql
2023-04-24 18:27:51 -03:00
Lucas Fialho Zawacki
6979432c36 feat(transcription): Server side open source transcriptions 2023-04-24 18:23:34 -03:00
Tainan Felipe
b7177a9c93 Merge branch 'pull-17124' into apollo-client 2023-04-24 18:15:22 -03:00
Ramón Souza
b121fcbd87 Merge remote-tracking branch 'upstream/v2.7.x-release' into 27-dev-apr24 2023-04-24 17:26:54 -03:00
Ramón Souza
af8556e026 Merge remote-tracking branch 'upstream/v2.6.x-release' into 26-27-apr24 2023-04-24 17:15:47 -03:00
andre-imdt
df9d11180f Enhancement: Virutal backgrounds now accepts webp 2023-04-24 13:56:54 -03:00
Tainan Felipe
cc5badc560 WIP: graphql 2023-04-14 16:20:52 -03:00
KDSBrowne
d0d3862708 Merge branch 'v2.6.x-release' of https://github.com/bigbluebutton/bigbluebutton into bbb-hover-tools 2023-04-13 17:45:39 +00:00
Scroody
e3477b5e42 Fix: Restore on update 2023-04-13 10:56:54 -03:00
GuiLeme
5eb29e0ab5 [issue-16954] - merge upstream/v2.7.x-release 2023-04-11 11:02:00 -03:00
Anton Georgiev
1eb1b1dec7
fix: Update docs links settings.yml (backport of #17433 by @code-Gambler) 2023-04-11 09:18:56 -04:00
Steven David Pillay
0c69fb3790
docs: Issue#17103-Updated TURN server document for BBB 2.6 (#17433)
* Specified that the BBB v2.6 comes with a default Coturn Server.
* Issue#17435-Updated the Document Links
2023-04-11 09:12:47 -04:00
GuiLeme
9c581d3858 [issue-16954] - fix blue screen when joining a session 2023-04-11 10:05:49 -03:00
Anton Georgiev
e2dc7da98a
Merge pull request #16828 from prlanzarin/u27/fix/ss-cam-reconn
fix: re-connection improvements for cameras and screen sharing
2023-04-05 16:13:01 -04:00
KDSBrowne
72adc96dbe add autohide option for whitboard toolbars 2023-03-26 22:08:09 +00:00
zhem0004
5fdd91ba67
Add new setting to enable/disable extra guest policy Allow buttons (#17034)
* add new setting to enable/disable extra guest policy buttons
2023-03-14 14:39:37 -04:00
Ramón Souza
f72b6dae94
remove oldMinimizeButton from settings file 2023-03-10 09:05:13 -03:00
prlanzarin
3bddbb96cf fix(video): signaling and reconnection edge cases
There are still a bunch of edge cases and issues with reconnection
scenarios for video:
  - Signaling socket refuses to reconnect once maxRetries expire
  - Race conditions on local stream attachment: local camera wouldn't be
    correctly rendered _if_ the attached stream existed _without_ video
    tracks yet
  - Video tracks leak on local streams when replacing them (virtual bgs)
  - Completely ignoring Meteor state when trying to reconnect cameras
  - Streams aren't proactively stopped when the signaling socket dies
  - Outbound request queues aren't isolated by stream nor are they
    flushed when a newer peer with the same ID is created
  - Server originated negotiation errors won't trigger a local peer
    cleanup - thus leaving dangling peers that take way too long to
    reconnect

This commit fixes or improves all of the aforementioned issues, +:
  - Remove unused arguments in the peer (client->SFU) 'start' request
  - Prevent crashes when trying to render video-list-items without user
    data (which might happen on re-connections)
2023-03-08 15:49:35 -03:00
prlanzarin
afa2908ded fix(screenshare): better reconnection timers and UI for abrupt failures
Reconnection timers are far too long for abrupt failures because we
are waiting the original timeouts to elapse (30-60s) before trying it
again - even if a connection worked N-sessions back in that session's
history. The ideal thing to have is another intermediate, smaller and
fixed reconnection timer for sessions that had a working screen share
at least once.
The UI is also not being updated to the reconnecting state on negotiation
failures.

* Add an intermediate reconnection timer for abrupt failures set to 8s.
  This should improve reconnection times.
* Lower default connection timers values (base 20s down from 30s, max
  25s down from 60s)
* Set screen share UI to reconnecting on abrupt failures as well - we
  were only tracking ICE states prior to this, not negotiation errors
2023-03-08 15:48:30 -03:00
prlanzarin
a83f3b675e fix(video): add proper signaling WS heartbeat, +
video-provider's current ping-pong is as good as nothing in 2.5+. We
were counting on Meteor's (and consequently the component's mount state)
before 2.5 to act as a "heartbeat" as far as the socket is concerned.
The ping-pong served only to sustain traffic for finnicky,
traffic-dependant firewall.
Since 2.5, the component's state is _kind of_ detached from Meteor's -
which means it won't unmount when Meteor disconnects. That causes the
video-provider websocket to lose its borrowed heartbeat and leads to a
bunch of reconnectiong inconsistencies, the worst of them being a stuck,
useless signaling socket that will cause cameras not to work until a
client refresh.

This commit does the following:
  - Implements actual heartbeat checks to trigger signaling socket
    reconnects when necessary, all within the scope of video-provider
  - Remove borked, eons old 'offline'/'online' event handlers: they were
    causing unnecessary camera drops AND causing video-provider to
    generate a stuck signaling socket
  - Properly catch WebSockets.send errors
2023-03-08 15:46:51 -03:00
GuiLeme
9fb2c32384 [issue-16734] - refactor hidePresentation to hidePresentationOnJoin 2023-02-17 14:59:39 -03:00
Ramón Souza
616d615e94 increase default value for max number of annotations per slide 2023-02-08 15:02:59 -03:00
Ramón Souza
f605ce7ae2 add comment 2023-02-02 16:59:38 -03:00
Ramón Souza
25800ee92b limits the number of annotations per slide 2023-02-02 16:47:16 -03:00
Anton Georgiev
6b4c46f750
Merge pull request #16107 from schrd/local-echo-delay
fix(audio): add delay for loopback test
2023-01-24 13:55:26 -05:00
Guilherme Pereira Leme
06519d81a2
changes in review
Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
2023-01-24 08:20:01 -03:00
Daniel Schreiber
cc21f1598b Copy in fixups from review
thanks @prlanzarin for reviewing:
https://github.com/bigbluebutton/bigbluebutton/pull/16107#pullrequestreview-1241137609
2023-01-23 20:31:53 +01:00
GuiLeme
8dd5c12d8f [patch-default-configs-breakout] - refactor 2023-01-23 12:35:43 -03:00
Anton Georgiev
7e75a851eb
Merge pull request #16468 from GuiLeme/issue-16141
feat(config): Default values for checkbox in breakout rooms modal
2023-01-20 09:16:39 -05:00
Ramón Souza
58e36357d1
Merge pull request #16072 from Tainan404/remove-speed-bump-notes
fix: add delay for shared note true unmount
2023-01-19 11:51:19 -03:00
Ramón Souza
c666f9ecf4
keep "script" font as default 2023-01-18 08:25:32 -03:00
Tainan Felipe
4022d4a0f6 add delay for shared note true unmount 2023-01-17 14:50:41 -03:00
Daniel Petri Rocha
164f00187d Take disabledFeatures into account 2023-01-17 18:02:44 +01:00
Joao Victor
44896106b9 feat(whiteboard): configurable text tool font family 2023-01-16 08:40:42 -03:00
GuiLeme
21145a8e70 [issue-16141] - implemented new configs for checkboxes in breakout rooms modal 2023-01-13 17:37:42 -03:00
Anton Georgiev
3a74c2bec1 Merge branch 'v2.5.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2510-to-26 2023-01-05 18:30:09 +00:00
Anton Georgiev
4504e5b846
chore: Updated the copyright year to 2023 2023-01-05 09:44:24 -05:00
Daniel Schreiber
4347ff2e3b Re-add option to disable enforce relay webrtc traffic for Firefox
There may be other bridges may not need to force relay traffic on
firefox as @prlanzarin pointed out. So set the default to a
configuration that works out of the box but leave other choices for the
operator.

The option is moved from kurento namespace to media next to the general
forceRelay option.
2023-01-03 23:21:25 +01:00
Daniel Schreiber
74f37db4fa Get rid of forceRelayOnFirefox
Firefox has a buggy ICE implementation and needs WebRTC media traffic to
be routed through a turn server to work reliably with mediasoup.

Use the information fetched by the STUN API to determine if the operator
has configured a turn server. If there is one force firefox to use it.

Closes #16164
2022-12-18 23:17:14 +01:00
Ramón Souza
55ae884f5f
Merge branch 'v2.6.x-release' into ask-before-leave 2022-12-06 09:04:28 -03:00
Ramón Souza
31f20b08b5 add max characters limit to sticky notes 2022-11-23 14:03:20 -03:00
Gustavo Trott
531241d269
feat: Button to transfer user to mobile App (#15183)
* Provide a link to transfer user to mobile App
* show menu option only if appStoreLink is present and it is not running on mobile app already
2022-11-15 09:49:24 -03:00
Gustavo Trott
50010ea528
Merge pull request #15894 from JoVictorNunes/shared-notes-on-media 2022-11-10 11:44:28 -03:00
Ramón Souza
cdc2bc7e04
Merge pull request #15770 from JoVictorNunes/store-webcam-microphone
improvement: share audio and video setup among different sessions
2022-11-09 10:37:52 -03:00
Daniel Schreiber
c42fa1ca77 Add config option for html5 settings storage
When BBB is run as a single node or in a scaleout setup with a cluster
proxy in front (see https://docs.bigbluebutton.org/admin/clusterproxy.html) it
is useful to store client settings in browser localStorage instead of
sessionStorage. If localStorage is configured then the client will keep seetings
like notifications for user joining, chat etc across meetings.

It is not advisable to set the setting to `local` in a setup of multiple BBB
nodes without a cluster proxy in front of it because this would lead to
unexpected behaviour at users. The browser would store settings for each server
and for users it would look like BBB is sometimes store the settings and
sometimes not.

It adds the new setting

```yaml
public:
  app:
    userSettingsStorage: (session|local)
```
2022-11-09 09:00:03 -03:00
Joao Victor
9680c0a5ab Add config for disabling the option 2022-10-27 17:04:12 -03:00
Lucas Fialho Zawacki
d53c8d90a2 Option to hide waiting users icon when no pending users 2022-10-14 15:20:06 -03:00
Lucas Fialho Zawacki
a2bc96fe35 Ask for confirmation before closing meeting window 2022-10-13 16:41:43 -03:00
Lucas Fialho Zawacki
d4a424c1e6 Option to hide waiting users icon when no pending users 2022-10-11 16:17:03 -03:00
Ramón Souza
045e2ec95d
Merge pull request #15740 from JoVictorNunes/issue-15712
fix: add config to disable emoji sort on click
2022-09-29 10:32:07 -03:00
Ramón Souza
a01049996b set disableWebsocketFallback default true 2022-09-27 16:23:27 -03:00
Joao Victor
862c9fb64d fix: add config to disable emoji sort on click 2022-09-27 15:47:39 -03:00
Ramón Souza
2b0971e2c8 Merge tag 'v2.5.6' into merge-256-26 2022-09-26 09:17:59 -03:00
Ramón Souza
f5b912d5ef move config to public.app 2022-09-21 13:16:25 -03:00
Ramón Souza
6d1463e03b add disableWebsocketFallback settings 2022-09-21 11:03:21 -03:00
Ramón Souza
ab50d4d60e add settings 2022-09-16 13:01:07 -03:00
Ramón Souza
83c9e644b1 add settings 2022-09-16 11:56:56 -03:00
Ramón Souza
4e46284a3b
Merge pull request #15603 from JoVictorNunes/camera-brightness
feat(camera): set camera brightness
2022-08-31 17:00:34 -03:00
Joao Victor
c7b4f8bc66 chore/fix: update react-intl to 6.1.0 and add config to disable fallback 2022-08-30 09:32:21 -03:00
Joao Victor
2dd5a73601 chore: update react-intl to 6.1.0 2022-08-29 17:25:43 -03:00
Joao Victor
396f5320a4 feat(camera): set camera brightness 2022-08-26 11:50:46 -03:00
prlanzarin
0e162f1cda feat: configurable DSCP marking for WebRTC media
RTCRTPSender exposes DSCP marking via `networkPriority` in the encodings
configuration dictionaries. That should allow us to control
QoS priorities for different media streams, eg audio with higher network
priority than video. The only browser that implements that right
now is Chromium.

To use this, the public.app.media.networkPriorities configuration in
settings.yml. Audio, camera and screenshare priorities can be controlled
separately. For further info on the possible values, see:
  - https://www.w3.org/TR/webrtc-priority/
  - https://datatracker.ietf.org/doc/html/rfc8837#section-5
2022-08-15 21:24:05 +00:00
Ramón Souza
9cfc3e7edd
Merge pull request #15343 from frankemax/dynamic-filter-emojis
feat(emoji-picker): dynamically filter emojis
2022-08-04 09:42:56 -03:00
Gustavo Trott
acb0465266
Merge pull request #15412 from JoVictorNunes/export-presentation 2022-07-26 17:49:09 -03:00
prlanzarin
6c8b097eba fix: add option to disable transcription in mobile, extend support check
Mobile endpoints are flaky with the WebSpeechAPI:
  - iOS versions that support it are borking our outbound audio when it's
    enabled
  - Android speech recognition has flaky locale detection and speech
    transcription
Additionally: the support check is not checking the WebSpeechAPI
availability properly, so older devices (eg iOS 12) are flagged as
supported even though they aren't.

This commit adds a configuration flag (public.audioCaptions.mobile) to
control transcription availability on mobile. False by default.
Also extends the setSpeechVoices support check and
hasSpeechRecognitionSupport method to prevent false positives.
2022-07-20 17:20:54 +00:00
Arthurk12
9642d0431a chore(captions): adds a description to settings 2022-07-20 17:20:53 +00:00
Arthurk12
c96b53093c feat(captions): adds locale settings
Adds two new flags to the settings file which change the way the locale
flag is used:

- forceLocale: (true/false) => If true, enforces the transcription
  language to be the locale content field and jumps the language
selector
  in audio modal.
- defaultSelectLocale: (true/false) => If true, the default selected
  value in the dropdown language selector in audio modal will be defined
  by the locale content field.

In any case, if the locale flag holds an invalid value, it defaults to
disabled.
2022-07-20 17:20:53 +00:00
Pedro Beschorner Marin
51eeb092b3 refactor(captions): configurable languages
Move the language collection to the HTML settings file. This data defines
the available languages available for the speech API.

These language tags are used to filter SpeechSynthesis' API `getVoices`
result. Tags must use BCP 47 format.

https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice/lang
2022-07-20 17:20:52 +00:00
Pedro Beschorner Marin
d6dc66f57e feat(captions): language selector
Replace the checkbox with a selector up with 3 languages: en-US, es-ES and pt-BR.

Add setting option to enable by default with predetermined locale.
2022-07-20 17:20:50 +00:00
Pedro Beschorner Marin
944edf2ccf feat(captions): web speech prototype
Hardcoded pt-BR prototype for closed captions generated by the browser's
WebSpeech API.
2022-07-20 17:20:48 +00:00
Joao Victor
cff1c087a8 feat: front-end support for exporting presentations with annotations 2022-07-19 16:36:00 -03:00
prlanzarin
6a4ceac61f refactor(webcam): swap kurento-utils for the new peer wrapper 2022-07-15 14:00:12 +00:00
Max Franke
52e27e8030 feat(emoji-picker): dynamic filter emojis
Configure filtered emojis via settings.yml
Emojis can be filtered by their unicodes
2022-07-07 13:12:35 -03:00
prlanzarin
f85442bc72 chore(audio): enable local echo test and volume meter by default
See https://github.com/bigbluebutton/bigbluebutton/pull/14736
2022-06-28 22:26:07 +00:00
Joao Victor
2a1401f2ae Merge remote-tracking branch v2.6.x-release into virtual-background-upload 2022-06-01 16:50:29 -03:00
Joao Victor
4840543701 fix: move config key to public.virtualBackgrounds (Settings.yml) 2022-06-01 14:23:00 -03:00
Max Franke
4cf98010a9 feat(message-form): add emoji button 2022-05-24 14:20:55 -03:00
Ramón Souza
32469846f8
Merge pull request #14989 from gabriellpr/emoji-chat
feat(chat): Auto convert text to emoji
2022-05-13 18:47:26 +01:00
Joao Victor
a7e5869c91 feat(video): upload of own webcam virtual background 2022-05-10 14:17:16 -03:00
Ramon Souza
0d3a5326fc Merge remote-tracking branch 'upstream/v2.5.x-release' into 25260-may10 2022-05-10 10:53:00 -03:00
gabriellpr
d97631cc40 auto convert to emoji 2022-05-10 09:47:51 -03:00
prlanzarin
e93176238a feat(audio): add sipjsAllowMdns option to control mDNS filtering in SIP.js
FreeSWITCH has mDNS resolution capabilities as of 1.10.7. Having the filtering
configurable in the client allows us to field trial whether we should keep that
on or off. The default is still to filter them out because FreeSWITCH does not
resolve mDNS candidates by default (ice_resolve_candidate in switch.conf.xml).
2022-05-06 13:38:44 +00:00
Mario Junior
dced094ad7
Merge pull request #14833 from lfzawacki/develop-bbb
New Layout code and push layout states for camera position, size, focus and presentation minize
2022-05-04 16:51:06 -03:00
Ramón Souza
50b3eceb46
Merge pull request #14912 from ramonlsouza/issue-14909
Breakout rooms: have multiple "remaining time" notifications
2022-05-03 13:12:54 +01:00
Joao Victor
34503251cf refactor: poll component - merge both auto optioning and file drag&drop into one single thing 2022-04-29 12:04:45 -03:00
Ramon Souza
9d9558953e support to multiple breakout time alerts 2022-04-29 10:05:29 -03:00
Lucas
2db9a1b343
Merge branch 'develop' into develop-bbb 2022-04-26 15:08:43 -03:00
prlanzarin
459e1a9514 refactor(audio): remove old listen only bridge (kurento.js)
- Remove the old listen only bridge (kurento.js), superseded by the equivalent
  and equally stable (AS FAR AS LISTEN ONLY IS CONCERNED) sfu-audio-bridge
  - Rename FullAudioBridge.js -> sfu-audio-bridge.js
    * A more generic name that better represents the capabilities and
      the nature of the bridge
    * The bridge name identifier in configuration is still the same
      ('fullaudio')
  - Remove the FreeSWITCH listen only fallback
  - Temporarily disable the "trickle ICE" pair gathering feature used
    in SIP.js (which was always experimental, nonstandard and disabled
    by default)
  - Updates to settings.yml keys in places where relevant
2022-04-20 20:46:32 +00:00
Paulo Lanzarin
cd96f30d22
chore: disable candidate signaling by default
mediasoup is the default media server in v2.5, so we don't need ICE candidates 
to be signaled to bbb-webrtc-sfu. Disabling it saves resources (client and server).
2022-04-19 11:50:45 -03:00
Anton Georgiev
825cfc8d9f
Merge pull request #14666 from OneScreenSolutions/feat-poll-auto-options
feat: Feat poll auto options
2022-04-18 09:52:14 -04:00
Anton Georgiev
9a8264ec6c
Merge pull request #14736 from prlanzarin/u25-wave-idea3
feat(audio): local echo test and audio energy meter
2022-04-14 17:07:28 -04:00
Ramon Souza
e4c585ac9a enable drag and drop polls by default 2022-04-14 13:57:23 -03:00
Lucas Zawacki
83847a21aa Merge branch 'v2.5.x-release-Layouts' of github.com:lfzawacki/bigbluebutton into develop-bbb 2022-04-13 21:08:32 +00:00
prlanzarin
bae731e59e fix(audio): PC loopback workaround for local echo in Chrome
Works around the fact that Chrome doesnt have AEC on streams that dont go through PCs
2022-04-13 14:37:39 +00:00
Anton Georgiev
8ab4023eb5
Merge pull request #14783 from frankemax/bbb-darkmode-25
feat(theme): add dark mode
2022-04-12 10:35:31 -04:00
prlanzarin
1e37924e41 refactor(audio): local echo initial hearing state is configurable, ...
public.media.showVolumeMeterInSettings => public.media.showVolumeMeter

public.media.simplifiedEchoTest => public.media.localEchoTest.enabled

Initial hearing state can be configured in public.media.localEchoTest.initialHearingState
2022-04-11 21:04:08 +00:00
prlanzarin
d6c7f23a0e feat(audio): local echo test and audio energy meter
New features:
  - A simplified echo test mode that only does a local loopback (instead of
  going to FS and back)
  - A volume meter for microphone streams to the AudioSettings view

Those two features are experimental and disabled by default; see
public.app.media.simplifiedEchoTest and public.app.media.showVolumeMeter configs

Collateral changes:
  - fix: localize fallback device strings in AudioSettings/DeviceSelector
  - Refactor on some media stream utils to be re-usable across components
  - Refactor in AudioSettings to keep gUM #uses stable.
    * TODO: need to pass streams through AudioManager to avoid the surplus gUM.
  - fix(audio): drop ScriptProcessorNode usage (deprecated)
    * Used in volume meter for tracking - use hark instead
2022-04-11 19:21:56 +00:00
Anton Georgiev
3afb57fa66
Merge pull request #14788 from ramonlsouza/merge-2425-apr08
chore: Merge 2.4 into 2.5
2022-04-08 20:37:32 -04:00
Ramon Souza
1c873bd8d6 Merge remote-tracking branch 'upstream/v2.4.x-release' into merge-2425-apr08 2022-04-08 17:30:21 -03:00
Max Franke
6b05e431dd feat(theme): add dark mode theme 2022-04-08 16:05:29 -03:00
germanocaumo
a04fbc56e1 feat(html5): add error logs and redis prometheus metrics
New config: settings.private.prometheus.collectRedisMetrics disabled by default
2022-04-08 14:21:55 +00:00
muhammadameen252
7b7f3ff41c added auto optioning feature in poll 2022-03-21 22:58:11 +05:00
prlanzarin
a18ae31def refactor(video): remove frameRate constraints from quality control profiles
Rationale: the important thing here is bitrate. Disabling constraints should have no meaningful on 1) client-side bw 2) client-side cpu 3) server-side bw/cpu - while it will also guarantee seemingly smoother streams
2022-03-14 12:01:13 -03:00
prlanzarin
4ae5c70248 feat(video): add flag to disable quality change exemptions (floor, pin) 2022-03-14 11:58:53 -03:00
prlanzarin
ccbb6c6651 fix(video): add debounce and option to exclude constraints from dynamic camera profiles
Tries to mitigate too-rapidly-switching camera profiles causing video freezes
due to encoder resets. Excluding constraints might not help a lot since
the thing that actually restarts the encoder is the bitrate change, but
they're not really important in the context of dynamic profiles.
We can't get rid of bitrate changes, though, since it's what does the actual
quality constraining.

The camera profile change debounce timer is 2.5s by default (which is
the same timer used for floor changes).

Also fixed an issue with camera profile backfiring due to badly defined peers
2022-03-14 11:56:48 -03:00
prlanzarin
41f89536d6 fix: specify height in high and hd camera profiles
Set height to 720 in those profiles so that aspect ratio has a better chance to
be cohesive in all environments. Having only width set was causing certain
devices to output videos with non-standard ARs
2022-03-14 10:31:59 -03:00
Lucas Zawacki
31ddd9a8d8 fix(layout): Better config names for layout push/toggle 2022-03-09 18:10:09 -03:00
Lucas Zawacki
559b6f59c2 fix(layout): Remove unused options 2022-03-09 18:04:21 -03:00
Max Franke
0f27b1add4 feat(layout): new layout modal
Add a new modal that makes it easier to switch between layouts
Adds a new flag in html5 settings that allows to enable/disable
keepPushing layout
2022-03-09 17:00:06 -03:00
Lucas Zawacki
e113fa489b layout(fix): Fix hidePresentation yml option 2022-03-09 16:12:53 -03:00
prlanzarin
ae6564f276 fix: specify height in high and hd camera profiles
Set height to 720 in those profiles so that aspect ratio has a better chance to
be cohesive in all environments. Having only width set was causing certain
devices to output videos with non-standard ARs
2022-03-02 20:28:29 -03:00
Pedro Beschorner Marin
f267cf29e0 refactor(pads): unneeded redis subscription
Since bbb-pads the html client Etherpad redis' channel subscription isn't
needed anymore. All communication between Etherpad and BigBlueButton goes
through bbb-pads.
2022-03-01 09:54:43 -03:00
Arthurk12
7b5049f14c feat(layout): settings
Adds settings flag to activate/deactivate layout propagation button in actions
bar menu.
2022-02-22 18:18:56 -03:00
Anton Georgiev
89bbddf254 chore: Enable displayBbbServerVersion in settings.yml 2022-02-17 17:21:54 +00:00
Anton Georgiev
db6941970c build: automatically set BBB version in settings.yml 2022-02-17 17:21:02 +00:00
Anton Georgiev
0a3f879bd8
chore: updated bbbServerVersion to 2.5 2022-02-17 08:54:17 -05:00
gustavo-em
fe6428d665 add settings.yml and rule in component to show version 2022-02-04 16:41:46 -03:00
Ramón Souza
16cd3c4ebb Merge remote-tracking branch 'upstream/v2.4.x-release' into dev-24-0125 2022-01-25 16:56:52 +00:00
Pedro Beschorner Marin
810deb907b refactor(etherpad): access control et al.
Move all Etherpad's access control from Meteor to a separated [Node application](https://github.com/bigbluebutton/bbb-pads).
This new app uses [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
to create groups and manage session tokens for users to access them. Each group
represents one distinct pad at the html5 client.

- Removed locked users' access to pads: replaced readOnly pad's access with a new pad's content sharing routine
- Pad's access is now controlled by [Etherpad's API](https://etherpad.org/doc/v1.8.4/#index_overview)
- Closed captions edited content now reflects at it's live feedback
- Improved closed caption's dictation mode live feedback
- Moved all Etherpad's API control from Meteor to a separated [app](https://github.com/bigbluebutton/bbb-pads)
- Included access control both in akka-apps and bbb-pads
2022-01-21 16:56:01 -03:00
Arthurk12
45fcd54ab9 refactor(presentation): upload extra hint
Adds text hint about the accepted presentation file size limit.
2022-01-20 17:50:50 +00:00
Paulo Lanzarin
e87a633da3
chore(bbb-html5): enable camera pin/screenshare volume control by default 2022-01-13 19:08:14 -03:00
Anton Georgiev
2d1aab563d
chore: Updated year to 2022 in bbb html settings.yml 2022-01-12 16:59:24 -05:00
Ramón Souza
f6e65f58c5 merge 2.4 into develop and resolve conflicts - partial 2022-01-12 16:40:45 +00:00
Mario Jr
1621834239 feat(audio): add settings for audio websocket connection
Default values were kept, but now this can be changed in settings.yml.
If not set in settings.yml, the old hardcoded values are used.
2022-01-10 18:56:29 -03:00
Anton Georgiev
14d3922846 refactor: Rename L Dashboard to L Analytics Dashboard 2022-01-07 19:22:05 +00:00
Max Franke
7e2a3c3bca feat(webcams): client side implementation of webcam pin 2021-12-21 16:58:39 -03:00
Anton Georgiev
ad97eb2ebe
Merge pull request #13871 from prlanzarin/u24-lifeforms-longforms
feat(bbb-html5): add a general forceRelay flag
2021-12-14 16:44:36 -05:00
Paulo Lanzarin
775150471c
Merge pull request #13688 from Arthurk12/screenshare-volume
feat(screenshare): volume control
2021-12-14 14:06:37 -03:00
Anton Georgiev
797fc49633 TEMP 2021-12-09 20:37:05 +00:00
prlanzarin
93b5f4c93d feat(bbb-html5): add a general forceRelay flag
public.media.forceRelay forces relay usage on all browsers, environments and media modules

If true, overrides public.kurento.[4~forceRelayOnFirefox
2021-12-09 11:35:56 +00:00
prlanzarin
e49aa1c959 refactor(screenshare): revert volume control to HTMLMediaElement, make it configurable
I have growing concerns about gain node`s effect on audio quality the way it
was implemented, so I opted to fall back to HTMLMediaElement`s volume control
for the time being until we can gauge quality impacts properly later on

Add a new configuration flag enableVolumeControl, false by default while the
feature undergoes a field trial
2021-12-08 16:24:31 +00:00
Anton Georgiev
578332a094
Merge pull request #13731 from schrd/cluster_proxy
Allow BBB to run behind a proxy the avoid gUM permission queries per node
2021-12-03 11:32:07 -05:00
Anton Georgiev
def60fbcbc
Merge pull request #13818 from prlanzarin/u24-lift-wsb
feat(webcam): add a way to re-open video preview without multiple cameras
2021-12-02 17:26:23 -05:00
prlanzarin
da6ab02122 chore: add forceRelayOnFirefox option (false by default)
- forceRelayOnFirefox: whether TURN/relay usage should be forced to work
around Firefox's lack of support for regular nomination when dealing with
ICE-litee peers (e.g.: mediasoup).
  * See: https://bugzilla.mozilla.org/show_bug.cgi?id=1034964
- iOS endpoints are ignored from the trigger because _all_ iOS browsers
  are either native WebKit or WKWebView based (so they shouldn't be affected)
2021-11-30 20:31:12 +00:00
prlanzarin
f8034b8e04 refactor(audio): remove unused relayOnlyOnReconnect config
Removed/left behind when SIP.js was bumped for 0.7.x to 0.15.x
2021-11-30 19:22:38 +00:00
Maxim Khlobystov
b7cf670aec Remove the support for iframe postMessage API (recording and self-muting) 2021-11-29 22:53:12 +00:00
Mario Jr
54bda21287 chore(video): change default setting to enable webcam's button selector
Renamed this setting and added some docs about it
Complements #979
2021-11-26 13:12:07 +00:00
Max Franke
310add10ed feat(webcam): add a little button to webcam button
Add the <ButtonEmoji/> to the webcam button. Now it
is possible to change the webcam settings and change
your settings without having to turn off sharing.
Modifies the <ButtonEmoji/> component so that it can
receive an onClick per props.
It is possible to disable this feat in the settings.yml
2021-11-26 12:53:11 +00:00
Daniel Schreiber
c46556e1f6 Allow BBB to run behind a proxy the avoid gUM permission queries per node
The idea is to run a loadbalancer node which maps each BBB node to a
path. That way each user gets only one gUM permission query for a
cluster. The loadbalancer node only serves the html5 client, each BBB
node will serve its own API and handle the websockets for freeswitch and
bbb-webrtc-sfu.

Configuring a cluster setup
===========================

* let bbb-lb.example.com be the loadbalancer node
* let bbb-01.eaxmple.com be a BBB node

Loadbalancer
------------

On the loadbalancer node add an nginx configuration similar to this one
for each BBB node:

```
location /bbb-01/html5client/ {
  proxy_pass https://bbb-01.example.com/bbb-01/html5client/;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}

```

BBB Node
--------

On the BBB node add the following options to
`/etc/bigbluebutton/bbb-web.properties`:

```
defaultHTML5ClientUrl=https://bbb-lb.example.com/bbb-01/html5client/join
presentationBaseURL=https://bbb-01.example.com/bigbluebutton/presentation
accessControlAllowOrigin=https://bbb-lb.example.com
```

Add the following options to `/etc/bigbluebutton/bbb-html5.yml`:

```
public:
  app:
    basename: '/bbb-01/html5client'
    bbbWebBase: 'https://bbb-01.eaxmple.com/bigbluebutton'
    learningDashboardBase: 'https://bbb-01.eaxmple.com/learning-dashboard'
  media:
    stunTurnServersFetchAddress: 'https://bbb-01.eaxmple.com/bigbluebutton/api/stuns'
    sip_ws_host: 'bbb-01.eaxmple.com'
  presentation:
    uploadEndpoint: 'https://bbb-01.eaxmple.com/bigbluebutton/presentation/upload'
```

Create the following unit file overrides:

* `/etc/systemd/system/bbb-html5-frontend@.service.d/cluster.conf`
* `/etc/systemd/system/bbb-html5-backend@.service.d/cluster.conf`

with the following content:

```
[Service]
Environment=ROOT_URL=https://127.0.0.1/bbb-01/html5client
```

Change the nginx `$bbb_loadbalancer_node` variable to the name of the
load balancer node in `/etc/bigbluebutton/nginx/loadbalancer.nginx` to
allow CORS requests:

```
set $bbb_loadbalancer_node https://bbb-lb.example.com
```

Prepend the mount point of bbb-html5 in all location sections except
from the `location @html5client` section in
`/etc/bigbluebutton/nginx/bbb-html5.nginx`

```
location @html5client {
    ...
}
location /bbb-01/html5client/locales {
    ...
}
```
2021-11-20 22:13:47 +01:00
Mario Jr
117bb91a0e fix(audio): rename fullaudio bridge to FullAudioBridge
updated whitelist, also according to sonar checks
2021-11-09 12:10:36 -03:00
Mario Jr
db4e2f9c47 update(audio): correctly retrieves the media-server-fullaudio from meta params
Previously we were using the same for listenonly, which for default
environments points to kurento, and didn't make any difference in media server
selection.
This could be problematic in those environments where meta param
for listeonly media server is set , though.
Fullaudio has now it's own meta param that can be passed through API:
"meta_media-server-fullaudio"
2021-11-09 12:09:28 -03:00
Mario Jr
42778adeaf feat(audio): add base code for fullaudio bridge
This bridge will work with bbb-webrtc-sfu to handle microphone audio.
2021-11-09 12:08:45 -03:00
Mario Jr
7e218c3eca feat(audio): add bridge configurable scheme
we are now able to switch between audio bridges, by selecting it in
config files.
2021-11-09 12:08:09 -03:00
germanocaumo
3dd679761f Merge branch 'v2.4.x-release' of https://github.com/bigbluebutton/bigbluebutton into f-h-prom-agent 2021-11-05 19:38:40 +00:00
germanocaumo
6f1e1d4f4a refactor(prom-html5): serve endpoint via meteor instead of http server +
- separate backend/frontend metrics, only add metrics related to the role
- add role and instance labels
2021-11-05 16:31:23 +00:00
Mario Jr
c1c0a2341f Merge branch 'develop' into allow-chrome-in-ios 2021-10-28 13:38:18 -03:00
Mario Jr
94cbc3bbc8 feat: allow users in iOS join from chrome mobile version 94+
Complements #13562
2021-11-03 11:47:36 -03:00
Anton Georgiev
1622425cbc Merge branch 'develop' of github.com:bigbluebutton/bigbluebutton into 2.4-into-develop 2021-10-22 19:12:58 +00:00
Ramón Souza
9e71583ec7 restore old minimize presentation button and add a flag to switch 2021-10-14 19:31:47 +00:00
Anton Georgiev
24d672a832 Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-24-dev 2021-10-14 15:13:17 +00:00
germanocaumo
30db4a4122 refactor(html5-prometheus): remove MCS references and change default port 2021-10-06 18:56:32 +00:00
germanocaumo
a0580431e0 feat(html5-server): add prometheus default instrumentation
Adds prometheus client to collect html5 server metrics.
Only default Node.js metrics in this initial version.

Enable via configs in private.app.prometheus
2021-10-06 18:55:19 +00:00
Paulo Lanzarin
9c09b36b23 chore(webrtc): let the server generate subscriber offers by default 2021-09-29 21:21:00 +00:00
prlanzarin
1cb412529d feat(webrtc): add EXPERIMENTAL option to disable ICE candidate signaling
ICE lite servers (eg mediasoup) dont need candidates signaled out-of-band; neither does KMS in certain scenarios

Disable their signaling saves us some ticks in bbb-webrtc-sfu and some bandwidth all around
2021-09-24 17:24:06 +00:00
Anton Georgiev
7c11600518
Merge pull request #13266 from mariogasparoni/dynamic-bridges
feat(audio): add bridge configurable scheme
2021-09-22 16:00:46 -04:00
Anton Georgiev
ab845b3078 Merge branch 'v2.4.x-release' of github.com:bigbluebutton/bigbluebutton into merge-24-rc-1-into-dev 2021-09-22 15:28:13 +00:00
Paulo Lanzarin
f8dee2f064
chore(webrtc): let the server generate subscriber offers by default 2021-09-21 13:29:08 -03:00
Anton Georgiev
becf921280
Merge pull request #12528 from bhuvankrishna/patch-1
Update settings.yml
2021-09-20 11:36:49 -04:00
Mario Jr
4fcd051223 feat(audio): add bridge configurable scheme
we are now able to switch between audio bridges, by selecting it in
config files.
2021-08-31 15:50:53 -03:00
prlanzarin
fe5e86052a refactor(html5): media server adapter config is undefined by default
Undefined by default means that the governing configuration is in bbb-webrtc-sfu

Also add some inline docs in settings.yml about the media server adapter configs
2021-08-31 01:58:51 +00:00
prlanzarin
c741cea715 feat(video): add media server adapter config for cameras in bbb-html5
Allows configuring, via bbb-html5, which media server adapter will be used by cameras; server wide
2021-08-31 00:30:06 +00:00
prlanzarin
c57fb0b388 feat(audio): add media server adapter config for listen only in bbb-html5
Allows configuring, via bbb-html5, which media server adapter will be used by listen only; server wide
2021-08-31 00:24:41 +00:00
prlanzarin
86a715dc15 feat(screenshare): add media server adapter config in bbb-html5
Allows configuring, via bbb-html5, which media server adapter will be used by screen sharing; server wide
2021-08-31 00:19:51 +00:00
Anton Georgiev
a820f7bb09 chore: Enable by default enableNetworkStats 2021-08-30 18:30:12 +00:00
Anton Georgiev
4ecb24b4fa Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-aug30 2021-08-30 18:11:16 +00:00
Anton Georgiev
46af0a8ee0
Merge pull request #13059 from jfsiebel/allow-to-remove-all-presentations
Allow presenter to remove all presentations
2021-08-27 14:06:37 -04:00
Mario Jr
fe7c7fe685 allow network stats information and copy button to be enabled in config file 2021-08-25 16:38:36 -03:00
Anton Georgiev
e6eebfaa81
Merge pull request #12983 from prlanzarin/u24-fantas
refactor(webcams, screenshare, listen-only): let the server generate subscriber offers
2021-08-24 16:37:44 -04:00
Joao Siebel
f3f9ec19eb Allow presenter to remove all presentations 2021-08-23 18:04:16 -03:00
Ramon Souza
b048e77f10 user leave alerts feature 2021-08-20 13:14:12 -03:00
prlanzarin
54d04fdb77 refactor(listen-only): let the server generate subscriber offers 2021-08-12 13:45:18 +00:00
prlanzarin
387c453076 refactor(screnshare): let the server generate subscriber offers 2021-08-12 13:45:04 +00:00
Anton Georgiev
5cfb723e07 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into aug6-merge 2021-08-06 15:23:36 +00:00
Jibon Costa
4ec70505f0 added option to allow to use customStyleUrl from config 2021-08-05 02:36:30 +00:00
Anton Georgiev
cb6ff58e37
chore: Enable VirtualBackgrounds by default
To allow for more extensive usage/testing by community
2021-07-23 13:06:21 -04:00
Anton Georgiev
1a46c1b2c0
Merge pull request #12495 from schiesslm/virtual_background
Virtual background
2021-07-23 12:56:18 -04:00
prlanzarin
9071ba8bc4 refactor(virtual-backgrounds): re-organize virtual background code
Changes (maybe not a complete list):
  - Disable virtualbgs by default
  - Move the virtualbg selector in video-preview to the side below the
profile selection
  - Restore old video-preview sizes
  - Add a wrapper class for MediaStreams (BBBVideoStream)
  - Centralize virtualbg services and business logic code into BBBVideoStream
  - Refactor and centralize virtualbg constant fetching
  - Refactor and centralize virtualbg config fetching
  - Organize virtualbg type definitions
  - Remove added states in video-provider to prevent further bloat
  - Remove added states in video-preview to prevent further bloat
  - Lock virtual bg switching while video-preview itself is locked
  - Add proper virtualbg error surfacing via toasts
  - Refactor iOS availability detection to use centralized UA checker
  - Avoid calling gUM when toggling virtualbgs on/off
  - Make virtualbg video-list-item action a toggle instead of a
state-aware action
  - Make virtualbg switching work in video-preview for cameras that are
already shared. Especially useful when there are multiple source
cameras, and will be important in the near future
  - Add Derivative Work notices in files that are partially copied from
jitsi-meet
  - Simplify track replacing in video-provider
  - Split video-preview UI code for virtualbgs into a separate functional component
2021-07-22 18:53:42 +00:00
Ramon Souza
28ed62a128 remove default layout from settings file 2021-07-22 08:20:53 -03:00
Bartu Bazna
9f791a8892 Squashed virtual background commits 2021-07-21 20:00:19 +00:00
Anton Georgiev
5e1fe55731
Merge pull request #12760 from ramonlsouza/change-default-layout
Set new Layout Manager as default
2021-07-13 09:06:32 -04:00
Vitor Mateus De Almeida
6cfd7ee958 Clean code and add some missing css 2021-07-13 09:30:10 -03:00
Ramon Souza
604ae9cf6f change default layout to smart 2021-07-13 09:25:53 -03:00
Vitor Mateus De Almeida
f0145e001e Add resizable and draggable in cameras dock
Remove settings and change resizable context data

Add resizable draggable drop areas in cameras dock
2021-07-13 04:25:03 -03:00
Anton Georgiev
b9cc633286 Merge branch 'v2.3.x-release' of github.com:bigbluebutton/bigbluebutton into merge-2.3.5-into-develop 2021-07-06 19:36:19 +00:00
Mario Jr
c4abd274e8 feat(audio): add option for enabling/disabling kms's trickle for mic 2021-07-02 12:51:00 -03:00
germanocaumo
bd29d156b3 fix(poll): Respect maxCustom property in quick-polls
More than 5 answers are now of Custom type poll and answers passed directly.
Increase A-I slide options detection
2021-06-30 15:19:09 +00:00
Anton Georgiev
19a49c83f1
Merge pull request #12620 from germanocaumo/quick-poll-max-custom
fix(poll): Respect maxCustom property in quick-polls
2021-06-24 14:55:45 -04:00
Anton Georgiev
905e0dd4dd
Updated bbbServerVersion to 2.4 2021-06-23 10:35:18 -04:00
Ramon Souza
1ac5350fd4 change layout ui 2021-06-22 09:17:11 -03:00
germanocaumo
4f06b1fbf8 feat(poll): add option to disable poll chat message 2021-06-18 14:13:20 +00:00