Skip to content

Commit

Permalink
Merge branch 'main' into add-transcription-modes
Browse files Browse the repository at this point in the history
  • Loading branch information
mntrspace authored Nov 22, 2023
2 parents d9c669a + dd4dda3 commit bc710a1
Show file tree
Hide file tree
Showing 43 changed files with 804 additions and 190 deletions.
3 changes: 2 additions & 1 deletion .github/styles/Vocab/HMSVocab/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -163,4 +163,5 @@ keyof
unobserve
qp
rehype
num
num
url
21 changes: 21 additions & 0 deletions docs/android/v2/release-notes/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,27 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md';
| live.100ms:hls-player-stats: |<AndroidSdkVersionShield />
| live.100ms:virtual-background: |<AndroidSdkVersionShield />|

## v2.8.1 2023-11-16
### Fixed
- Publisher and Subscriber stats are sent according to whether they're enabled in flags on the dashboard.

### Added
- Intermediate stages of Beam - The states have been updated to include the following:
- Recording states:
- NONE,
- STARTING
- STARTED
- PAUSED
- RESUMED
- STOPPED
- FAILED
- Streaming states are:
- NONE,
- STARTING
- STARTED
- STOPPED
- FAILED

## v2.8.0 - 2023-11-3
### Added
- Added subscribe side analytics
Expand Down
6 changes: 6 additions & 0 deletions docs/api-reference/javascript/v2/interfaces/HLSVariant.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ nav: '4.4'

---

### state

`Optional` **state**: `HMSStreamingState`

---

### url

**url**: `string`
6 changes: 3 additions & 3 deletions docs/api-reference/javascript/v2/interfaces/HMSActions.md
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ Send a plain text message to all the other participants in the room.
| Name | Type | Description |
| :-------- | :------- | :---------------------------------------------------------------- |
| `message` | `string` | string message to broadcast |
| `type?` | `string` | type of message. For example: image, video etc. - optional defaults to chat |
| `type?` | `string` | type of message, for example image, video etc. - optional defaults to chat |

#### Returns

Expand All @@ -683,7 +683,7 @@ Send a plain text message to all the other participants in the room.
| :-------- | :------- | :---------------------------------------------------------------- |
| `message` | `string` | |
| `peerID` | `string` | id of the peer to which message has to be sent |
| `type?` | `string` | type of message. For example: image, video etc. - optional defaults to chat |
| `type?` | `string` | type of message, for example image, video etc. - optional defaults to chat |

#### Returns

Expand All @@ -701,7 +701,7 @@ Send a plain text message to all the other participants in the room.
| :-------- | :--------- | :---------------------------------------------------------------- |
| `message` | `string` | string message to send |
| `roles` | `string`[] | roles to which to send the message |
| `type?` | `string` | type of message. For example: image, video etc. - optional defaults to chat |
| `type?` | `string` | type of message, for example: image, video etc. - optional defaults to chat |

#### Returns

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ When a peer joins the room for the first time or when a device change happens,
after selecting the mic for audio input, we try to find the matching output device
for selecting the speaker(on browsers where speaker selection is possible).

For example if the headset mic is selected, the headset speaker will also be selected,
For example, if the headset mic is selected, the headset speaker will also be selected,
if the laptop default mix is selected, the corresponding laptop speaker will be selected.

This is useful because if a non-matching pair is selected, it might lead to an echo in the room.
Expand All @@ -48,7 +48,7 @@ and always go for the default device selection as given by the browser.
There are two ways to use this, you can pass in 'all' which will disable the above behaviour for all devices.
Or you can pass in an array of labels which will be string matched to disable the behavior for specific devices.

For example ["Yeti Stereo Microphone"], as Yeti shows up often in audio output even when no device is plugged into its headphone jack.
For example, ["Yeti Stereo Microphone"], as Yeti shows up often in audio output even when no device is plugged into its headphone jack.

---

Expand Down
6 changes: 6 additions & 0 deletions docs/api-reference/javascript/v2/interfaces/HMSRTMP.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,9 @@ nav: '4.47'
### startedAt

`Optional` **startedAt**: `Date`

---

### state

`Optional` **state**: `HMSStreamingState`
20 changes: 2 additions & 18 deletions docs/api-reference/javascript/v2/interfaces/HMSRecording.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,7 @@ nav: '4.49'

### browser

**browser**: `Object`

#### Type declaration

| Name | Type |
| :----------- | :------------- |
| `error?` | `HMSException` |
| `running` | `boolean` |
| `startedAt?` | `Date` |
**browser**: `HMSBrowserRecording`

---

Expand All @@ -27,12 +19,4 @@ nav: '4.49'

### server

**server**: `Object`

#### Type declaration

| Name | Type |
| :----------- | :------------- |
| `error?` | `HMSException` |
| `running` | `boolean` |
| `startedAt?` | `Date` |
**server**: `HMSSFURecording`
10 changes: 10 additions & 0 deletions docs/flutter/v2/release-notes/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ nav: 99
| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) |
| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) |

# 1.9.3 - 2023-11-17

### Added

- Added `Subscriber Stats` for improved debugging of subscription issues.

Updated to Android SDK 2.8.1 & iOS SDK 1.3.0

**Full Changelog**: [1.9.2...1.9.3](https://github.com/100mslive/100ms-flutter/compare/1.9.2...1.9.3)

## 1.9.2 - 2023-11-09

### Changed
Expand Down
81 changes: 81 additions & 0 deletions docs/get-started/v2/get-started/prebuilt/Appearance.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: Appearance
nav: 2.2
---

Customize the theme of your Prebuilt app, ensuring it aligns with your brand identity and user experience preferences. Preview your changes on the go, once saved you can test these changes on Prebuilt links and our native apps. This documentation will guide you through the various appearance customization available within the Prebuilt Customizer.

Head to [100ms dashboard](https://dashboard.100ms.live/dashboard), choose an existing template or create a new one. Jump to Customize Prebuilt and customize Prebuilt's default appearance.

## Changing Logo

You can easily replace the default logo that appears on the Prebuilt interface with your own logo. To do this, click on "Logo" input field and provide the URL of your custom logo image. Ensure that the image meets your desired dimensions. The supported image format is .png. For best results, upload an image with a transparent background.


<div style={{textAlign: 'center'}}>

![LogoCustomisation](/docs/v2/LogoCustomisation.gif)
</div>

## Switching Between Dark and Light Themes

Prebuilt offers two distinct themes for your app: a dark theme and a light theme. You can choose the one that best suits your app’s aesthetics.

Once you toggle the theme switch to select either the dark or light theme, your Prebuilt app will be displayed with the selected theme.

Selecting between a dark or light theme is crucial for setting the fundamental visual structure of your app. While the choice may appear limited with just two themes, these themes form the canvas on which your color tokens are applied. This ensures a unified and harmonious design, aligning with your brand and elevating the overall user experience.

<Note title="Switching themes">
If you change the theme type, your color customizations will be reset. Be sure to reconfigure your color settings under Color Tokens section after switching between the dark and light themes to maintain your desired appearance.
</Note>

<div style={{textAlign: 'center'}}>

![LogoCustomisation](/docs/v2/DarkLightTheme.gif)
</div>

## Color Tokens

Color Tokens allow you to customize various color aspects of the Prebuilt user interface, ensuring consistency with your brand or app's design. To customize any of the colors, adjust the color values for each color variant according to your preferences. You can input a hex code, enter RGB values or select from the color picker. Click the `Save` button to apply the changes.

<Note title ="Modifying color tokens">
You only need to modify the default color value; the other color roles are automatically generated to maintain a consistent color scheme. For example, changing Primary color value generates Primary Default, Bright, Dim and Disabled.
</Note>

<div style={{textAlign: 'center'}}>

![LogoCustomisation](/docs/v2/ColorTokens.gif)
</div>

### Primary Colors

The primary colors play a crucial role in defining UI elements that reflect the brand color, especially main elements like primary action buttons.

![primary](/docs/v2/primary.png)

### Secondary Colors

Secondary colors are used for UI elements that reflect the brand but with lower emphasis like secondary buttons, offering contrast to primary elements.

![secondary](/docs/v2/secondary.png)

### Background Colors

Background colors are used for the base layer situated behind all content and UI elements.

![Background](/docs/v2/Background.png)

### Surface Colors

Surface colors define contained areas, distinguishing them from a background and other on-screen elements.

![surface](/docs/v2/surface.png)

### Border Colors

Border colors create boundaries and emphasis to improve usability.

![Border](/docs/v2/Border.png)


With these customization options, you can tailor the appearance of your Prebuilt app to match your brand and user interface design preferences, delivering a unique and engaging experience to your users.
103 changes: 103 additions & 0 deletions docs/get-started/v2/get-started/prebuilt/Screens-and-components.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
title: Screens and Components
nav: 2.3
---

As Prebuilt UI maps to its template configuration, you'll be able to preview and customize Prebuilt behavior for each role in your template. This guide explains how Prebuilt's defaults can be customized for its role using screens and components.

- **Screens** - represents Prebuilt's screens, namely
- Preview - a screen that allows setting up a participant's audio/video before they join a 100ms room
- Room - a space where participants engage in a video-conferencing or livestreaming template set up
- **Components** - each of the Prebuilt screen has its components that exposes functionalities like Join button, Chat, participant list, video layouts or features like bring on stage

## Configuring screens and components
By default, components are enabled based on the role associated with the use case you've selected during template creation. A component can be easily enabled or disabled for a role, you can also go deeper into a component and customize its configuration on Prebuilt. Follow these steps to get started:

- Choose an existing template or create a new one on 100ms dashboard.
- Jump to Customize Prebuilt and head to "Screens and components" section.
- Select a role to start customizing components on Preview and Room screens.

<video loop="true" autoplay="autoplay" id="vid" muted>
<source src="/docs/docs/v2/customiser.mp4" type="video/mp4" />
</video>

### Preview Screen

#### Header
Set up a custom header for each roles using Title and Subtitle fields.
#### Join
Choose how peers join the room
- **Join Now** - Peers from this role will see "Join Now" and would be able join after entering their name.
- **Join and Start Streaming** - Peers from this role will see "Go Live" and would be able to join and start streaming when they join the room. Ensure that this role has the permission to "Start/Stop HLS streaming" as `enabled` under Role permissions on its template configuration.

### Room Screen
The Prebuilt room screen offers a set of components designed to enhance interactivity within a room. Choose a role to kickstart your customization journey.

#### Chat
Toggle the chat functionality on or off for a specific role. When chat is disabled for a role, that role won't have access to the chat component within the room. If enabled, you can further fine-tune and customize the functionalities of the Prebuilt UI for chat.

##### Initial State
This setting determines whether the chat component is initially open or closed when a participant joins a session. Keeping the initial state as open can be particularly useful when using the chat overlay view on mobile devices.

##### Enable Overlay View
In an overlay view, the chat component overlays on top of video tiles, delivering an immersive chat experience for mobile livestreaming scenarios. Please note that this chat view is exclusively available on mobile devices and is not supported on large-screen applications.

##### Allow Pinning messages
Enabling this feature allows the selected role to pin important chat messages on the chat component, making them visible to everyone.


#### Participant List
Ensure participant list accessibility for roles that require visibility. In certain scenarios, such as large room viewers, there may be no need for them to view other participants, but Hosts or Broadcasters might find it essential to maintain oversight of the participant list. By default, the participant list is enabled for all roles across all templates.

#### Video Tile Layout
100ms Prebuilt UI allows tweaks on its default grid layout and supports multiple video layouts.

##### Enable local tile inset
Enabling this makes the local peer's *(for the selected role)* tile in a smaller inset window as default, alternatively if it's disabled, the local tile will be part of the grid view. Join with at least two peers to preview this configuration in action.

##### Prominent roles
Defining one or more roles as prominent gives them higher tile view prominence for the selected role. For example:
- For a 1:1 call, define Host as prominent tile for Guest and vice-versa.
- For a webinar, set Host as the prominent tile for all other roles. Every role would see Host as the primary tile in the room
- For a mobile-first livestreaming view, set Broadcaster as prominent tile for every other role, including Broadcaster themselves.

##### Can spotlight peer
Allow this config for roles who can spotlight others or themselves in the room. Spotlighting a tile reflects for everyone in the room.

<Note title ="Different in Prominence and Spotlight">
Assigning a role as "prominent" for either themselves or other roles establishes a fixed layout that remains unchanged for the entire session. This is particularly well-suited for scenarios where a specific role needs to maintain a constant presence, as seen in webinars and livestreaming. Conversely, spotlighting either their own tile or the tiles of others permits specific participant tiles to temporarily take center stage within the session, allowing for more adaptable layout adjustments as needed.
</Note>

#### Be Right Back (BRB)
Depending on your use case, allow roles to set themselves on BRB mode. If disabled, this component will not be visible to the selected role.


#### Emoji Reactions
Enabling this for a role allows its peers to send emoji reactions in the room.

#### Bring others on Stage
Stage is a virtual space within a room that enables participants to actively engage with their audio and video, and publish it with a much larger audience. With the 'Bring on Stage' feature enabled, viewers who are not on stage can easily interact with the participants on stage, once they have been granted access to the stage.
Enable Bring on stage for roles that require the ability to allow or deny stage requests from off-stage participants. By default, this feature is enabled for Hosts, Broadcasters and Co-broadcasters, while viewers with non-publishing roles can use the hand-raise option to request stage access. This component can extend its support to conferencing, webinars and livestreaming scenarios. However, if your use case does not require this feature, you can simply disable it to ensure a seamless experience for all users.

##### Bring on Stage Label

Customize text label that Hosts and Broadcasters will see when they receive on stage requests. The default text is "Bring to stage".

##### Remove from Stage Label

Customize text label that Hosts and Broadcasters will see when they receive on stage requests. The default text is "Remove from stage".

##### On Stage and Off Stage Role
An off stage participant becomes an on stage participant once their stage access has been accepted. For instance, an off stage role, say Viewer requests a Broadcaster to go on stage. Once their request is accepted, the Viewer can transition to an on stage role, which could be a Viewer-on-stage, a Guest, or a Co-broadcaster.

Let's take a quick example to understand this better.

Assume a livestreaming scenario with Bring on stage enabled for Broadcasters and Co-Broadcasters, where
- Off-stage participants have been assigned role: Viewer a role with no audio/video publish permissions
- On-stage participants have been assigned role : Guest, a role with audio/video publish permissions

Once the configuration is set under Bring on stage, join Prebuilt links or apps as these roles: Broadcaster, Co-Broadcaster and Viewer to try bring on stage feature like below:
1. Participants from Viewer role can choose to raise their hand during a session to request to go on stage and interact with Broadcaster(s) and Co-Broadcaster(s)
2. Broadcaster(s) and Co-Broadcaster(s) will receive stage access notification from these off-stage partcipants; where they can choose to accept or deny the stage request. Meanwhile, a Viewer can choose to lower their hand untill their request has been accepted or denied. Broadcaster(s) can also track all such requests under "Hand Raise" section under participant list.
3. When a Broadcaster accepts a stage request from a Viewer(an off-stage participant), the Viewer becomes a Guest (an on-stage participant) as per the configuration set
4. Broadcaster(s) can choose to mute/unmute audio/video for Guest or simply remove them from stage.
Loading

0 comments on commit bc710a1

Please sign in to comment.