* fix(recording): show advanced options for local recording with transcription
* Fixed edge case when all recording service are disabled
* Modified css
* Added warning message
* Show transcription option when no recording service is present
* Addressed PR reviews
* squash: Hide recording advanced option when not rendering recording.
* squash: Show recording button when only transcriptions are enabled.
* squash: Make sure we do not call record when it is not rendered due to no permissions.
* squash: Allows those with just feature transcription to use async transcribe.
* squash: Show recording stop button when recording is running when only transcriptions feature is available.
---------
Co-authored-by: damencho <damencho@jitsi.org>
* feat(transcription): allow custom transcriber languages via config
* fix(transcription): avoid duplicating default language json and document config
* feat(config): add support for custom transcription languages in configuration
* fix(config): satisfy lint and ts rules
* 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.