* fix(video-layout) Fixes auto-pinning of SS in large calls.
In calls with 50+ participants, isTopPanelEnabled returns true. This causes isStageFilmstripAvailable(state) (called with no minimum participant count from getPinnedParticipant) to return true even when activeParticipants is empty. When getPinnedParticipant takes that stage filmstrip path, it reads from activeParticipants.find(p => p.pinned) — which is always
empty for an auto-pinned screenshare.
Added an explicit check in shouldDisplayTileView's auto-mode logic: when there are active screenshares AND the top panel is enabled AND auto-pin is active AND Follow Me isn't controlling the layout, exit tile view. The guards on getAutoPinSetting() and !isFollowMeActive(state) mirror the same conditions checked everywhere else before auto-pinning fires, ensuring
consistent behavior.
* squash: Fixes linter error
* fix(meeting_id): Depends on jitsi_session(uses session.user_region).
* feat(authentication): A static page that can be used with some auth providers like keycloak.
* fix(authentication): Implements inline authentication.
squash: Adds refresh token use when refresh token is needed on connection resuming.
squash: Fix bugs and move to PKCE flow.
* squash: Adds nonce verification.
* squash: Drops the closing logic.
* squash: Replace resuming event with CONNECTION_TOKEN_EXPIRED one.
* squash: Fixes comments.
* squash: Make sure we use tokenAuthUrl only when it is set and is not jaas.
* squash: Move CONNECTION_TOKEN_EXPIRED to web only middleware as it uses web only logic for now.
* squash: Fix comments.
Update the label's htmlFor and the Switch id from 'recording-switch-transcription' to 'recording-switch-audio-video' in StartRecordingDialogContent. This corrects the label-to-control association for the audio/video recording toggle, fixing an accessibility/mapping mismatch.
*Hang-up button is calling both appNavigate and conferenceWillLeave synchronously and something is interfering.
appNavigate is async and something is calling it again before conferenceWillLeave completes.
Adds touch-screen support for resizing filmstrip and chat panels to enable tablet and touch-laptop users to adjust panel widths. Previously, drag handles only worked with mouse hover, making panels non-resizable on touch devices.
Changes:
- Implement Pointer Events API for unified mouse/touch handling
- Add touch device detection with screen size threshold
- Make drag handles always visible on touch devices with padding for easier tapping
- Maintain identical visual layout between touch and non-touch versions
Touch devices with sufficiently large screens now have fully functional drag handles with appropriate hit targets while smaller devices remain disabled to preserve mobile UX.
When we minimize the meeting window on Mac OS via the yellow button, 2 requests for PiP are triggered one after another because of the blur and the visibilitychange handlers. If we implement in Electron to focus the meeting window on the pipLeft event this will lead to the first request to exit triggering the pipLeft event after the second request is triggered which will actually bring the window back because we focus on pipLeft event. This behaviour breaks the ability to minimize a window.
The current fix will prevent us for sending 2 requests for PiP one after another by skipping the second unnecessary request.
The panel will appear on the right side after the participant pane panel. Currently the panel is disabled by default and the components that are rendered in the panel are empty (null). The panel is easily customizable by adding some content in the CustomPanel component.
In branding you can add now
"labels-translation-languages": {
"en": "/static/translation-overwritten-en.json"
}
This allows overwriting strings from the translation-languages namespace, till now it was possible only for the main one.
If you are in a private conversation with someone and that participant leaves, the selection of messages switches to Everyone but the private message notice stays.