In this iteration we have continued to improve the new GraphQL related core components to improve performance. Various fixes are also included. Below is a list of the pull requests in this iteration, grouped by component. Also the updates for bbb-export-annotations to support tldraw v2, a new Away mode, a new loginURL
create parameter were all added.
Note that BigBlueButton 3.0-dev runs on Ubuntu Jammy (22.04).
BigBlueButton 3.0-dev is under active development. While we don’t recommend setting it up in a production environment, we do encourage administrators to try out the build with others and give us feedback on our bigbluebutton-dev mailing list.
Link to installation command / instructions/ schedule / planned features : https://docs.bigbluebutton.org/3.0/new-features
Most fixes from BigBlueButton 2.7.x are here up to and including v2.7.7 (.2 onwards have been manually ported as we no longer merge the 2.7 branch directly into the 3.0 branch) Remaining work: see #19489
Big THANK YOU to all comminuty members who helped for this release - both through sending pull requests and through reporting bugs or requesting enhancements! 🎊
HTML5 client
newly added:
- feat: change way of rendering contents in presentation area to a pile-based logic. by @GuiLeme in #19854
- feat: Adds custom color highlight option for webcam by @vitormateusalmeida in #19225
- feat: Improved away mode by @ramonlsouza in #20076
fixes
- fix(whiteboard): Selected Shapes Fail To Update On External Edits by @KDSBrowne in #19733
- fix: inactivity warning - front-end by @ramonlsouza in #19879
- fix: meeting end screen by @ramonlsouza in #19887
- fix: generate locales index.json by @ramonlsouza in #19881
- fix: External video plays while paused when it has some user action by @Scroody in #19840
- fix(chat): chat scroll not sticking to the bottom by @JoVictorNunes in #19832
- fix: unpin notes when sharing external video by @JoVictorNunes in #19896
- fix(chat): audio alert playing incorrectly by @JoVictorNunes in #19911
- fix(audio modal): show loading state while autoplay not checked by @JoVictorNunes in #19908
- fix: limit mutation payloads to 10MB by default by @JoVictorNunes in #19945
- fix: Moderator's connection status button subscribing to data of all users by @JoVictorNunes in #19949
- fix(poll): poll element covering the whole presentation by @JoVictorNunes in #19799
- improvement: use React context to store current user data by @JoVictorNunes in #19773
- fix(connection status): restore session logs tab by @JoVictorNunes in #19957
- fix: invalid UA version number in WKWebView by @prlanzarin in #19947
- Fix: External video time resuming when changing presenter by @Scroody in #19912
- Fix: External video autoplay block by @Scroody in #19983
- Client: Drop the accessibility warning for downloadable slides with annotation by @Scroody in #20020
- Fix: Volume bar overlapping by @Scroody in #20019
- fix(bbb-html5): Fix remote logger by @TiagoJacobs in #19967
- fix(bbb-html5): fixes the code reload in development by @TiagoJacobs in #19968
- fix(whiteboard): Update CSS To Disable Asset And Laser Tool by @KDSBrowne in #19903
- Fix: useCurrentUser hook for plugins by @GuiLeme in #19822
- fix(whiteboard): Use canMoveCamera To Disable Viewer Mouse Wheel Pan by @KDSBrowne in #19893
- Fix: layout not propagating by @Tainan404 in #19936
- Fix: failed settings fetch by @Tainan404 in #19904
- fix: Viewer presenter (non moderator) cannot push layout to all by @ramonlsouza in #19944
- fix(whiteboard): Remove Conditionally Called Hooks Error by @KDSBrowne in #19915
- fix: restore screen reader alerts for unread chat messages by @JoVictorNunes in #19713
- Fix: External video re-starting when changing presenters by @Scroody in #20128
- Fix: leave meeting button by @ramonlsouza in #19963
- fix: save user names feature by @ramonlsouza in #19972
- fix: ejected user errors by @ramonlsouza in #19982
- fix: client settings not persisting by @JoVictorNunes in #19994
- fix: share camera on grid mode by @ramonlsouza in #19986
- fix: grid mode loop when pagination is active by @ramonlsouza in #19996
- fix: users count not available on end meeting modal by @ramonlsouza in #19991
- fix: Randomly assign viewers into breakouts filter by @ramonlsouza in #20014
- fix (graphql-server): Update only modified annotations by @gustavotrott in #20022
- fix: restore max annotations limit by @ramonlsouza in #20018
- fix: Grid mode ignores cap, shows too many elements by @ramonlsouza in #19970
- fix: grid mode webcam order by @ramonlsouza in #20030
- fix: move users to the correct breakout room in manage users modal by @ramonlsouza in #20044
- fix(html5): SharedNotes not unmounting when other components pile up in layout manager by @GuiLeme in #20045
- fix: restore shape type validation by @ramonlsouza in #20037
- fix: not a function error by @ramonlsouza in #20057
- fix: missing whiteboardId error by @ramonlsouza in #20058
- fix(whiteboard): Upgrade Tldraw Version To v2.0.0-alpha.19 by @KDSBrowne in #19901
- fix: save region specific language does not work by @ramonlsouza in #20079
- fix(bbb-html5): customHeartbeat would not close stale sessions (port) by @antobinary in #19812
- fix: user can't join default selected breakout by @ramonlsouza in #20113
- fix: throttle in user typing mutation by @ramonlsouza in #20115
- Fix: add a adapters manager to lock loading while data sync by @Tainan404 in #20127
- Fix: audio still playing when user left the meeting by @Tainan404 in #20130
- fix: snapshot of current slide by @ramonlsouza in #20133
- fix(webcam): fetch user data of webcam users only by @JoVictorNunes in #20141
- fix: Warning message character limit exceeded is still showing up after being sent by @ramonlsouza in #20143
- fix(whiteboard): Deactivate Drawing Tool On Access Change by @KDSBrowne in #20136
- fix: tweak video-streams typings by @JoVictorNunes in #20134
- fix(whiteboard): Stop Loading Tldraw Assets From Unpkg Site by @KDSBrowne in #20120
- fix: client warnings by @ramonlsouza in #20173
- fix: custom logo by @ramonlsouza in #20167
- fix: limit grid users at the data access level by @JoVictorNunes in #20168
- fix: only send cursor updates of users with whiteboard access by @ramonlsouza in #20186
- fix(whiteboard): Update API For Retrieving Shape Being Edited by @KDSBrowne in #20189
- fix(bbb-html5): add specific logCodes for root error boundaries by @prlanzarin in #20172
- fix(webcam): conditional hook call by @JoVictorNunes in #20195
- Fix: userlist going with zeroed values to server by @Tainan404 in #20202
- fix(whiteboard): Correct Viewer Canvas Position on Slide Change by @KDSBrowne in #20198
- fix: locale setting not persisting by @JoVictorNunes in #20205
refactor
- refactor: make cursor coordinates be consumed from stream by @Tainan404 in #19823
- refactor: make bbb client work without meteor service (partial) by @ramonlsouza in #19869
- refactor: Raise hand notification using graphql by @ramonlsouza in #19884
- !refactor: Remove pick random user (frontend) by @Tainan404 in #19785
- refactor (html5): Add operationName for subscriptions that lacks it by @gustavotrott in #19928
- refactor (html5): Rename UserListCount subscription to reuse it automatically by @gustavotrott in #19937
- refactor (html5): Remove unused queries by @gustavotrott in #19939
- refactor: add meteor assets cache to build script by @ramonlsouza in #19942
- refactor (html5): Make Meeting subscription use JsonPatch by @gustavotrott in #19940
- refactor(notes / captions): migrate pads from Meteor to GraphQL by @JoVictorNunes in #19448
- Refactor: base.jsx cleanup by @Tainan404 in #19789
- refactor: Migrate poll creation by @Tainan404 in #19446
- refactor: Migrate meeting collection to graphql by @Tainan404 in #19853
- refactor: rename Songs to Music in BBB Timer by @Scroody in #19174
- refactor: Data needed for plugins by @Scroody in #20084
- !Remove: user persistent data collection by @Tainan404 in #19973
- Refactor: Migrate meeting remaining time by @antonbsa in #18920
- cleanup: remove old
local-settings
collection by @JoVictorNunes in #19984 - refactor (html5): Provide list of available locales through settings.yml (and Graphql) by @gustavotrott in #19993
- cleanup: remove old polls by @JoVictorNunes in #19989
- Remove: breakout history collection by @Tainan404 in #20041
- Remove: typed captions by @Tainan404 in #20050
- Refactor: migrate breakout invitation by @Tainan404 in #19324
- Remove: auth token validation code from frontend by @Tainan404 in #20062
- Refactor: Move notifications to graphql by @Tainan404 in #20043
- Refactor: migrate timer panel to TS and graphql by @Tainan404 in #20059
- Remove: recording meeting collection by @Tainan404 in #20066
- Refactor: move captions to graphql by @Tainan404 in #20028
- Refactor: migrate screenshare to graphql using a adapter by @Tainan404 in #20074
- Remove: whiteboard-multi-user subscription by @Tainan404 in #20072
- Remove: voice call state by @Tainan404 in #20063
- Remove: presentation upload token subscription by @Tainan404 in #20071
- !remove: user-info collection by @Tainan404 in #20068
- Remove: Pads, PadsSessions, PadsUpdates client subscriptions and dependencies by @Tainan404 in #20051
- Refactor: user reaction to graphql by @Tainan404 in #20080
- Refactor: Migrate user settings by @Tainan404 in #20077
- Refactor: remove unused subscriptions by @Tainan404 in #20085
- refactor: Move timer init to akka-apps (was Meteor) by @gustavotrott in #20089
- refactor: Move SharedNotes init to akka-apps (was Meteor) by @gustavotrott in #20093
- refactor: Remove remaining makecall by @ramonlsouza in #20091
- Remove old
video-streams
Meteor subscription by @JoVictorNunes in #20061 - Remove: meteor server dependencies by @Tainan404 in #20096
- Remove: client subscriptions component by @Tainan404 in #20103
- refactor: Move Export breakoutRooms sharedNotes routine to akka-apps (removing Meteor part) by @gustavotrott in #20099
- Refactor: useUserCurrentData to use subscription by @Tainan404 in #20116
- Remove: timer js files by @Tainan404 in #20118
- refactor: Code removal by @Tainan404 in #20125
- refactor: remove unused code by @ramonlsouza in #20100
- !remove: Frontend Redis client listener by @Tainan404 in #20104
- refactor: add names to unnamed queries by @ramonlsouza in #20188
plugin related
- feat(plugin): adds layout presentation area pile and refactors setters by @GuiLeme in #19876
- feat(plugins) - refactor format of receiving data for data-channels by @GuiLeme in #19997
- feat(plugins): refactor intl code for plugin and general code by @GuiLeme in #20135
- feat(plugin): Support useMeeting hook for plugin by @GuiLeme in #20097
test
- test: Avoid unrelated notifications by @gabriellpr in #19807
- test: Re-add breakout test to CI by @antonbsa in #19907
- CI: Test workflow improvements + (backport) Update github actions with deprecated Node.js 16 by @antonbsa in #19905
- test: Avoid presentation notifications on polling tests by @gabriellpr in #19965
- test: Screenshare should stop external video by @gabriellpr in #20017
- test: fix breakout tests failing on CI by @antonbsa in #20067
- test: Tests removal of removed features by @antonbsa in #20144
Core -- newly introduced components bbb-graphql-server, bbb-graphql-middleware, bbb-graphql-actions-adapter-server, ...
- feature: Add new API /create param
loginURL
by @gustavotrott in #20081 - refactor: Terminate all meetings (in Graphql) upon the restart of the akka-apps service by @gustavotrott in #19867
- Graphql: Add missing fields to lockSettings and endWhenNoModerator by @gustavotrott in #19873
- graphql: Introduces flag inactivityWarningDisplay (backend) by @gustavotrott in #19851
- refactor (graphql-middleware): Increase Ws Read Limit (necessary for annotations) by @gustavotrott in #19913
- refactor (graphql-middleware): Increase Ws Read Limit to 10MB (necessary for annotations) by @gustavotrott in #19916
- refactor (graphql-middleware): Improve activities status logs and add option to disable JsonPatch by @gustavotrott in #19931
- refactor: Simplify user connection status flow (streamlining RTT measurements and reducing GraphQL traffic) by @gustavotrott in #19934
- graphql-middleware: Track most requested messages for performance analysis by @gustavotrott in #19933
- Fix (akka-apps): Avoid delete again a message from plugin DataChannel by @gustavotrott in #19935
- refactor (graphql-middleware): Fix wrong logs in activities overview by @gustavotrott in #19954
- Fix (akka-apps): Avoid delete again a message from plugin DataChannel by @gustavotrott in #19955
- !refactor: remove unused DeskShareStartRTMP/DeskShareStopRTMP events by @prlanzarin in #18575
- refactor (graphql-middleware): Significantly reduces the size of the Json Patch by @gustavotrott in #19974
- graphql-middleware: Add periodic log with Activities Overview by @gustavotrott in #19926
- graphql-middleware: Disable activities overview logs by default by @gustavotrott in #19943
- graphql-middleware: Implements a cache-system for JsonPatch by @gustavotrott in #19964
- graphql-middleware: Add option to restrict subscriptions (for tests purpose) by @gustavotrott in #19969
- Graphql: Introduces flag
showRemainingTime
by @gustavotrott in #19975 - refactor (graphql-server): Makes it faster to update annotations by @gustavotrott in #19988
- graphql-server: Add type
caption_typed_activeLocales
by @gustavotrott in #19995 - [Snyk] Security upgrade express from 4.18.2 to 4.19.2 by @antobinary in #19902
- fix (graphql-sever): Option "Join audio" in breakout rooms not working properly by @gustavotrott in #20031
- graphql-server: Add flag
isAudioOnly
for breakoutRoom participant by @gustavotrott in #20039 - Graphql-server: Add mutation
captionSetOwner
by @gustavotrott in #20046 - enhancement (graphql-server): Validate
sudo
on running update_graphql_data.sh by @gustavotrott in #20048 - fix (graphql-server): Fix problem on sending audio caption by @gustavotrott in #20060
- graphql-server: Introduces
Notification
by @gustavotrott in #19999 - refactor (graphql-server): Support two users with same userId (in different meetings) by @gustavotrott in #20021
- enhancement:
Graphql-middleware
will directly parse and route Mutations tographql-actions
, bypassing Hasura by @gustavotrott in #20145 - enhancement (graphql-server): Optimization of Hasura Queries and Index Utilization in Postgres by @gustavotrott in #20147
- Graphql-server: Increase Streaming Queries Multiplexed Batch Size to 1000 (was 100) by @gustavotrott in #20149
- enhancement: Speed up the client loading (by implementing a cache system to obtain ClientSettings) by @gustavotrott in #20171
- refactor/build: drop html5InstanceId and simplify bbb-html5 frontend/backend by @antobinary in #20132
- fix (graphql-middleware): After returning a Mutation data, it should send a
complete
message by @gustavotrott in #20185 - refactor (graphql-server): Graphql config improvements by @gustavotrott in #20187
- refactor (gql-middleware): Change Graphql endpoint to
/graphql
by @gustavotrott in #20193 - refactor: change enforceLayout to match defaultMeetingLayout format by @ramonlsouza in #20217
build (packaging scripts) / configuration
- build: Force hasura cli v2.36.2 to avoid error by @gustavotrott in #19894
- build(bbb-webrtc-sfu): v2.14.0-beta.0 by @prlanzarin in #19877
- build (html5): Add step to clear Nginx cache to refresh Meteor assets by @gustavotrott in #20002
- build: Bump bbb-playback.placeholder.sh to 5.1.0 (tldraw v2 alpha.18) by @antobinary in #20023
- refactor/build: drop html5InstanceId and simplify bbb-html5 frontend/backend by @antobinary in #20132
- fix (build): Set Hasura CLI config with correct password by @gustavotrott in #20197
bbb-export-annotations
- feat: Tldraw v2: export presentation with annotations by @danielpetri1 in #19082
docs
- docs: docusaurus update, improve Readme by @antobinary in #20206
- docs: info on allowOverrideClientSettingsOnCreateCall by @antobinary in #19919
- docs: fix links, remove obsolete content, write up 3.0 content by @antobinary in #20208
manually ported from v2.7.x-release to v3.0.x-release
- feat: Initial implementation of Gladia transcriptions to BBB 3.0 (backend portion) by @antobinary in #19841
- fix(bbb-export-annotations): Flag to force CairoSVG to embed images and improved redis socket configs by @antobinary in #19922
- fix(audio): minimize redundant audio exit toasts by @prlanzarin in #20155
- fix(audio): acquire streams before negotiation when peer is answerer by @prlanzarin in #20156
- fix(reactions): crash when interactionsButton coords are absent by @prlanzarin in #20157
- fix(bbb-html5): crash on video-provider unmount by @prlanzarin in #20158
- fix(bbb-html5): crash when stopping WebRTC peers by @prlanzarin in #20159
- fix(screen-reader): add safeguards for adding alerts by @prlanzarin in #20160
- fix: add safeguards when returning user roles by @prlanzarin in #20161
- fix(audio): broken connection stats on Firefox >= 125 by @prlanzarin in #20162
- fix: undefined accesses causes crashes in actions-bar breakout utils by @prlanzarin in #20163
- fix(bbb-html5): correct parameter type for wake lock log codes by @prlanzarin in #20164
- fix(audio): review device selection in mobile endpoints by @prlanzarin in #20166
- fix(audio): review audio modal help screen by @prlanzarin in #20174
Release name
Passing -v jammy-300
to https://github.com/bigbluebutton/bbb-install/blob/v3.0.x-release/bbb-install.sh will always install the latest released BigBlueButton 3.0 version.
If for some reason you would like to install this specific release, pass -v jammy-300-3.0.0-alpha.6
.
We still recommend using -v jammy-300
as this repository is continually updated with each BigBlueButton 3.0 release.