Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7c9f677
docs(web): update api reference
KaustubhKumar05 May 28, 2025
c5fabc3
Merge pull request #2484 from 100mslive/web-api-reference
KaustubhKumar05 Jun 27, 2025
f6e23fb
Release notes android 2.9.77 (#2486)
PratimMallick Aug 6, 2025
2cdcdb6
docs: update js release notes (#2487)
raviteja83 Aug 13, 2025
0074766
docs: add release notes for version 0.12.38 (#2488)
raviteja83 Aug 26, 2025
c0362eb
Add release notes for version 2.9.78 (#2490)
sapta100ms Oct 15, 2025
ebac898
updated release notes
ygit Oct 28, 2025
590e670
Merge pull request #2491 from 100mslive/update_react_native_docs
ygit Oct 28, 2025
f72455a
updated release notes
ygit Oct 29, 2025
861db29
Merge pull request #2492 from 100mslive/update_notes
ygit Oct 29, 2025
18eb1ba
updated virtual background docs
ygit Oct 29, 2025
f2a7341
updated flutter release notes
ygit Oct 29, 2025
301b18a
Merge pull request #2493 from 100mslive/update_docs
ygit Oct 29, 2025
70137bb
removed Beta tags from docs
ygit Oct 29, 2025
c3adf0f
updated version numbers
ygit Oct 29, 2025
c31774d
Merge pull request #2494 from 100mslive/update_docs
ygit Oct 30, 2025
5d10c92
1.17.1 iOS Release (#2496)
gzerad Nov 17, 2025
876145f
Added release notes for version 2.9.79, including a bug fix for NPE d…
sapta100ms Nov 25, 2025
82b09dd
Merge pull request #2497 from 100mslive/android-release-2.9.79
ygit Nov 25, 2025
99230e9
Added release notes for Web SDK version 0.13.0 (#2498)
raviteja83 Dec 12, 2025
58f539f
docs: update faq for speaker label logging
raviteja83 Dec 12, 2025
6fa025f
docs: add customization options for foreground notification in prebui…
sapta100ms Dec 12, 2025
fb59263
Merge pull request #2499 from 100mslive/foreground-notiifications
ygit Dec 12, 2025
536312b
feat: add prod-us7 IP address (#2500)
bhavesh100ms Dec 30, 2025
fdde9a3
fixing api endpoint for update settings (#2503)
cyril-k-031225 Jan 2, 2026
13c40d7
Update docs for azure support (#2501)
cyril-k-031225 Jan 5, 2026
3d4e005
Added release note for Azure support (#2502)
cyril-k-031225 Jan 5, 2026
2b019fc
add docs for webhook events PI (#2504)
rtpriya Jan 14, 2026
1e75ea1
docs: add release notes for web (#2505)
raviteja83 Jan 20, 2026
ba93918
doc: add release notes for web v0.13.2 (#2507)
cyril-k-031225 Feb 11, 2026
768e4a1
Release notes for android sdk ver 2.9.80 (#2506)
sapta100ms Feb 11, 2026
ce6ebf1
fix: path of room apis
AnshulMalik Feb 11, 2026
825ec94
Merge branch 'main' into fix-room-apis
Shantanu-TAM Feb 11, 2026
303a2e8
add peer quality api documentation (#2509)
AnshulMalik Feb 15, 2026
95338b3
docs: add JavaScript implementation to captions page (#2510)
raviteja83 Feb 24, 2026
cdcae43
Merge branch 'main' into fix-room-apis
Shantanu-TAM Mar 5, 2026
0529c28
Fix formatting in stop-recording-by-id documentation
raviteja83 Mar 5, 2026
d463bb3
Merge pull request #2508 from 100mslive/fix-room-apis
AnshulMalik Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
224 changes: 224 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is the documentation site for 100ms.live, built as a Next.js application that renders MDX files into interactive documentation. The site runs on port 4000 by default and uses a file-based routing system where MDX files in the `/docs` directory automatically generate pages.

**Base Path:** All routes are served under `/docs` prefix (configured in [next.config.js:10](next.config.js#L10))

## Development Commands

**Local Development:**
```bash
yarn dev # Start dev server on port 4000
yarn id # Shortcut for yarn && yarn dev
```

**Building:**
```bash
yarn build # Updates releases, builds Next.js, and generates search index
yarn updatereleases # Must run before viewing local release version changes
```

**Code Quality:**
```bash
yarn lint # Lint components and lib files
yarn format # Format code with Prettier
```

**Documentation Linting (Vale):**
```bash
brew install vale
vale sync
vale docs/*
```

Add whitelisted tokens to [.github/workflows/styles/Vocab/HMSVocab/accept.txt](.github/workflows/styles/Vocab/HMSVocab/accept.txt)

**Build Artifacts:**
- Post-build generates sitemap via `next-sitemap` (configured in [next-sitemap.js](next-sitemap.js))
- Search index is generated by [searchIndex.js](searchIndex.js) which calls `updateIndex()` from [lib/algolia/getRecords.ts](lib/algolia/getRecords.ts)

## Architecture

### Documentation Structure

**File System Routing:**
- All docs are MDX files in `/docs` directory, organized by platform:
- `/docs/android/` - Android SDK docs
- `/docs/ios/` - iOS SDK docs
- `/docs/javascript/` - JavaScript SDK docs
- `/docs/flutter/` - Flutter SDK docs
- `/docs/react-native/` - React Native SDK docs
- `/docs/server-side/` - Server-side API docs
- `/docs/prebuilt/` - Prebuilt UI docs
- `/docs/get-started/` - Getting started guides
- `/docs/api-reference/` - API reference docs

**MDX Processing Pipeline:**
The main routing is handled by [pages/[...slug].tsx](pages/[...slug].tsx):
1. **Static Generation:** Uses `getStaticPaths()` to find all MDX files via [lib/mdxUtils.ts](lib/mdxUtils.ts)
2. **Content Bundling:** Uses `mdx-bundler` to compile MDX with plugins
3. **Rendering:** MDX components defined in [components/MDXComponents.tsx](components/MDXComponents.tsx)

**Remark/Rehype Plugin Chain:**
- `imagePlugin` - Custom image handling
- `remarkGfm` - GitHub Flavored Markdown
- `remarkA11yEmoji` - Accessible emoji
- `remarkCodeHeader` - Code block headers
- `withTableofContents` - TOC generation
- `rehypeRaw` - Raw HTML support
- `mdxPrism` - Syntax highlighting

### FrontMatter Requirements

Every MDX file must include:
```yaml
---
title: Page Title # Used for SEO and page heading
nav: 14 # Sidebar ordering (can be decimal for insertion)
---
```

**Note:** If no `nav` value is specified, it defaults to `Infinity` (appears at the end)

### Navigation System

Navigation is auto-generated from the file system:
- [lib/mdxUtils.ts](lib/mdxUtils.ts) scans all MDX files
- `getAllDocs()` extracts frontmatter (title, nav, description)
- `getNavfromDocs()` builds nested navigation structure using dot notation
- Sidebar ordering controlled by `nav` frontmatter value

### Custom Components

MDX files have access to auto-imported components from [components/MDXComponents.tsx](components/MDXComponents.tsx):

**Note Components:**
```mdx
> Default note (uses blockquote)

<Note type='success'>Success message</Note>
<Note type='error'>Error message</Note>
<Note type='warning'>Warning message</Note>
```

**Tabs:**
```mdx
<Tabs id="quality-level" items={['Java', 'Kotlin']} />
<Tab id='quality-level-0'>
Java code here
</Tab>
<Tab id='quality-level-1'>
Kotlin code here
</Tab>
```
**Important:** Tab IDs must match the Tabs `id` with index suffix

**Other Components:**
- `<Codesandbox id="ue1k4" />` - Embed CodeSandbox
- `<Code />` - Automatic code wrapper with copy button
- API request components: `<BaseRequest>`, `<GetRequest>`, `<PostRequest>`, `<DeleteRequest>`, `<EndpointRequest>`
- Layout components: `<FlexContainer>`, `<CollapsibleRoot>`, `<CollapsiblePreview>`, `<CollapsibleContent>`, `<StepsContainer>`, `<StepsToc>`

### Content Reuse

To avoid duplicating common content:
1. Create a file in `/common` directory (`.md` or `.mdx`)
- Use `.md` for plain Markdown
- Use `.mdx` if embedding JSX (escape `<>{}` with backslash or use backticks)
2. Import as PascalCase: `import Test from '@/common/test.md'`
3. Use in MDX: `<Test />`

### Version Management

Release versions are tracked in [releases.js](releases.js) and automatically updated:
- `yarn updatereleases` scans `/docs` for latest version numbers
- Uses [lib/getNewReleases.js](lib/getNewReleases.js) to extract versions from release note files
- Updates `releases.js` with platform versions and dates

### Redirects

Extensive redirect configuration in [next.config.js](next.config.js):
- **Rewrites** (lines 33-56): URL normalization for case-sensitive paths
- **Redirects** (lines 57-1550): Legacy URL redirects, doc reorganization redirects
- Pattern: Old doc structure redirected to new `how-to-guides` organization

**Key redirect patterns:**
- `/concepts/` → `/get-started/`
- Platform-specific `/:platform/v2/guides:path` → `/:platform/v2/get-started:path`
- Feature docs reorganized under `how-to-guides` with categorization

### Algolia Search

Search powered by Algolia:
- Index built during `yarn build` via [searchIndex.js](searchIndex.js)
- Implementation in [lib/algolia/](lib/algolia/)
- Search UI components in [components/](components/)

## File Naming Conventions

**DO:**
- Use kebab-case for filenames: `my-feature.mdx`
- Keep titles in frontmatter, not filename

**DON'T:**
- Use decimal numbers in filenames: ~~`v-1.3.2.mdx`~~ (use frontmatter `title` instead)
- Use ampersands: ~~`tips-&-tricks.mdx`~~ (breaks sitemap generation)
- Use bold in headers: ~~`## **Don't**~~
- Use emojis in filenames (but DO use them in content!)

## Adding New Documentation

### To Existing Section
1. Create MDX file in appropriate `/docs/[platform]/` subdirectory
2. Add frontmatter with `title` and `nav` value
3. Folder names become section headers (capitalized, hyphens → spaces)

### New Documentation Version
To add a new version (e.g., `v3`):
1. Create `/docs/v3` folder
2. Create `/pages/v3/index.tsx` with redirect:
```tsx
import redirect from '@/lib/redirect';
export default redirect('/v3/100ms-v3/basics');
```
3. Add MDX files following existing structure

## Build Configuration

**Node Version:** `^22` (specified in [package.json:36](package.json#L36))

**Key Dependencies:**
- `next@12.3.4` - Next.js framework
- `mdx-bundler@^9.2.1` - MDX compilation
- `@100mslive/react-ui` & `@100mslive/react-icons` - 100ms UI library
- `algoliasearch` - Search functionality
- `shiki` - Syntax highlighting

**Webpack Config:**
- Raw loader for `.md` files (allows importing as strings)
- ESM externals set to 'loose' for compatibility

## Styling

All styles use CSS variables (tokens) defined in [styles/theme.css](styles/theme.css):
- Tokens prefixed with `token` control syntax highlighting
- Fully customizable theme via CSS variables
- No CSS-in-JS, plain CSS with variables

## Content Guidelines

From [README.md](README.md):

**DO:**
- Use emojis in content
- Maintain header hierarchy (H1 → H2 → H3)
- Add language attributes to code blocks for syntax highlighting
- Use https://tableconvert.com/ for Markdown tables

Check failure on line 220 in CLAUDE.md

View workflow job for this annotation

GitHub Actions / vale

[vale] CLAUDE.md#L220

[Vale.Spelling] Did you really mean 'arkdown'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'arkdown'?", "location": {"path": "CLAUDE.md", "range": {"start": {"line": 220, "column": 38}}}, "severity": "ERROR"}

**DON'T:**
- Use bold in headers
- Use decimal numbers in filenames
10 changes: 6 additions & 4 deletions docs/android/v2/how-to-guides/captions/live-captions.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Live Transcription for Conferencing (Closed Captions - Beta)
title: Live Transcription for Conferencing (Closed Captions)
nav: 15.1
---

Expand All @@ -10,6 +10,7 @@ nav: 15.1
- Minimum 100ms SDK version required is `2.9.54`

## Checking if captions are enabled in a room.

To check if WebRTC (not hls) captions are enabled in a room. Look for any transcriptions being in a started state in the room data.
`val captionsEnabled = hmsSDK.getRoom()?.transcriptions?.find { it.state == TranscriptionState.STARTED } != null`

Expand All @@ -20,12 +21,13 @@ Implement `fun onTranscripts(transcripts: HmsTranscripts)` in the `HMSUpdateList
For an example implementation look at [`TranscriptionUseCase.kt`](https://github.com/100mslive/100ms-android/blob/ac66fa76503ec990322c293f8ce6a504c0c3c444/room-kit/src/main/java/live/hms/roomkit/ui/meeting/TranscriptionUseCase.kt#L44) in the 100ms-android [sample app](https://github.com/100mslive/100ms-android/blob/ac66fa76503ec990322c293f8ce6a504c0c3c444/room-kit/src/main/java/live/hms/roomkit/ui/meeting/TranscriptionUseCase.kt#L44) repository.

## Toggling Live Transcripts

To save on cost, live transcriptions can be disabled for everyone at runtime and toggled on again when required.

```kotlin
// Start Real Time Transcription
hmsSDK.startRealTimeTranscription(

TranscriptionsMode.CAPTION,

object : HMSActionResultListener {
Expand All @@ -40,9 +42,9 @@ hmsSDK.startRealTimeTranscription(
hmsSDK.stopRealTimeTranscription(

TranscriptionsMode.CAPTION,

object : HMSActionResultListener {
override fun onError(error: HMSException) {}
override fun onSuccess() {}
})
```
```
53 changes: 53 additions & 0 deletions docs/android/v2/quickstart/prebuilt-android.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,58 @@ class HMSPrebuiltOptions {
}

```


## Customizing Foreground Notification


When your app goes to the background during an active call, a foreground service notification is displayed to keep the call alive. You can customize this notification to match your app's branding using `CallNotificationConfig`.

### Available Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `smallIcon` | `@DrawableRes Int?` | Default icon | Small icon shown in status bar and notification header. Should be monochrome for best results. |
| `largeIcon` | `@DrawableRes Int?` | Default icon | Large icon shown on the right side of the notification. Can be full-color. |
| `title` | `String?` | "Call in progress" | Notification title text. |
| `text` | `String?` | "Tap to return to the call" | Notification body text. |
| `channelName` | `String?` | "Ongoing Call" | Name for the notification channel (visible in system settings). |
| `channelDescription` | `String?` | Default description | Description for the notification channel. |

### Example Usage

```kotlin
import live.hms.roomkit.ui.HMSRoomKit
import live.hms.roomkit.ui.HMSPrebuiltOptions
import live.hms.roomkit.ui.notification.CallNotificationConfig

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val roomCode = "<room-code>"

val notificationConfig = CallNotificationConfig(
smallIcon = R.drawable.my_app_logo, // Your app's notification icon
largeIcon = R.drawable.my_app_icon, // Optional larger icon
title = "MyApp - Call Active",
text = "Tap to return to your call",
channelName = "MyApp Calls",
channelDescription = "Notifications for ongoing calls"
)

val options = HMSPrebuiltOptions(
userName = "<my-name>",
callNotificationConfig = notificationConfig
)

HMSRoomKit.launchPrebuilt(roomCode, this, options)
}
}
```

All parameters are optional. If not provided, default values will be used.


## Sample Code
The sample project for the library is at https://github.com/100mslive/AndroidPrebuiltDemo#readme you can download the app for it [here](https://github.com/100mslive/AndroidPrebuiltDemo/suites/14604646490/artifacts/827757135).
22 changes: 21 additions & 1 deletion docs/android/v2/release-notes/release-notes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,30 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie
| live.100ms:virtual-background: |<AndroidSdkVersionShield />|
| live.100ms:hms-noise-cancellation-android: | <AndroidSdkVersionShield /> |

## v2.9.80 - 2026-02-10
### Fixed
* Bug fix for image capture callback reliability during camera operations.

## v2.9.79 - 2025-11-24
### Fixed
* Bug fix to handle NPE at room leave.

## v2.9.78 - 2025-10-15
### Fixed
* Fix for memory leak issue

## v2.9.77 - 2025-08-07
### Added
* Support for 16kb page size

## v2.9.76 - 2025-04-16
### Fixed
* Screen share rotation crash fix on android 12 and above

## v2.9.74 - 2025-03-3
### Added
* Renamed the namespace of all WebRTC-related files to prevent conflicts with files from other WebRTC vendors when integrated into an application.
### Breaking
### Breaking
* Due to the namespace changes, imports for WebRTC files must be updated from org.webrtc to hms.webrtc throughout the application, if present

## v2.9.73 - 2025-02-12
Expand Down
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 @@ -1432,9 +1432,9 @@ If you want to stop HLS streaming. The passed in arguments is not considered at

#### Parameters

| Name | Type | Description |
| :-------- | :--------------------------------------------------------------- | :---------------------------------------------------- |
| `params?` | [`HLSConfig`](/api-reference/javascript/v2/interfaces/HLSConfig) | HLSConfig - HLSConfig object with the required fields |
| Name | Type | Description |
| :-------- | :-------------- | :---------------------------------------------------- |
| `params?` | `StopHLSConfig` | HLSConfig - HLSConfig object with the required fields |

#### Returns

Expand Down
Loading