Addresses multiple issues when enabling/disabling PiP dynamically:
1. External API: Replace dead config-overwrite event handler with
interception in executeCommand. This properly manages the intersection
observer and PiP state when pip config changes via overwriteConfig.
2. PiPVideoElement: Fix ref access pattern - access videoRef.current
inside useEffects instead of capturing at render time. The captured
value was null on first render, causing blur/focus listeners to never
be set up when component mounted into a stable conference.
3. useCanvasAvatar: Return streamRef object instead of refs.current.stream
so consumers can access .current inside their effects. The stream is
created in an effect and wasn't available at render time.
4. Add on-mount focus check with loadedmetadata wait to handle PiP enable
while app is in background, ensuring video source is ready before
attempting to enter PiP mode.
Implements Picture-in-Picture functionality for the Electron wrapper to maintain video engagement when users are not actively focused on the conference window. This feature addresses the need to keep users visually connected to the conference even when multitasking.
Key features:
- Automatic PiP mode activation and deactivation based on user interaction
- Displays large video participant's stream or renders their avatar on canvas when video unavailable
- Provides audio/video mute controls via MediaSession API directly in PiP window
- Adds API events (_pip-requested) for Electron wrapper integration
Implementation includes new pip feature module with Redux architecture, canvas-based avatar rendering with custom backgrounds support, and integration with existing mute/unmute logic. Depends on jitsi-meet-electron-sdk#479 for proper user gesture handling in Electron.
* Change toolbar background color from IFrame API #16468 fixed
* fix(toolbar #16468): implement toolbar background color via configOverwrite for web and mobile
* keep toolbarConfig defaults commented in config.js
* add trailing comma to commented toolbarConfig.backgroundColor
* fix: resolve linting errors
* feat(api): add toolbarVisibilityChanged event to IFrame API
* fix lint
In order to use gDM in Electron the flow is somewhat reversed. It starts
from the Electron main process, so we need an API in the external_api
that can trigger the builtin picker. The picker is still necessary.
It's fired when the API is ready, and it signals the embedder that they
can reveal the meeting from behind an overlay, for example.
The astute reader might notice we are currently sending a
'browser-support' event roughly at the same time. The reason for this
new event is plain simply semantics.
In addition the 'onload' handler is faked by calling it when the new
ready event fires. The original onload event is unreliable. It will be
called even when nothing was ever loaded (try loading a page without
internet and be amused).
- added command for setting the camera facing mode remotely
- enhanced toggleVideo command to optionally accept the facing mode
- fix(startSilent) do not create audio track when start silent
* feat: Adds an example to convert a deployment to use jaas.
* squash: Generates the daily asap token with expiration of 1 day.
The default is 1 hour.
* squash: Use local deployment UI with jaas, not 8x8.vc one.
- We load config.js from 8x8.vc with the tenant, to allow release pinning to work.
- We sed the vpass_cookie in the custom nginx conf as variables are not allowed in location matching.
- The jaas-vars need to be global as it will overwrite config.js location and index html.
* squash: Enables e2ee for the meetings.
* squash: Bump node version check.
* squash: Fix filename.
* squash: Updates the readme.
* squash: Checks whether node is installed.
* squash: Fixes initial configuration.
The jaas-vars is required to reload nginx, done by update-asap-daily script.
* squash: More fixes of misspelled config file.
* squash: Fixes serving the pub key.
* add toggleWhiteboard to Jitsi API
* eslint recommendations applied
* Prevent to send whiteboard status change notifications for mobile
* Fix code style errors (eslint)
* Requested changes (by mihhu) have been made.
---------
Co-authored-by: Fikret Huseynkhanov <fikret.huseynkhanov@simbrella.com>