* feat(layout/observer): Add user preference for dark theme in `LayoutObserver` component.
* feat(docs/administration): Add support for default dark theme preference parameter
* refactor(settings): Remove dark theme setting from LayoutObserver and move it to Settings class.
Refactor styles to update the background color of connection status bars in dark mode. The #connectionBars > div now has a background color of var(--darkreader-neutral-text)
* Translate en.json in ja
100% translated source file: 'en.json'
on 'ja'.
* Translate en.json in ja
100% translated source file: 'en.json'
on 'ja'.
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
This commit refactors the label generation for audio captions in the audio-captions button and captions components. Instead of directly using the intl formatMessage function, the label is now generated using the intlMessages object and the getLocaleName function from the audio-captions service. This change prevents an issue with custom locales.
* fix: Custom styles not applying to loading screen
* fix: Apply custom styles before rendering children
* fix: Use Object.assign instead of spread syntax
* fix: Add cleanup function to clear the timeout and abort the fetch
* fix: Clear the timeout if the fetch completes successfully
* refactor: Remove unused queries file
Fixes race condition happening when multiple plugins that add extensible
area elements are loaded by the client. The issue is caused by the state
update of the extensible area items set by plugins, based on previous
state without using a callback. Replaced direct state updates with the
appropriate callback pattern to ensure consistent state changes.
- Share camera: removes unnecessary check for "connecting" element;
- Send presentation with annotation: Removes check for toast notification after sending the file - doesn't show anymore
- Zoom: bug spotted. test flagged as flaky and issue opened + linked
* Fix: allow CORS requests to graphql API
In cluster setups the Graphql API endpoints are fetched as a CORS
request. We need to allow that.
* Fix: Allow CORS requests to ping endpoint
In cluster setups the ping is sent directly to the BBB server. So it
needs to allow CORS requests for cluster setups.
* Fix: construct relative API path for cluster setups
* Fix: adjust docs for cluster setup
As bbb-html5 client is static, setup instructions for cluster setup have
to be changed accordingly.
* Fix docs: remove superfluous ```yaml
This must have been introduced by accident.
---------
Co-authored-by: Daniel Schreiber <daniel.schreiber@hrz.tu-chemnitz.de>
Closes https://github.com/bigbluebutton/bigbluebutton/issues/21161
As suggested by @danimo the client files for bbb-html5
are not variable/dynamic content and are a better fit for /usr/share
than for /var/bigbluebutton (where they'd also be in the way of
recording files)
Previously, we checked if a presentation existed before inserting it into the database. However, concurrent checks sometimes led to race conditions where the same presentation was inserted twice, causing errors and blocking subsequent page additions. This update removes the existence check and directly attempts to insert the presentation using an "IF NOT EXISTS" clause. This streamlines the process, enhances performance, and prevents ID duplication errors.
Ensure that the GraphQL reconnection—and thus the user's Hasura role update from `bbb_client_not_in_meeting` to `bbb_client`—occurs before the client is informed they've joined (`joined=true`). This prevents a race condition where the client might send GraphQL queries before having the necessary permissions, as only `bbb_client` can perform most queries. By updating the role first, we guarantee the client can successfully execute queries after joining.
GhostScript is incorrectly inferring the orientation of a slide by looking at the rotation of SVG elements such as whiteboard text. This PR forces GhostScript to retain the orientation of each page.