Skip to content

Commit aec5585

Browse files
cn0151cnwankwodmceachernmsftgithub-actions[bot]
authored
Promote together mode to stable (#5711)
* Promote together mode to stable * Update tags to public * Updated api documentation * Change files * Change files * update stable API * fix cc * Change files for beta build * updated api file for stable * Update packages/react-composites CallComposite browser test snapshots --------- Co-authored-by: cnwankwo <[email protected]> Co-authored-by: dmceachernmsft <[email protected]> Co-authored-by: Donald McEachern <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent d41a40b commit aec5585

File tree

25 files changed

+205
-92
lines changed

25 files changed

+205
-92
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "prerelease",
3+
"area": "feature",
4+
"workstream": "together-mode",
5+
"comment": "We are excited to announce that the Azure Communication Services Web UI Library now supports Together Mode in Teams interop scenarios. Together Mode is a feature that creates a virtual shared space for meeting participants. By using AI segmentation technology, it places participants in a common background, such as a conference room or auditorium, making it look like everyone is sitting together. This mode is designed to make meetings feel more engaging and reduce virtual meeting fatigue. It can help improve participants' sense of connection and collaboration by mimicking the experience of being in the same physical location. Developers can use this functionality today through our composites (e.g CallComposite, CallWithChatComposite) as well as through components (e.g VideoGallery). Participants receive together Mode in Teams Interop Meetings, change views to and from Together mode and view reactions and raised hands in the Together mode view ",
6+
"packageName": "@azure/communication-react",
7+
"email": "[email protected]",
8+
"dependentChangeType": "patch"
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "prerelease",
3+
"area": "feature",
4+
"workstream": "together-mode",
5+
"comment": "Promote together mode to stable",
6+
"packageName": "@azure/communication-react",
7+
"email": "[email protected]",
8+
"dependentChangeType": "patch"
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "prerelease",
3+
"area": "feature",
4+
"workstream": "together-mode",
5+
"comment": "Promote together mode to stable",
6+
"packageName": "@azure/communication-react",
7+
"email": "[email protected]",
8+
"dependentChangeType": "patch"
9+
}

common/config/babel/features.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ module.exports = {
6868
// feature for tracking the callParticipantsLocator
6969
"call-participants-locator",
7070
// Feature for RTT
71-
"rtt",
72-
// Feature for together mode
73-
"together-mode"
71+
"rtt"
7472
],
7573
stable: [
7674
// Demo feature. Used in live-documentation of conditional compilation.
7775
// Do not use in production code.
7876
"stabilizedDemo",
7977
// Feature for breakout rooms
80-
"breakout-rooms"
78+
"breakout-rooms",
79+
// Feature for together mode
80+
"together-mode"
8181
]
8282
}

packages/calling-component-bindings/src/handlers/createCommonHandlers.ts

-8
Original file line numberDiff line numberDiff line change
@@ -114,30 +114,22 @@ export interface CommonCallingHandlers {
114114
/* @conditional-compile-remove(together-mode) */
115115
/**
116116
* Call back to create a view for together mode
117-
*
118-
* @beta
119117
*/
120118
onCreateTogetherModeStreamView: (options?: TogetherModeStreamOptions) => Promise<void | TogetherModeStreamViewResult>;
121119

122120
/* @conditional-compile-remove(together-mode) */
123121
/**
124122
* Call back to create a view for together mode
125-
*
126-
* @beta
127123
*/
128124
onStartTogetherMode: () => Promise<void>;
129125
/* @conditional-compile-remove(together-mode) */
130126
/**
131127
* Call set together mode scene size
132-
*
133-
* @beta
134128
*/
135129
onSetTogetherModeSceneSize: (width: number, height: number) => void;
136130
/* @conditional-compile-remove(together-mode) */
137131
/**
138132
* Call back to dispose together mode views
139-
*
140-
* @beta
141133
*/
142134
onDisposeTogetherModeStreamView: () => Promise<void>;
143135
/**

packages/calling-stateful-client/src/CallClientState.ts

+27-11
Original file line numberDiff line numberDiff line change
@@ -336,63 +336,80 @@ export interface RaiseHandCallFeatureState {
336336
/* @conditional-compile-remove(together-mode) */
337337
/**
338338
* Represents the name of the call feature stream
339-
* @beta
339+
* @public
340340
*/
341341
export type CallFeatureStreamName = 'togetherMode';
342342

343343
/* @conditional-compile-remove(together-mode) */
344344
/**
345345
* State only version of {@link @azure/communication-calling#CallFeatureStream}.
346346
* Represents call feature stream state.
347-
* @beta
347+
* @public
348348
*/
349349
export interface CallFeatureStreamState extends RemoteVideoStreamState {
350+
/**
351+
* The name of the call feature stream.
352+
*/
350353
feature?: CallFeatureStreamName;
351354
}
352355

353356
/* @conditional-compile-remove(together-mode) */
354357
/**
355358
* State only version of {@link @azure/communication-calling#TogetherModeSeatingMap}.
356-
* @beta
359+
* @public
357360
*
358361
* Represents the seating position of a participant in Together Mode.
359362
*/
360363
export interface TogetherModeSeatingPositionState {
361-
/* The top left offset from the top of the together mode view.*/
364+
/**
365+
* The top left offset from the top of the together mode view.
366+
*/
362367
top: number;
363-
/* The left offset position from the left of the together mode view. */
368+
/**
369+
* The left offset position from the left of the together mode view.
370+
*/
364371
left: number;
365-
/* The width of the seating area */
372+
/**
373+
* The width of the seating area
374+
*/
366375
width: number;
367-
/* The height of the seating area. */
376+
/**
377+
* The height of the seating area.
378+
*/
368379
height: number;
369380
}
370381

371382
/* @conditional-compile-remove(together-mode) */
372383
/**
373384
* Represents the seating positions of participants in Together Mode.
374385
*
375-
* @beta
386+
* @public
376387
*/
377388
export type TogetherModeParticipantSeatingState = Record<string, TogetherModeSeatingPositionState>;
378389

379390
/* @conditional-compile-remove(together-mode) */
380391
/**
381392
* Represents the streams in Together Mode.
382393
*
383-
* @beta
394+
* @public
384395
*/
385396
export interface TogetherModeStreamsState {
397+
/**
398+
* The main video stream in Together Mode.
399+
*/
386400
mainVideoStream?: CallFeatureStreamState;
387401
}
388402

389403
/* @conditional-compile-remove(together-mode) */
390404
/**
391405
* State only version of {@link @azure/communication-calling#TogetherModeCallFeature}. {@link StatefulCallClient}.
392406
* Represents the state of the Together Mode feature.
393-
* @beta
407+
* @public
394408
*/
395409
export interface TogetherModeCallFeatureState {
410+
/**
411+
* Flag indicating if Together Mode is active in the call
412+
*/
396413
isActive: boolean;
397414
/**
398415
* Proxy of {@link @azure/communication-calling#TogetherModeCallFeature.togetherModeStream}.
@@ -736,7 +753,6 @@ export interface CallState {
736753
/* @conditional-compile-remove(together-mode) */
737754
/**
738755
* Proxy of {@link @azure/communication-calling#TogetherModeCallFeature}.
739-
* @beta
740756
*/
741757
togetherMode: TogetherModeCallFeatureState;
742758
/**

packages/communication-react/review/beta/communication-react.api.md

+11-40
Original file line numberDiff line numberDiff line change
@@ -444,14 +444,12 @@ export interface CallAdapterCallOperations {
444444
addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
445445
allowUnsupportedBrowserVersion(): void;
446446
createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
447-
// @beta
448447
createTogetherModeStreamView(options?: TogetherModeStreamOptions): Promise<void | TogetherModeStreamViewResult>;
449448
disposeLocalVideoStreamView(): Promise<void>;
450449
disposeRemoteVideoStreamView(remoteUserId: string): Promise<void>;
451450
disposeScreenShareStreamView(remoteUserId: string): Promise<void>;
452451
// @deprecated
453452
disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
454-
// @beta
455453
disposeTogetherModeStreamView(): Promise<void>;
456454
forbidAudio(userIds: string[]): Promise<void>;
457455
forbidOthersAudio(): Promise<void>;
@@ -477,14 +475,12 @@ export interface CallAdapterCallOperations {
477475
sendRealTimeText: (text: string, isFinalized: boolean) => Promise<void>;
478476
setCaptionLanguage(language: string): Promise<void>;
479477
setSpokenLanguage(language: string): Promise<void>;
480-
// @beta
481478
setTogetherModeSceneSize(width: number, height: number): void;
482479
startCamera(options?: VideoStreamOptions): Promise<void>;
483480
startCaptions(options?: StartCaptionsAdapterOptions): Promise<void>;
484481
startNoiseSuppressionEffect(): Promise<void>;
485482
startScreenShare(): Promise<void>;
486483
startSpotlight(userIds?: string[]): Promise<void>;
487-
// @beta
488484
startTogetherMode(): Promise<void>;
489485
startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void>;
490486
stopAllSpotlight(): Promise<void>;
@@ -1111,12 +1107,11 @@ export type CallErrors = {
11111107
// @public
11121108
export type CallErrorTarget = 'Call.addParticipant' | 'Call.dispose' | 'Call.feature' | 'Call.hangUp' | 'Call.hold' | 'Call.mute' | 'Call.muteIncomingAudio' | 'Call.off' | 'Call.on' | 'Call.removeParticipant' | 'Call.resume' | 'Call.sendDtmf' | 'Call.startAudio' | 'Call.startScreenSharing' | 'Call.startVideo' | 'Call.stopScreenSharing' | 'Call.stopAudio' | 'Call.stopVideo' | 'Call.unmute' | 'Call.unmuteIncomingAudio' | 'CallAgent.dispose' | 'CallAgent.feature' | 'CallAgent.join' | 'CallAgent.off' | 'CallAgent.on' | 'CallAgent.startCall' | 'CallClient.createCallAgent' | 'CallClient.createTeamsCallAgent' | 'CallClient.feature' | 'CallClient.getDeviceManager' | 'CallClient.getEnvironmentInfo' | 'DeviceManager.askDevicePermission' | 'DeviceManager.getCameras' | 'DeviceManager.getMicrophones' | 'DeviceManager.getSpeakers' | 'DeviceManager.off' | 'DeviceManager.on' | 'DeviceManager.selectMicrophone' | 'DeviceManager.selectSpeaker' | 'IncomingCall.accept' | 'IncomingCall.reject' | 'TeamsCall.addParticipant' | 'VideoEffectsFeature.startEffects' | /* @conditional-compile-remove(calling-beta-sdk) */ 'CallAgent.handlePushNotification' | /* @conditional-compile-remove(calling-beta-sdk) */ 'Call.admit' | /* @conditional-compile-remove(calling-beta-sdk) */ 'Call.rejectParticipant' | /* @conditional-compile-remove(calling-beta-sdk) */ 'Call.admitAll' | 'Call.mutedByOthers' | 'Call.muteAllRemoteParticipants' | 'Call.setConstraints';
11131109

1114-
// @beta
1110+
// @public
11151111
export type CallFeatureStreamName = 'togetherMode';
11161112

1117-
// @beta
1113+
// @public
11181114
export interface CallFeatureStreamState extends RemoteVideoStreamState {
1119-
// (undocumented)
11201115
feature?: CallFeatureStreamName;
11211116
}
11221117

@@ -1255,7 +1250,6 @@ export interface CallState {
12551250
spotlight?: SpotlightCallFeatureState;
12561251
startTime: Date;
12571252
state: CallState_2;
1258-
// @beta
12591253
togetherMode: TogetherModeCallFeatureState;
12601254
totalParticipantCount?: number;
12611255
transcription: TranscriptionCallFeature;
@@ -1282,7 +1276,6 @@ export interface CallWithChatAdapterManagement {
12821276
allowUnsupportedBrowserVersion(): void;
12831277
askDevicePermission(constrain: PermissionConstraints): Promise<DeviceAccess>;
12841278
createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
1285-
// @beta
12861279
createTogetherModeStreamView(options?: TogetherModeStreamOptions): Promise<void | TogetherModeStreamViewResult>;
12871280
// @beta
12881281
deleteImage(imageId: string): Promise<void>;
@@ -1291,7 +1284,6 @@ export interface CallWithChatAdapterManagement {
12911284
disposeRemoteVideoStreamView(remoteUserId: string): Promise<void>;
12921285
disposeScreenShareStreamView(remoteUserId: string): Promise<void>;
12931286
disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
1294-
// @beta
12951287
disposeTogetherModeStreamView(): Promise<void>;
12961288
// (undocumented)
12971289
downloadResourceToCache(resourceDetails: ResourceDetails): Promise<void>;
@@ -1335,7 +1327,6 @@ export interface CallWithChatAdapterManagement {
13351327
setMicrophone(sourceInfo: AudioDeviceInfo): Promise<void>;
13361328
setSpeaker(sourceInfo: AudioDeviceInfo): Promise<void>;
13371329
setSpokenLanguage(language: string): Promise<void>;
1338-
// @beta
13391330
setTogetherModeSceneSize(width: number, height: number): void;
13401331
startCall(participants: string[], options?: StartCallOptions): Call | undefined;
13411332
startCall(participants: (MicrosoftTeamsAppIdentifier | PhoneNumberIdentifier | CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier | UnknownIdentifier)[], options?: StartCallOptions): Call | undefined;
@@ -1344,7 +1335,6 @@ export interface CallWithChatAdapterManagement {
13441335
startNoiseSuppressionEffect(): Promise<void>;
13451336
startScreenShare(): Promise<void>;
13461337
startSpotlight(userIds?: string[]): Promise<void>;
1347-
// @beta
13481338
startTogetherMode(): Promise<void>;
13491339
startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void>;
13501340
stopAllSpotlight(): Promise<void>;
@@ -2394,7 +2384,6 @@ export interface CommonCallingHandlers {
23942384
onCreateLocalStreamView: (options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
23952385
// (undocumented)
23962386
onCreateRemoteStreamView: (userId: string, options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
2397-
// @beta
23982387
onCreateTogetherModeStreamView: (options?: TogetherModeStreamOptions) => Promise<void | TogetherModeStreamViewResult>;
23992388
// (undocumented)
24002389
onDisposeLocalScreenShareStreamView: () => Promise<void>;
@@ -2406,7 +2395,6 @@ export interface CommonCallingHandlers {
24062395
onDisposeRemoteStreamView: (userId: string) => Promise<void>;
24072396
// (undocumented)
24082397
onDisposeRemoteVideoStreamView: (userId: string) => Promise<void>;
2409-
// @beta
24102398
onDisposeTogetherModeStreamView: () => Promise<void>;
24112399
onForbidAudio?: (userIds: string[]) => Promise<void>;
24122400
onForbidOthersAudio?: () => Promise<void>;
@@ -2452,7 +2440,6 @@ export interface CommonCallingHandlers {
24522440
onSetCaptionLanguage: (language: string) => Promise<void>;
24532441
// (undocumented)
24542442
onSetSpokenLanguage: (language: string) => Promise<void>;
2455-
// @beta
24562443
onSetTogetherModeSceneSize: (width: number, height: number) => void;
24572444
// (undocumented)
24582445
onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => void;
@@ -2466,7 +2453,6 @@ export interface CommonCallingHandlers {
24662453
onStartScreenShare: () => Promise<void>;
24672454
// (undocumented)
24682455
onStartSpotlight: (userIds?: string[]) => Promise<void>;
2469-
// @beta
24702456
onStartTogetherMode: () => Promise<void>;
24712457
// (undocumented)
24722458
onStopAllSpotlight: () => Promise<void>;
@@ -4250,9 +4236,7 @@ export interface NotificationStackStrings {
42504236
stopScreenShareGeneric?: NotificationStrings;
42514237
stopVideoGeneric?: NotificationStrings;
42524238
teamsMeetingCallNetworkQualityLow?: NotificationStrings;
4253-
// (undocumented)
42544239
togetherModeEnded?: NotificationStrings;
4255-
// (undocumented)
42564240
togetherModeStarted?: NotificationStrings;
42574241
transcriptionStarted?: NotificationStrings;
42584242
transcriptionStopped?: NotificationStrings;
@@ -5340,44 +5324,36 @@ export type TeamsOutboundCallAdapterArgs = TeamsCallAdapterArgsCommon & {
53405324
// @public
53415325
export const toFlatCommunicationIdentifier: (identifier: CommunicationIdentifier) => string;
53425326

5343-
// @beta
5327+
// @public
53445328
export interface TogetherModeCallFeatureState {
5345-
// (undocumented)
53465329
isActive: boolean;
53475330
seatingPositions: TogetherModeParticipantSeatingState;
53485331
streams: TogetherModeStreamsState;
53495332
}
53505333

5351-
// @beta
5334+
// @public
53525335
export type TogetherModeParticipantSeatingState = Record<string, TogetherModeSeatingPositionState>;
53535336

5354-
// @beta
5337+
// @public
53555338
export interface TogetherModeSeatingPositionState {
5356-
// (undocumented)
53575339
height: number;
5358-
// (undocumented)
53595340
left: number;
5360-
// (undocumented)
53615341
top: number;
5362-
// (undocumented)
53635342
width: number;
53645343
}
53655344

5366-
// @beta
5345+
// @public
53675346
export interface TogetherModeStreamOptions extends VideoStreamOptions {
5368-
// (undocumented)
53695347
viewKind?: 'main' | 'panoramic';
53705348
}
53715349

5372-
// @beta
5350+
// @public
53735351
export interface TogetherModeStreamsState {
5374-
// (undocumented)
53755352
mainVideoStream?: CallFeatureStreamState;
53765353
}
53775354

5378-
// @beta
5355+
// @public
53795356
export interface TogetherModeStreamViewResult {
5380-
// (undocumented)
53815357
mainVideoView?: CreateVideoStreamViewResult;
53825358
}
53835359

@@ -5754,24 +5730,19 @@ export interface VideoGalleryStyles extends BaseCustomStyles {
57545730
verticalGallery?: VerticalGalleryStyles;
57555731
}
57565732

5757-
// @beta
5733+
// @public
57585734
export type VideoGalleryTogetherModeParticipantPosition = Record<string, VideoGalleryTogetherModeSeatingInfo>;
57595735

5760-
// @beta
5736+
// @public
57615737
export interface VideoGalleryTogetherModeSeatingInfo {
5762-
// (undocumented)
57635738
height: number;
5764-
// (undocumented)
57655739
left: number;
5766-
// (undocumented)
57675740
top: number;
5768-
// (undocumented)
57695741
width: number;
57705742
}
57715743

5772-
// @beta
5744+
// @public
57735745
export interface VideoGalleryTogetherModeStreams {
5774-
// (undocumented)
57755746
mainVideoStream?: VideoGalleryStream;
57765747
}
57775748

0 commit comments

Comments
 (0)