

Przegląd
BigBlueButton 4.0 oferuje użytkownikom lepszą użyteczność i większe zaangażowanie.
- Użyteczność - ułatwienie typowych funkcji (takich jak podniesienie ręki)
- Zaangażowanie - zapewnienie instruktorowi więcej możliwości zaangażowania uczniów
Najbardziej widoczną zmianą w wersji 4.0 jest przeprojektowany interfejs klienta zbudowany w oparciu o nową nawigację pasek boczny i galerię aplikacji. Pod maską wersja 4.0 przenosi się do Ubuntu 24.04 i kontynuuje modernizację bazy kodu rozpoczętą w wersji 3.0.
Oto zestawienie nowości w wersji 4.0.
Użyteczność
Przeprojektowany boczny pasek nawigacyjny i galeria aplikacji
Lewa nawigacja klienta została przeprojektowana w dedykowany boczny pasek nawigacyjny z czytelniejszym zestawem przycisków (lista użytkowników, czat, udostępnione notatki, minutnik, ustawienia i inne), wskaźniki powiadomień i plakietka z liczbą uczestników na przycisku listy użytkowników.
Oprócz tego nowa Galeria aplikacji zawiera aplikacje takie jak Ankiety, Pokoje grupowe, Timer i Podpisy audio – a także wtyczki. Często używane aplikacje można przypiąć, a przypięte aplikacje są utrwalane i buforowane między sesjami. Ostatnio dodane aplikacje można wyróżnić „nową” wstążką. Galerię można przeszukiwać, przełączać pomiędzy widokami listy i siatki (wybór jest zapamiętywany, a ustawienia domyślne urządzeń mobilnych to widok listy), a przypiętymi aplikacjami można zarządzać bezpośrednio z galerii.
Liczba aplikacji, które można przypiąć, jest kontrolowana przez public.app.appsGallery.maxPinnedApps (domyślnie 3), a to, które aplikacje wyświetlają „nową” etykietę, jest kontrolowane przez public.sidebarNavigation.appsToLabelAsNew w settings.yml. Które wbudowane przyciski pojawiają się na pasku bocznym, w jakiej sekcji i w jakiej kolejności steruje public.sidebarNavigation.buttons (zobacz zmiany w ustawieniach klienta poniżej). Nawigację na pasku bocznym można ukryć dla każdego użytkownika za pomocą parametru łączenia userdata-bbb_hide_sidebar_navigation.
Przeszukaj listę użytkowników
Moderatorzy i przeglądający mogą teraz przeszukiwać listę użytkowników w czasie rzeczywistym. Wyszukiwanie obsługuje dopasowywanie pełnotekstowe i odwrotne, uwzględnia w wynikach bieżącego użytkownika, a także filtruje sekcje podniesione ręce i gość oczekujący. Można go przełączać za pomocą public.userList.searchBar.enabled (domyślnie true), a rozmiar strony listy użytkowników można konfigurować za pomocą public.layout.usersPerUserListPage (domyślnie 50).
Przeprojektowany timer
Timer otrzymał nowy wygląd i ulepszone możliwości wprowadzania danych, w tym ustawienia wstępne i przyciski szybkiego dodawania. Dostępne wartości można konfigurować w settings.yml (public.timer.presets, public.timer.quickAddButtons, public.timer.maxHours).
Przeprojektowany panel zarządzania gośćmi
Zarządzanie gośćmi odbywa się teraz w dedykowanym panelu zintegrowanym z listą użytkowników. Moderatorzy zatwierdzający lub odrzucający gości w panelu oczekujących mogą skorzystać z nowej opcji „Zapamiętaj wybór”, aby zastosować tę samą decyzję do kolejnych próśb o dołączenie. Dane wejściowe służące do wysyłania wiadomości do poczekalni zapewniają teraz wizualną informację o stanie wysłania, dzięki czemu moderatorzy mogą stwierdzić, że wiadomość została dostarczona.
Przeprojektowane uprawnienia (blokada przeglądających) modalne
Modal „Zablokuj przeglądających” / uprawnienia został przeprojektowany z układ z zakładkami, a przełączniki zostały zastąpione polami wyboru, aby akcja „ograniczania” była bardziej przejrzysta. Modal ostrzega teraz o niezapisanych zmianach przed zamknięciem. Ujawnia także nowe zasady dotyczące prezenterów opisane w Prośba o prezentację.
Przegląd układu mobilnego
Doświadczenie mobilne przeszło gruntowną modernizację. Kamery internetowe na urządzeniach mobilnych są teraz podzielone na strony, umożliwiają poruszanie się między stronami za pomocą gestów przesuwania i wskaźnika kropek, a domyślna siatka kamer mobilnych została zredukowana do 6 widocznych kamer (public.kurento.pagination.mobileGridSizes). Na pasku nawigacyjnym znajdują się okrągłe przyciski z wyrównanym przełącznikiem paska bocznego, pasek akcji został zmniejszony dzięki ujednoliconej kontroli dźwięku, a menu opcji czatu i spotkań są wyświetlane w formie kompaktowych okienek wyskakujących. Okna dialogowe, takie jak modal żądania wyłączenia wyciszenia, zostały dostosowane do małych ekranów. W telefonach w orientacji poziomej kamery i prezentacja są ułożone obok siebie.
Automatyczny motyw jasny/ciemny
Klient stosuje teraz preferencje jasnego/ciemnego systemu operacyjnego (prefers-color-scheme) jako motyw początkowy i kontynuuje podążanie za nim, dopóki użytkownik nie wybrał motywu ręcznie. Przełącznik „Trybu ciemnego” dla każdego użytkownika i parametr łączenia userdata-bbb_prefer_dark_theme zawsze mają pierwszeństwo przed wykrytą kompozycją systemu. Zachowaniem steruje public.app.darkTheme.autoDetectFromSystem (domyślnie true).
Dedykowana zakładka ustawień audio
Ustawienia audio przeniesione do dedykowanej zakładki Audio w trybie Ustawienia, gdzie każdy użytkownik wybiera sposób przetwarzania sygnału z jego mikrofonu przed wysłaniem go do innych uczestników:
— Zaawansowane filtrowanie – opcjonalny procesor dźwięku oparty na technologii WASM, który działa na strumieniu mikrofonu, izolując głos osoby mówiącej i eliminując szumy tła. Dostępne są dwa wymienne backendy, wybrane przez administratora za pomocą public.media.audio.audioWasmProcessing.provider: bbba (domyślny) i workadventureDtln (tłumienie szumów DTLN używane przez WorkAdventure). Domyślnie jest wyłączona i musi zostać udostępniona przez administratora; zobacz Zaawansowane filtrowanie (przetwarzanie dźwięku WASM), aby uzyskać szczegółowe informacje na temat konfiguracji.
- Filtrowanie standardowe (domyślne) - wbudowane filtry przeglądarki: automatyczna kontrola wzmocnienia, eliminacja echa i tłumienie szumów.
- Oryginalny dźwięk - w ogóle bez przetwarzania; przesyłany jest surowy sygnał mikrofonu. Idealny do dzielenia się muzyką, śpiewem lub instrumentami.
Trybem wybranym dla nowego użytkownika steruje public.app.defaultSettings.audio.processingMode (domyślnie standard); jeśli jest ustawiony na advanced, podczas gdy przetwarzanie WASM nie jest obsługiwane przez przeglądarkę lub jest wyłączone po stronie serwera, klient powraca do standard. Ograniczenia na poziomie przeglądarki stosowane w trybie standardowym można konfigurować w public.media.audio.microphoneConstraints.
Powiadomienie o nieprawidłowym mikrofonie dla napisów na żywo
Gdy włączone są napisy na żywo w przeglądarce (WebSpeech) i użytkownik trzyma głos, ale przez krótką chwilę nie jest wykonywana transkrypcja, BigBlueButton wyświetla teraz toast sugerujący, że wybrano niewłaściwy mikrofon lub otoczenie jest zbyt hałaśliwe. Alert może opcjonalnie zawierać link do artykułu w bazie wiedzy i można go konfigurować za pomocą public.app.audioCaptions.microphoneAlert w settings.yml.
Tablica: przewiń, aby przesunąć, Ctrl+przewiń, aby powiększyć
Przesunięcie kółka myszy nad tablicą powoduje teraz przesuwanie prezentacji, a przytrzymanie Ctrl (Cmd na macOS) podczas przewijania powoduje powiększanie i pomniejszanie – pasując do modelu nawigacji większości narzędzi projektowych.
Można to skonfigurować: ustaw public.whiteboard.wheelZoomRequiresCtrl na false, aby przywrócić zachowanie BigBlueButton 3.0, gdzie koło powiększa się bezpośrednio i nie jest używany żaden klawisz modyfikujący.
Zaręczyny
Prośba o przedstawienie
Widzowie mogą teraz aktywnie poprosić o rolę prezentera, zamiast czekać, aż moderator ją przydzieli. Gdy widz poprosi o prezentację, moderatorzy zobaczą tę prośbę i będą mogli ją zatwierdzić lub odrzucić; przeglądarka żądająca widzi stan oczekiwania i powiadomienie, jeśli żądanie zostanie odrzucone.
To zachowanie jest regulowane przez nową politykę prezentera, którą można skonfigurować dla każdego spotkania za pomocą parametru tworzenia lockSettingsPresenterPolicy i domyślnego ustawienia serwera lockSettingsPresenterPolicy we właściwościach bbb-web. Akceptowane wartości to:
moderatorOnly- tylko moderatorzy mogą przypisać prezentera.requireApproval(domyślnie) - widzowie mogą poprosić o prezentację, a moderator musi ją zatwierdzić.freeForAll- widzowie mogą przejąć rolę prezentera bez zgody.
Przypięte wiadomości na czacie
Moderatorzy mogą teraz przypiąć wiadomość na czacie, aby była dobrze widoczna dla wszystkich uczestników spotkania. Przypinanie jest widoczne na pasku narzędzi wiadomości na czacie (nowa opcja pin w public.chat.toolbar) i można je wyłączyć podczas każdego spotkania, ustawiając wartość pinChatMessage wynoszącą disabledFeatures.
Zapytaj o zgodę przed wyłączeniem wyciszenia
Kiedy allowModsToUnmuteUsers jest włączone, BigBlueButton 4.0 może opcjonalnie zapytać uczestnika o zgodę, zanim moderator wyłączy wyciszenie. Gdy nowa opcja requireUserConsentBeforeUnmuting jest ustawiona na true, zamiast bezpośredniego wyłączania wyciszenia mikrofonu wyświetlane jest użytkownikowi okno dialogowe. Wartość domyślna (false) zachowuje starsze zachowanie. Można to ustawić dla całego serwera we właściwościach bbb-web lub dla każdego spotkania w ramach wywołania create.
Tryb wielofunkcyjny (pomocniczy pasek boczny)
Nowy Tryb wielofunkcyjny dodaje dodatkowy panel zawartości paska bocznego, umożliwiając otwarcie drugiego panelu obok głównego (na przykład czatu i listy użytkowników w tym samym czasie). Jest domyślnie wyłączona i włączona za pomocą public.multiFunctionalMode.enabled w settings.yml i można ją wyłączyć podczas każdego spotkania za pomocą wartości multiFunctionalMode równej disabledFeatures.
Większe wiadomości czatu zawierające tylko emoji (jumbomoji)
Wiadomość na czacie zawierająca tylko emoji (maksymalnie trzy emoji, białe znaki są ignorowane) jest teraz renderowana z większym rozmiarem czcionki — pasującym do zachowania „jumbomoji” znanego z popularnych komunikatorów. Wiadomości z towarzyszącym tekstem zachowują normalny rozmiar.
Panel szkoleniowy dla pokojów podgrup
Panel edukacyjny nie jest już wyłączony w pokojach podgrup: każda przerwa ma swój własny pulpit nawigacyjny, śledzący aktywność w taki sam sposób, jak robi to spotkanie nadrzędne (odziedziczony disabledFeatures=learningDashboard nadal go wyłącza). Dane panelu kontrolnego podgrupy są również przechowywane do zakończenia spotkania nadrzędnego — poprzednio porządkowanie było zakotwiczone na końcu podgrupy — dzięki czemu instruktorzy mogą przeglądać aktywność podgrupy tak długo, jak działa główny pokój (plus learningDashboardCleanupDelayInMinutes).
Za kulisami
Zmiana architektury klienta i migracja TypeScriptu
Kontynuowano migrację interfejsu klienta do TypeScript, a duża część paska nawigacji, paska bocznego i paska akcji została przebudowana. Stare menu rozwijane przycisków akcji zostało zastąpione nowym komponentem Obszar multimediów na pasku akcji i wprowadzono nową bibliotekę ikon.
Obsługa użytkowników botów
Klient ma teraz pierwszorzędną obsługę dla użytkowników botów (w połączeniu z bot=true). Boty są wykluczone z układu siatki i interfejsu użytkownika umożliwiającego współdzielenie ekranu, mogą otrzymać dedykowaną etykietę listy użytkowników i pominąć przekierowanie adresu URL wylogowania po zakończeniu spotkania.
Komunikaty serwera umiędzynarodowione na interfejsie
Ciągi znaków, które wcześniej były emitowane z serwera (Akka) jako stałe w języku angielskim — na przykład niektóre wiadomości czatu/powiadomień — są teraz konwertowane na klucze i18n na interfejsie użytkownika, co poprawia zasięg lokalizacji.
Media
LiveKit to domyślna platforma multimediów
BigBlueButton 4.0 wykorzystuje LiveKit jako domyślną platformę multimedialną do obsługi dźwięku, obrazu z kamery i udostępniania ekranu. Poprzedni stos mediasoup/bbb-webrtc-sfu (oraz FreeSWITCH dla audio) pozostaje zainstalowany i w pełni obsługiwany jako alternatywny most . Dokładny przegląd tej inicjatywy można znaleźć w wydanie 21059.
Pakiet bbb-livekit (livekit-server i livekit-sip) jest instalowany domyślnie, a moduł LiveKit w bbb-webrtc-sfu jest włączony od razu po wyjęciu z pudełka.
W przypadku korzystania z BigBlueButton za pośrednictwem konfiguracji klastra proxy
, ustaw adres URL punktu końcowego LiveKit w pliku
public.media.livekit.url bbb-html5.yml. Aby uzyskać szczegółowe informacje, zobacz
dokumentację serwera proxy klastra.
Zdecydowanie zalecamy skonfigurowanie filtrowania interfejsu sieciowego w LiveKit. Chociaż jest to opcjonalne, przyspiesza to czas negocjacji i rozwiązuje problem z najnowszymi wersjami LiveKit, który może powodować skoki wydajności procesora, jeśli nie ma włączonego filtrowania. Aby skonfigurować filtrowanie interfejsów sieciowych:
- Zbierz odpowiednie nazwy interfejsów sieciowych, które będą używane w komunikacji medialnej.
W przypadku większości konfiguracji wystarczy domyślny interfejs sieciowy. Zobacz polecenie
route, aby je znaleźć (Destination: default). Jeśli potrzebne są inne interfejsy sieciowe, należy je zanotować w . - Ustaw w
/etc/bigbluebutton/livekit.yaml:
rtc:
interfaces:
includes:
- <network_interface_name_1>
- <any_other_network_interface_name>
- Uruchom ponownie serwer livekit:
$ sudo systemctl restart livekit-server
Każdy typ multimediów ma domyślnie livekit i można go zamiast tego wskazać na starszy stos
, na spotkanie lub na całym serwerze:
- Na spotkanie: ustaw dowolne z poniższych spotkań Parametry
/create audioBridge=bbb-webrtc-sfu(lubfreeswitch)cameraBridge=bbb-webrtc-sfuscreenShareBridge=bbb-webrtc-sfu- Na całym serwerze: ustaw dowolną z następujących właściwości w
/etc/bigbluebutton/bbb-web.properties audioBridge=bbb-webrtc-sfucameraBridge=bbb-webrtc-sfuscreenShareBridge=bbb-webrtc-sfu
Te parametry nie muszą być ustawione jednocześnie. Starszą platformę można na przykład wykorzystać
tylko do dźwięku, zachowując LiveKit do udostępniania kamery i ekranu
, ustawiając tylko audioBridge=bbb-webrtc-sfu.
Od wersji BigBlueButton v3.0.7 nagrywanie jest domyślnie włączone dla sesji LiveKit
za pośrednictwem aplikacji bbb-webrtc-recorder. Jeśli livekit/egress był wcześniej zainstalowany na serwerze
, wszelkie kroki wykonane w celu jego włączenia powinny zostać cofnięte. Patrz
poprzednie kroki instalacji.
Podsłuchiwanie spotkania rodziców w pokoju podgrup jest teraz obsługiwane na moście LiveKit, na równi z przepływem transferu FreeSWITCH/mediasoup. Moderator korzystający z akcji nasłuchiwania panelu ucieczki zostaje przełączony na dźwięk ucieczki — wyciszenie/wyłączenie wyciszenia dotyczy ucieczki podczas słuchania — i otrzymuje ciągły toast z nazwą pokoju z przyciskiem „Wróć do głównego pokoju”. Pod maską jest on zbudowany w oparciu o nowy model tokena LiveKit oparty na członkostwie, który również zapewnia automatyczne odświeżanie tokena w przypadku długotrwałych sesji.
Zachęcamy użytkowników do przesyłania opinii za pośrednictwem naszego narzędzia do śledzenia problemów GitHub lub list mailingowych .
Ulepszone komponenty
Pod maską BigBlueButton 4.0 instaluje się na Ubuntu 24.04 64-bit, a następujące kluczowe komponenty zostały zaktualizowane
- Java 21 (OpenJDK)
- Grails 8.0.0
- Gradle 9.8.0
- Groovy 5.1.3
- Spring Framework 7.0.9
- Spring Boot 4.1.1
- Tomcat (wbudowany) 11.0.26
Szczegółowe informacje na temat nowości w BigBlueButton 4.0 można znaleźć w uwagach do wydania.
Najnowsze wydania:
- 4.0.0
- 4.0.0-rc.5
- 4.0.0-rc.4
- 4.0.0-rc.3
- 4.0.0-rc.2
- 4.0.0-rc.1
- 4.0.0-beta.5
- 4.0.0-beta.4
- 4.0.0-beta.3
- 3.1.0-beta.2
- 3.1.0-beta.1
Inne istotne zmiany
Środowisko wykonawcze Node.js 24
BigBlueButton 4.0 uruchamia komponenty Node.js (kompilacja bbb-html5, bbb-graphql-actions, bbb-shared-notes-server, bbb-export-annotations, bbb-webhooks, bbb-webrtc-sfu, bbb-transcription-controller) na Node.js 24, linia Active LTS utrzymywana do kwietnia 2028. bbb-install.sh instaluje go z NodeSource, a pakiety deklarują zależność od nodejs (>= 24) (<< 25).
Nagłówki odpowiedzi bezpieczeństwa z bbb-web
Wraz z przejściem do Grails 8, bbb-web dodaje cztery nagłówki zabezpieczeń przeglądarki do każdej wysyłanej odpowiedzi:
X-Frame-Options: SAMEORIGINX-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-originX-XSS-Protection: 0
Dołączenie do spotkania jest nie ma to wpływu, w tym z LMS lub jakiejkolwiek innej witryny, która osadza BigBlueButton w ramce: połączenie join odpowiada przekierowaniem, a klient, slajdy i nagrania są obsługiwane przez nginx, który nie dodaje tych nagłówków. Zmiany polegają na tym, że strona renderowana przez sam bbb-web, np. odpowiedź API, nie jest już wyświetlana w ramce w innej witrynie.
Aby wyłączyć nagłówek, ustaw jego właściwość enabled na false w /etc/bigbluebutton/bbb-web.properties i zrestartuj bbb-web (sudo systemctl restart bbb-web). Na przykład, aby ponownie zezwolić własnym stronom bbb-web na ramki w innych witrynach:
grails.security.headers.frame-options.enabled=false
Pozostałe trzy nagłówki są kontrolowane przez grails.security.headers.content-type-options.enabled, grails.security.headers.referrer-policy.enabled i grails.security.headers.xss-protection.enabled. grails.security.headers.enabled=false wyłącza wszystkie cztery.
Inne zmiany odpowiedzi bbb-web w Grails 8
- Żądanie adresu URL pod
/bigbluebutton/, którego nie obsługuje żadne wywołanie API, nadal otrzymuje odpowiedź 404, ale treść to JSON zamiast XML Wyprodukowano dokument<Map>Grails 7. — bez konfiguracji CORS (domyślnej; konfiguracja serwera proxy klastra ją konfiguruje), na żądanie wstępnej inspekcji między źródłami odpowiada się z liczbą 200 i bez nagłówkówAccess-Control-*zamiast 403, a odpowiedzi nie zawierają jużVary: Origin. Żadna wersja nie zapewnia dostępu między źródłami. — odpowiedź na żądanie zawierające ponad 10000 parametrów odpowiada stronie HTTP 500 przez wbudowany Tomcat; Tomcat 10.1 zignorował parametry przekraczające limit. — wysyłany bezpośrednio do portu 8090 (wcześniej nginx odpowiada 413 dla treści powyżej 1 MB), formularz POST większy niż limit Tomcat 2 MB odpowiada stroną HTTP 500 zamiast błędu API. - Jeśli nadpisanie
systemdbbb-web.servicezastępujeExecStart, zaktualizuj je, aby uruchamiało się za pomocą-cp ., tak jak robi to jednostka w pakiecie. Przy poprzedniej ścieżce klasy (-cp WEB-INF/lib/*:/:WEB-INF/classes/:.) bbb-web na Grails 8 nigdy się nie kończy, a nginx odpowiada 502.
Promowane udostępnione notatki BlockNote jako domyślne
W BigBlueButton 4.0.0-beta.4 zastąpiliśmy domyślny wybór komponentu Shared Notes z bbb-etherpad (tj. Etherpad) na bbb-shared-notes-server (tj. BlockNote). bbb-shared-notes-server to pakiet wymagany, instalowany domyślnie.
Etherpad (pakiety bbb-etherpad i bbb-pads) nie jest częścią domyślnej instalacji BigBlueButton 4.0, a jego obsługa została usunięta w cyklu życia wersji 4.0; zobacz Usunięty Etherpad.
Usunięto Etherpad
BigBlueButton 4.0 całkowicie usuwa Etherpad. Udostępnione notatki zawsze używają BlockNote (bbb-shared-notes-server).
- Pakiety
bbb-etherpadibbb-padsnie są już budowane ani publikowane. - Aktualizacja serwera wersji wstępnej 4.0 (beta lub kandydat do wydania), na którym je zainstalowano, usuwa oba pakiety i czyści to, co po nich pozostawiono: pliki Etherpad i wygenerowany klucz API, użytkownika systemu
etherpad, zastąpienia/etc/bigbluebutton/etherpad.jsoni/etc/bigbluebutton/bbb-pads.json, Wpispublic.padsw/etc/bigbluebutton/bbb-html5.ymloraz pady i autorzy Etherpad zapisane w Redis (klucze zaczynające się odpad:,sessionstorage:,globalAuthor:,token2author:,pad2readonly:,readonly2pad:iueberDB:). Pady przechowywane w Etherpad nie podlegają migracji. - Klucze grupy i sesji Etherpada pozostają w Redis (
groups,group:*,group2sessions:*,author2sessions:*,session:*,mapper2group:*imapper2author:*): te prefiksy są zbyt ogólne, aby bezpiecznie je usunąć w instancji Redis, którą mogą współużytkować inne aplikacje. Nic już ich nie czyta; usuń je ręcznie, jeśli zajdzie taka potrzeba. — użyjapt full-upgrade(lubdist-upgrade).apt upgradenigdy nie usuwa pakietów, a ponieważ pakietbigbluebuttonzależy od dokładnej wersji każdego pakietu BigBlueButton, wstrzymuje całą aktualizację BigBlueButton, a nie tylko usunięcie Etherpad. Aby usunąć Etherpad przed aktualizacją, uruchom$ sudo apt purge bbb-etherpad bbb-pads. - Parametr
sharedNotesEditor/createi właściwośćsharedNotesEditorwbbb-web.propertiessą ignorowane; każde spotkanie otrzymuje udostępnione notatki BlockNote. Jeśli dostosowałeś/usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń jego wpis<property name="sharedNotesEditor" .../>; zobacz zmiany właściwości bbb-web. - Usunięto części API GraphQL przeznaczone wyłącznie dla Etherpada: pole
sharedNotesEditorzsharedNotes, poleisEtherpadSharedNoteszmeeting.componentsFlags, polesharedNotesSessionzuser_current, TypysharedNotes_sessionisharedNotes_diff(wraz z ich zapytaniami i subskrypcjami) oraz mutacjasharedNotesCreateSession. Wtyczki lub integracje, które nadal żądają którejkolwiek z nich, otrzymują błąd sprawdzania poprawności GraphQL i powinny je usunąć. - Skrypty nagrywania nie odczytują już
notes_endpoint(punktu końcowego eksportu Etherpad) zbigbluebutton.yml, aetherpadnie jest już prawidłowym wpisem wnotes_formats. Usuń oba z/etc/bigbluebutton/recording/recording.yml, jeśli je tam ustawiłeś. Notatki są eksportowane z plikubn_notes_endpoint, który obecnie ma wartość domyślnąhttp://127.0.0.1:8787/loopback/api/documents. Jeśli zastąpiszbn_notes_endpointwrecording.yml, zmień jego ścieżkę na/loopback/api/documents. Poprzednia ścieżka/api/documentsnie odpowiada już na skrypty nagrywania, więc nagrania będą archiwizowane bez udostępnionych notatek. - Nagrania wykonane za pomocą Etherpada zachowują notatki, które już zarchiwizowały, także wtedy, gdy zostały odbudowane za pomocą
bbb-record --rebuild(przebudowa powoduje ponowne przetworzenie zarchiwizowanych plików surowych i nie powoduje ich ponownej archiwizacji). Jedynie ponowne uruchomienie kroku archiwizacji dla takiego nagrania nie spowodowałoby pobrania jego notatek: krok rejestruje ostrzeżenie, zapisuje znaczniknotes/export_failedi kontynuuje bez udostępnionych notatek.
Nowy opcjonalny pakiet: bbb-coturn
BigBlueButton 4.0 dodaje bbb-coturn, kompilację BigBlueButton coturn Serwer TURN/STUN. Ubuntu 24.04 dostarcza tylko wersję 4.6.1; Pakiety bbb-coturn powracają do wersji 4.16.0.
Jest to pakiet opcjonalny — nie jest zależny od metapakietu bigbluebutton i nie jest instalowany domyślnie. Zainstaluj go za pomocą
$ sudo apt install bbb-coturn
bbb-coturn jest zamiennikiem pakietu distro coturn: deklaruje Provides/Conflicts/Replaces na coturn (więc apt zamienia jedno na drugie) i zachowuje te same ścieżki — /usr/bin/turnserver, plik konfiguracyjny /etc/turnserver.conf i jednostkę systemową coturn.service. Istniejące dodatki systemowe w ramach /etc/systemd/system/coturn.service.d/ nadal obowiązują.
W przeciwieństwie do pakietu dystrybucyjnego, bbb-coturn nie włącza ani nie uruchamia usługi podczas instalacji. Dostarczony /etc/turnserver.conf jest standardowym przykładem źródła zasilania z komentarzem dla każdej opcji, a domyślnym ustawieniem Coturn w tym stanie jest dostęp anonimowy — uruchomienie go przed zapisaniem rzeczywistej konfiguracji ujawniłoby otwarty przekaźnik. Po skonfigurowaniu /etc/turnserver.conf uruchom go z
$ sudo systemctl enable --now coturn
Zobacz Włącz konfigurację serwera, aby uzyskać pełną konfigurację.
Nowy opcjonalny pakiet: bbb-playback-presentation-legacy
Odtwarzacze nagrań wykonanych za pomocą BigBlueButton 0.81 i 0.9 (serwowane pod /playback/presentation/0.81/ i /playback/presentation/0.9.0/) przeniesiono z bbb-playback-presentation do nowego pakietu bbb-playback-presentation-legacy wraz z przekierowaniem z niewersjonowanego łącza /playback/presentation/playback.html. Nagrania wykonane w dowolnej aktualnej wersji wykorzystują odtwarzacz 2.3 z bbb-playback, więc domyślna instalacja nie zawiera już starych odtwarzaczy, a linki do nich odpowiadają 404.
Jest to pakiet opcjonalny, a nie zależność od metapakietu bigbluebutton. Jeśli przeprowadziłeś migrację nagrań z tych wersji i nadal chcesz je odtwarzać, zainstaluj je za pomocą
$ sudo apt install bbb-playback-presentation-legacy
Zobacz Odtwórz nagrania wykonane za pomocą BigBlueButton 0.81 lub 0.9 dla szczegóły.
Nowe narzędzie administracyjne: bbbctl
Pakiet bbb-config jest teraz dostarczany bbbctl (v0.5.1), a utrzymywane przez społeczność narzędzie wiersza poleceń autorstwa @defnull do interakcji z serwerem BigBlueButton z poziomu powłoki. Zainstalowany jako /usr/bin/bbbctl, komunikuje się z własnym interfejsem API serwera i umożliwia administratorom tworzenie list, sprawdzanie i kończenie spotkań oraz pracę z nagraniami bez ręcznego tworzenia podpisanych wywołań API. Dziękuję za rozwinięcie tego, defnull!
Wersja wstępna wtyczki SDK 1.0
Klient HTML5 używa teraz bigbluebutton-html-plugin-sdk 1.0.0-beta.3, a html5PluginSdkVersion ma domyślnie tę samą wartość. Jest to istotna zmiana w przypadku wtyczek: przedpremierowy zestaw SDK spełnia tylko zakres requiredSdkVersion, który nazywa się przedpremierową wersją 1.0.0, więc manifesty deklarujące zakresy 0.x, takie jak ^0.1.26 lub ~0.0.77, są odrzucane, a każde spotkanie rejestruje błąd ładowania wtyczki w bbb-apps-akka.
Autorzy wtyczki powinni publikować manifesty zawierające nazwę wersji wstępnej, na przykład ^1.0.0-beta.1, która akceptuje także wersję końcową 1.0.0 i późniejsze 1.x. Aby zachować ładowanie jednego manifestu w wersjach wstępnych 4.0 do 4.0.0-rc.4, które obsługują pakiet SDK 0.1.x, dodaj zakres 0.1.x: ^0.1.5 || ^1.0.0-beta.1. Zaktualizuj manifesty wtyczek, które wdrażasz przed aktualizacją lub razem z aktualizacją. Zobacz Zgodność wersji SDK.
Jeśli ustawisz html5PluginSdkVersion w /etc/bigbluebutton/bbb-web.properties, usuń go lub zaktualizuj do 1.0.0-beta.3. Zastąpienie powoduje, że manifesty są sprawdzane w oparciu o wersję zestawu SDK inną niż ta, którą faktycznie uruchamia klient.
Usuwanie przestarzałych opcji układu
System układu został uproszczony, aby używać jednego, ujednoliconego układu. Usunięto następujące układy: CUSTOM_LAYOUT, SMART_LAYOUT, PRESENTATION_FOCUS i VIDEO_FOCUS. Domyślny układ to teraz UNIFIED_LAYOUT.
Usunięto także moduł wyboru układu i przycisk układu push. Ustawienia showPushLayoutButton, showPushLayoutToggle i enableDeprecatedLayoutSelection nie są już dostępne.
Opcja layouts została usunięta z disabledFeatures.
Usunięto punkt końcowy REST
Przestarzały punkt końcowy REST /api/rest/clientSettings został usunięty. Ustawienia klienta są teraz obsługiwane przez stos GraphQL. Należy zaktualizować każdą integrację, która pobrała ustawienia klienta z tego punktu końcowego.
Inna usunięta konfiguracja
public.stats.logzostała usunięta i zastąpiona przezpublic.stats.logMediaStats(patrz Zmiany ustawień klienta (ustawienia.yml)).captionsnie jest już prawidłową wartościądisabledFeatures. Nie przyniosło to żadnego efektu od wersji BBB 3.0, kiedy wpisywane podpisy zostały przeniesione do wtyczki. UżyjliveTranscription, aby wyłączyć automatyczną transkrypcję.
Zmiany w pliku events.xml
zmiany właściwości bbb-web
Usunięto
allowDuplicateExtUseridnie jest już rozpoznawany. Zamiast tego użyjmaxUserConcurrentAccesses.lockSettingsDisableNotenie jest już rozpoznawany; zamiast tego użyjlockSettingsDisableNotes. W wersji BBB 2.5 zmieniono nazwę pojedynczej właściwości.clientLogoutTimerInMinuteszostał usunięty. Nigdy nie był używany przez klienta HTML5; jego ostatni czytnik, punkt końcowy/enter, został usunięty przed wersją BBB 4.0. — Jeśli dostosowałeś/usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń także wpis<property name="clientLogoutTimerInMinutes" .../>— w przeciwnym razie bbb-web nie uruchomi się (NotWritablePropertyException). Ostrzeżenie o wycofanej właściwościbbb-conf --checkskanuje tylko/etc/bigbluebutton/bbb-web.properties, a nieresources.xml.enteredUsersTimeoutzostał usunięty. Ustawia czas, przez który bbb-web śledzi użytkowników, którzy dzwonili do punktu końcowego/enterbez dołączania się; ten punkt końcowy został usunięty w BBB 3.0, więc od tego czasu nic nie było śledzone. Pozostała wartość w/etc/bigbluebutton/bbb-web.propertiesjest ignorowana, abbb-conf --checkumieszcza ją na liście do usunięcia.- Jeśli dostosowałeś
/usr/share/bbb-web/WEB-INF/classes/spring/resources.xmlna miejscu, usuń także komponent beanenteredUserCleanupTimerTaskoraz wpisy<property name="enteredUserCleanupTimerTask" .../>i<property name="enteredUsersTimeout" .../>- w przeciwnym razie bbb-web nie uruchomi się. - Usunięto
sharedNotesEditor: BlockNote jest jedynym edytorem współdzielonych notatek (po raz pierwszy stał się domyślnym w wersji 4.0.0-beta.4; zobacz Promowane wspólne notatki BlockNote jako domyślne i Usunięty Etherpad). Pozostała wartość w/etc/bigbluebutton/bbb-web.propertiesjest ignorowana. — Jeśli dostosowałeś/usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń także wpis<property name="sharedNotesEditor" .../>— w przeciwnym razie bbb-web nie uruchomi się (NotWritablePropertyException).
Wartość zmieniona
- Wartość domyślna
defaultMeetingLayoutzmieniona zCUSTOM_LAYOUTnaUNIFIED_LAYOUT. Akceptowane wartości to terazUNIFIED_LAYOUT(domyślnie) oraz opcje hybrydowe/niszoweCAMERAS_ONLY,PARTICIPANTS_AND_CHAT_ONLY,PRESENTATION_ONLYiMEDIA_ONLY. Poprzednie wartościCUSTOM_LAYOUT,SMART_LAYOUT,PRESENTATION_FOCUSiVIDEO_FOCUSnie są już akceptowane. html5PluginSdkVersionzmieniono z0.1.17na1.0.0-beta.3. Wtyczki, którychrequiredSdkVersionobejmuje tylko pakiet SDK0.x, nie są już ładowane; zobacz Wstępne wydanie wtyczki SDK 1.0.disabledFeaturesakceptuje nową wartość:pinChatMessage(obok istniejących opcji związanych z czatem). —disabledFeaturesnie wyświetla jużcaptionsjako opcji. Nie przyniosło to żadnego efektu od wersji BBB 3.0, kiedy wpisywane podpisy zostały przeniesione do wtyczki. Serwer, który nadal ustawia tę wartość wbbb-web.properties, nadal działa: wartość jest akceptowana i ignorowana. UżyjliveTranscription, aby wyłączyć automatyczną transkrypcję.cameraBridge,screenShareBridgeiaudioBridgezmieniono zbbb-webrtc-sfunalivekit(zobacz LiveKit to domyślna platforma multimediów).
Dodano
- Dodano
lockSettingsPresenterPolicy(domyślnierequireApproval). Kontroluje, czy widzowie mogą poprosić o rolę prezentera; zobacz Prośba o przedstawienie. - dodano
requireUserConsentBeforeUnmuting(domyślniefalse). Dotyczy tylko przypadkuallowModsToUnmuteUsers=true; gdytrue, pojawia się okno dialogowe zgody, zanim moderator będzie mógł wyłączyć wyciszenie uczestnika. - dodano
maskTagThreshold(domyślnie0= wyłączone). Po ustawieniuNkażdy slajd, którego wygenerowany plik SVG zawieraNlub więcej znaczników<mask>, podczas konwersji powraca do rasteryzacji pełnego slajdu; zobacz Rasteryzuj slajdy, których SVG zawiera znaczniki maski. - dodano
filterTagThreshold(domyślnie1;0= wyłączone). Slajdy, których wygenerowany plik SVG zawieraNlub więcej znaczników<filter>(którepdftocairoemituje dla miękkich masek) są renderowane zarówno za pomocąpdftocairo, jak ipdftoppmi są rasteryzowane tylko wtedy, gdy oba renderowania zauważalnie się różnią. Naprawia to slajdy, które pokazywały się puste lub z brakującymi obrazami (#23953); zobacz Weryfikuj slajdy za pomocą miękkich masek.
Zmiany ustawień klienta (settings.yml)
Te zmiany dotyczą pliku konfiguracyjnego klienta (/etc/bigbluebutton/bbb-html5.yml, zastępując ustawienia domyślne w settings.yml).
Dodano
public.kurento.pagination.gridEnabled(domyślnietrue) - czy przy zminimalizowanej prezentacji wyświetlana jest siatka awatarów bez kamery („siatka kamery internetowej”). Siatkę można również wyłączyć podczas spotkania za pomocądisabledFeatures=webcamGrid.public.multiFunctionalMode.enabled(domyślniefalse) - włącza dodatkowy/podwójny panel zawartości paska bocznego.public.userList.searchBar.enabled(domyślnietrue) - włącza pole wyszukiwania listy użytkowników.public.app.appsGallery.maxPinnedApps(domyślnie3) - maksymalna liczba aplikacji, które użytkownik może przypiąć w Galerii aplikacji.public.app.remainingTimeThresholdInMinutes(domyślnie6) - ile minut przed końcem spotkania z ustawionymdurationpojawia się baner pozostałego czasu. Wcześniej był to zakodowany na stałe czas 30 minut; ustaw go na30, aby przywrócić to zachowanie. Zobacz Konfiguruj, kiedy wyświetlany jest baner pozostałego czasu.public.sidebarNavigation.appsToLabelAsNew(domyślnie[]) - aplikacje do wyróżnienia "nową" etykietą (np.poll,breakoutroom,timer,audio-captions).public.media.audio.audioWasmProcessing- blok konfiguracyjny dla opcji przetwarzania dźwięku "Advanced Filtering" (WASM);providerwybiera backend (domyślnybbbalubworkadventureDtln), a dostawca może zastąpić wartości ustawione wconstraints; zobacz Karta Dedykowanych ustawień audio.public.app.defaultSettings.audio.processingMode(domyślnystandard) - który z trzech trybów przetwarzania dźwięku (advanced,standard,original) jest wstępnie wybrany dla nowego użytkownika w Ustawieniach > Dźwięk.advancedpowraca dostandard, gdy przetwarzanie WASM nie jest obsługiwane przez przeglądarkę lub jest wyłączone po stronie serwera.public.app.defaultSettings.application.recordingIndicatorAutoCollapse(domyślniefalse) - zwija wskaźnik nagrywania na pasku nawigacyjnym do przycisku zawierającego tylko ikonę, który ujawnia swoją etykietę po najechaniu kursorem lub zaznaczeniu klawiatury. Użytkownicy mogą to zmienić w Ustawieniach > Aplikacja („Przycisk Zwiń nagrywanie”); telefony i wskaźnik tylko do odczytu nigdy się nie załamują.public.media.audio.microphoneConstraints- ograniczenia audio na poziomie przeglądarki (automatyczna kontrola wzmocnienia, eliminacja echa, tłumienie szumów) stosowane, gdy użytkownik wybierze tryb przetwarzania dźwiękustandard(przeniesione zpublic.app.defaultSettings.application.microphoneConstraints).public.timer.presets,public.timer.quickAddButtons,public.timer.maxHours,public.timer.serverSyncTimeInterval- ustawienia wstępne i zachowanie timera.public.app.breakouts.breakoutRoomMinimum(domyślnie2) - minimalna liczba pokoi podgrup.public.app.breakouts.inheritLockSettingsByDefault(domyślniefalse) - wstępnie sprawdza opcję „Propaguj bieżące ustawienia blokady”, gdy moderator tworzy pokoje podgrup, takie jakcaptureSharedNotesByDefaultisendInvitationToAssignedModeratorsByDefaultdla swoich opcji.public.app.audioCaptions.showInSidebarNavigationipublic.app.audioCaptions.terms- wyświetlaj podpisy w pasku bocznym nawigacji i konfiguruj adresy URL warunków korzystania z usługi według ustawień regionalnych.public.app.darkTheme.autoDetectFromSystem(domyślnytrue) - używa preferencji systemu operacyjnegoprefers-color-schemejako motywu początkowego i kontynuuje podążanie za nim, dopóki użytkownik nie wybrał motywu ręcznie. Przełącznik „Tryb ciemny” dla każdego użytkownika i parametrbbb_prefer_dark_themezawsze mają pierwszeństwo przed wykrytym motywem systemu.public.stats.logMediaStatsipublic.stats.probes- rejestrowanie statystyk WebRTC po stronie klienta.public.layout.showLeaveSessionLabel(domyślniefalse) ipublic.layout.usersPerUserListPage(domyślnie50).public.sidebarNavigation.buttons- kontroluje, które wbudowane przyciski nawigacyjne na pasku bocznym renderują, w jakiej sekcji (top/center/bottom) i w jakiej kolejności. Jest to pełna lista zamienników (pomiń identyfikator, aby ukryć ten przycisk; identyfikatory wprowadzone w przyszłych wersjach wcześniejszych muszą zostać dodane ręcznie). Wartość domyślna:top: [profile, user-list, chat, notes],center: [apps-gallery, pinned-apps],bottom: [audio-captions, learning-dashboard, settings]. —public.app.audioCaptions.microphoneAlert(domyślnieenabled: true) — wyświetla ostrzeżenie, gdy włączone są napisy na żywo w WebSpeech, a użytkownik trzyma podłogę, ale nic nie jest transkrybowane (prawdopodobnie sygnał złego mikrofonu lub hałaśliwego otoczenia). Konfigurowalne za pomocąhelpLink(puste ukrywa łącze),threshold(dB),speakingThreshold(ms),duration(ms;0= ręczne odrzucenie) iinterval(ms).public.plugins[].settings.pin/.isNew— wtyczka może domyślnie przypinać elementy, które wstawia do Galerii aplikacji (pin: trueprzypina wszystkie wstrzyknięte elementy;pin: ["id-a", "id-b"]przypina tylko te identyfikatory; wybory użytkownika przypinania/odpinania są zachowywane i przestrzegane), aisNew: truewyświetla „nową” wstążkę w elemencie galerii wtyczki.public.whiteboard.wheelZoomRequiresCtrl(domyślnietrue) - czy powiększanie prezentacji kółkiem myszy wymaga przytrzymaniaCtrl(Cmdna macOS). Domyślnie przewijanie slajdu odbywa się za pomocą gołego kółka; ustaw nafalsedla zachowania BigBlueButton 3.0, gdy koło powiększa się bezpośrednio. Zobacz Tablica: przewiń, aby przesunąć, Ctrl+przewiń, aby powiększyć.public.media.livekit.sdkLogBridge(domyślnietrue) - przekazuje własne logi klienta livekit przez kliencki rejestrator BigBlueButton, dzięki czemu błędy multimediów na poziomie SDK docierają do zwykłego miejsca docelowego dzienników klienta.public.media.livekit.negotiationProbe(domyślniefalse) - instrumentacja debugowania, która rejestruje czas oczekiwania na ofertę subskrybenta, od otrzymania do wysłania do gniazda. Domyślnie wyłączone; włączaj tylko podczas diagnozowania opóźnienia negocjacji mediów.
Wartość zmieniona
public.chat.toolbarzawiera teraz opcjępin(do przypinania wiadomości czatu). — wartość domyślnapublic.layout.showParticipantsOnLoginzostała zmieniona ztruenafalse. — wartość domyślnapublic.layout.syncCameraDockSizeAndPositionzostała zmieniona zfalsenatrue. — domyślny układ poddefaultSettingszostał przeniesiony zapplication.selectedLayout: 'custom'dolayout.selectedLayout: 'unified'(przy czympushLayoutjest teraz zagnieżdżony podlayout). —public.user.labelzyskał wpisypresenteribot(oba domyślnetrue), a wartość domyślnamoderatorzostała zmieniona zfalsenatrue. — zmieniono domyślne ustawieniapublic.media.audio.defaultFullAudioBridgeipublic.media.audio.defaultListenOnlyBridgezfullaudionalivekit, dostosowując rezerwy klienta do LiveKit jako domyślnej struktury multimediów. (defaultFullAudioBridgezostało zastąpione przez ustawienie tworzenia/właściwościaudioBridge; oba klawisze są oznaczone jako przestarzałe.)public.app.defaultSettings.application.pushToTalkEnabledzmieniono zfalsenatrue- Naciśnij i mów (przytrzymajM, aby pozostać niewyciszonym, dodany w BBB 3.0) jest teraz domyślnie włączony. — Domyślna wartośćpublic.layout.showSessionDetailsOnJoinzostała zmieniona ztruenafalse— okno dialogowe Szczegóły sesji nie jest już otwierane automatycznie podczas dołączania.public.kurento.pagination.mobileGridSizes(moderatoriviewer) zmieniono z14na6w ramach przeglądu układu mobilnego.public.app.showConnectionErrorszawiera teraz nowy kod błędu3007. Klient pokazuje to, gdy bbb-graphql-middleware odmówi subskrypcji, ponieważ połączenie osiągnęłomax_connection_concurrent_subscriptionsi prosi użytkownika o odświeżenie. Usuń3007z listy, aby powrócić do ogólnej obsługi3006. Zobacz Typowe błędy klienta.
Usunięto
public.layout.showPushLayoutButton,public.layout.showPushLayoutToggleipublic.layout.enableDeprecatedLayoutSelection.public.stats.log(zastąpiony przezpublic.stats.logMediaStats).public.app.defaultSettings.application.audioWasmProcessingi skomentowany przykładpublic.app.defaultSettings.application.microphoneConstraints- zastąpione przezpublic.app.defaultSettings.audio.processingModeipublic.media.audio.microphoneConstraints(patrz Zakładka Dedykowane ustawienia audio). — Ustawienia klienta SIP.js/legacy-audio zostały usunięte wraz z mostkiem audio SIP.js teraz, gdy domyślną ścieżką audio jest LiveKit. Podpublic.media:callTransferTimeout,callHangupTimeout,callHangupMaximumRetries,iceGatheringTimeout,audioConnectionTimeout,audioReconnectionDelay,audioReconnectionAttempts,sipjsHackViaWs,sipjsAllowMdns,sip_ws_host,websocketKeepAliveInterval,websocketKeepAliveDebounce,traceSip,sdpSemantics; pluspublic.app.ipv4FallbackDomain. Wszystkie z nich nadal ustawione wbbb-html5.ymlsą teraz dyskretnie ignorowane.public.pads.url(adres URL Etherpada), usunięty razem z Etherpadem. Wcześniejsze wersje wstępne wersji 4.0 zapisywały to wbbb-html5.yml; aktualizacja usuwa wpispublic.padsz tego pliku (patrz Usunięty Etherpad).
Rozwój
Aby uzyskać informacje na temat programowania w BigBlueButton, zobacz konfigurowanie środowiska programistycznego dla wersji 4.0.
Skrypty kompilacji dla pakietu 4.0 (przy użyciu fpm) znajdują się w repozytorium GitHub tutaj.
Wkład
Witamy współpracowników BigBlueButton 4.0! Obecnie najlepszymi sposobami wniesienia wkładu są:
- Pomóż zlokalizować BigBlueButton 4.0 na Projekt Transifex dla BBB 4.0
- Wypróbuj instalację BigBlueButton 4.0 i zobacz, czy zauważysz jakieś problemy. — pomóż przetestować żądanie ściągnięcia wersji 4.0 w swoim środowisku programistycznym.