From ef6a5a1ffe9b2fbb1092a1e895f5c0538e21328b Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Fri, 6 Mar 2026 14:15:27 -0800 Subject: [PATCH] feat(video-layout): default to tile view on conference join Also add tooltip to Meeting Intelligence button explaining that recordings are transcribed by self-hosted AI post-recording. Co-Authored-By: Claude Opus 4.6 --- lang/main.json | 1 + .../components/web/MeetingIntelligenceButton.ts | 2 +- react/features/video-layout/middleware.any.ts | 10 +++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lang/main.json b/lang/main.json index d263837..5102f55 100644 --- a/lang/main.json +++ b/lang/main.json @@ -1504,6 +1504,7 @@ "sharedmusic": "Share music", "stopSharedMusic": "Stop music", "meetingIntelligence": "Meeting Intelligence", + "meetingIntelligenceTooltip": "Recordings are transcribed by self-hosted AI post-recording", "closeMeetingIntelligence": "Close Meeting Intelligence", "shortcuts": "View shortcuts", "showWhiteboard": "Show whiteboard", diff --git a/react/features/meeting-intelligence/components/web/MeetingIntelligenceButton.ts b/react/features/meeting-intelligence/components/web/MeetingIntelligenceButton.ts index 5e2f434..720ff47 100644 --- a/react/features/meeting-intelligence/components/web/MeetingIntelligenceButton.ts +++ b/react/features/meeting-intelligence/components/web/MeetingIntelligenceButton.ts @@ -24,7 +24,7 @@ class MeetingIntelligenceButton extends AbstractButton { override icon = IconMeter; override label = 'toolbar.meetingIntelligence'; override toggledLabel = 'toolbar.closeMeetingIntelligence'; - override tooltip = 'toolbar.meetingIntelligence'; + override tooltip = 'toolbar.meetingIntelligenceTooltip'; override toggledTooltip = 'toolbar.closeMeetingIntelligence'; /** diff --git a/react/features/video-layout/middleware.any.ts b/react/features/video-layout/middleware.any.ts index 1544526..4bb1995 100644 --- a/react/features/video-layout/middleware.any.ts +++ b/react/features/video-layout/middleware.any.ts @@ -99,9 +99,13 @@ StateListenerRegistry.register( state => getCurrentConference(state), (conference, { dispatch }, previousConference) => { if (conference !== previousConference) { - // conference changed, left or failed... - // Clear tile view state. - dispatch(setTileView()); + if (conference) { + // New conference joined - default to tile view. + dispatch(setTileView(true)); + } else { + // Conference left or failed - clear tile view state. + dispatch(setTileView()); + } } });