@rapidmx/meet-plugin 0.13.1 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -55
- package/apps/meet/[token].tsx +341 -341
- package/apps/meet/_CallControls.tsx +463 -394
- package/apps/meet/_CallView.tsx +891 -848
- package/apps/meet/_DiagnosticsWindow.tsx +80 -0
- package/apps/meet/_MeetLobby.tsx +224 -224
- package/apps/meet/_ParticipantTile.tsx +169 -169
- package/apps/meet/_ParticipantsDrawer.tsx +10 -104
- package/apps/meet/_SettingsModal.tsx +152 -0
- package/apps/meet/_icons.tsx +80 -82
- package/apps/meet/_meetApi.ts +212 -212
- package/apps/shared/media/filters/VideoFilterProcessor.ts +408 -408
- package/apps/shared/media/filters/mlModels.ts +174 -174
- package/apps/shared/push/GuestSignalingClient.ts +359 -359
- package/apps/shared/relay/RelayClient.ts +7 -2
- package/apps/shared/webrtc/MeshConnectionManager.ts +949 -795
- package/apps/shared/webrtc/types.ts +247 -222
- package/dist/apps/meet/_CallControls.d.ts +19 -9
- package/dist/apps/meet/_CallControls.js +28 -10
- package/dist/apps/meet/_CallView.d.ts +14 -2
- package/dist/apps/meet/_CallView.js +27 -2
- package/dist/apps/meet/_DiagnosticsWindow.d.ts +25 -0
- package/dist/apps/meet/_DiagnosticsWindow.js +45 -0
- package/dist/apps/meet/_ParticipantsDrawer.d.ts +10 -21
- package/dist/apps/meet/_ParticipantsDrawer.js +9 -39
- package/dist/apps/meet/_SettingsModal.d.ts +28 -0
- package/dist/apps/meet/_SettingsModal.js +59 -0
- package/dist/apps/meet/_icons.d.ts +1 -1
- package/dist/apps/meet/_icons.js +1 -1
- package/dist/apps/shared/relay/RelayClient.d.ts +6 -1
- package/dist/apps/shared/relay/RelayClient.js +7 -2
- package/dist/apps/shared/webrtc/MeshConnectionManager.d.ts +55 -2
- package/dist/apps/shared/webrtc/MeshConnectionManager.js +153 -9
- package/dist/apps/shared/webrtc/types.d.ts +25 -1
- package/dist/lib/util/RedisRelayBus.js +61 -5
- package/dist/lib/util/RedisRelayBus.js.map +1 -1
- package/dist/lib/util/RelayHub.js +10 -3
- package/dist/lib/util/RelayHub.js.map +1 -1
- package/dist/types/util/RedisRelayBus.d.ts +45 -6
- package/dist/types/util/RelayHub.d.ts +9 -2
- package/package.json +208 -208
package/README.md
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
# RapidMX: Video Conferencing
|
|
2
|
-
|
|
3
|
-
[](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml)
|
|
4
|
-
[](https://coveralls.io/github/RapidMX/meet-plugin?branch=main)
|
|
5
|
-
[](https://www.npmjs.com/package/@rapidmx/meet-plugin)
|
|
6
|
-
|
|
7
|
-
Private and public WebRTC video meetings for a [RapidMX server](https://github.com/RapidMX/server). A mailbox owner
|
|
8
|
-
turns on video conferencing for a calendar event; a private meeting mints one link per invitee (inserted into the
|
|
9
|
-
invite's location and body), a public meeting shares a single link. Joining needs no account: a guest picks a name
|
|
10
|
-
(auto-filled from their RapidMX profile when signed in), checks their camera and microphone, and enters. Calls are
|
|
11
|
-
peer-to-peer WebRTC (no media server). Each pair of participants uses the best path that works, tried in order:
|
|
12
|
-
|
|
13
|
-
1. **Direct peer-to-peer**, the preferred path.
|
|
14
|
-
2. **Relayed through a configured TURN server**, for a participant a direct connection can't reach. A plain `turn:`
|
|
15
|
-
address is offered over both UDP and TCP, so a network that blocks UDP can still reach it.
|
|
16
|
-
3. **Proxied by the RapidMX server itself over a WebSocket**, the last resort for a participant whose network lets
|
|
17
|
-
nothing but ordinary HTTPS out. Video is lower quality and sound may lag; it needs a browser with WebCodecs, and
|
|
18
|
-
can be turned off with the `mail:videoconf:relay:enabled` setting. A tile says when a participant is on the TURN
|
|
19
|
-
relay or the server relay.
|
|
20
|
-
|
|
21
|
-
Participants can put **video filters** on their camera from the lobby or during the call: a blurred or custom
|
|
22
|
-
background, black and white / sepia / night vision / pixelate looks, and face accessories. They run entirely in the
|
|
23
|
-
browser (MediaPipe, loaded only when a filter needs it - from public CDNs by default, or from your own server with
|
|
24
|
-
`mail:videoconf:effects:assets_url`), and the devices, on/off state and filters a participant chose are remembered in
|
|
25
|
-
their browser's `localStorage` for next time.
|
|
26
|
-
|
|
27
|
-
This plugin's `apps/` also ship the public join/lobby/in-call pages and the personal Settings screen - see
|
|
28
|
-
`package.json`'s `rapidmx.plugin.ui` for exactly what's mounted where. Its `ui.appRail` entry adds a **Meet** button
|
|
29
|
-
to the web client's app rail, shown only for a user who has a personal room: the entry's `resolveFrom`
|
|
30
|
-
(`/mail/video-meetings/personal-room`, i.e. `GET /api/mail/video-meetings/personal-room`) answers
|
|
31
|
-
`{ href: "/meet/<token>", label }` for the caller's personal room (the oldest still-active public meeting of the first
|
|
32
|
-
mailbox they own that has one) or 404 when there is none, in which case the button stays hidden.
|
|
33
|
-
|
|
34
|
-
## What it adds
|
|
35
|
-
|
|
36
|
-
_(Filled in as each phase lands - see `.claude/NOTES.md` for the running detail, and `RELEASE_NOTES.md` for the
|
|
37
|
-
full changelog.)_
|
|
38
|
-
|
|
39
|
-
**Phase 1 (backend data model, routes, signaling) - done.** A mailbox owner creates a `VideoMeeting` through
|
|
40
|
-
`/api/mail/video-meetings` - `private` (one join link minted per invitee) or `public` (one shared link) - and an
|
|
41
|
-
anonymous participant joins through `GET .../join/:token`, which hands back the meeting's public details, an ICE
|
|
42
|
-
server list (public STUN always, TURN when configured) and a short-lived guest token already authorized to
|
|
43
|
-
exchange WebRTC signaling on that one meeting's channel over the server's existing `/push` route. No new realtime
|
|
44
|
-
infrastructure and no UI yet - see `.claude/NOTES.md`'s dated entry for the full design.
|
|
45
|
-
|
|
46
|
-
## Development
|
|
47
|
-
|
|
48
|
-
Same layout and tooling as this project's other plugins (`@rapidmx/booking-plugin`, `@rapidmx/mapi-plugin`,
|
|
49
|
-
`@rapidmx/autodiscover-plugin`): `yarn install`, `yarn test:prod`, `yarn build`. `@rapidmx/restapi` and
|
|
50
|
-
`@rapidmx/web-client` are portal-linked in `package.json`'s `resolutions` during local development against a
|
|
51
|
-
matching working tree of those repos.
|
|
52
|
-
|
|
53
|
-
## License
|
|
54
|
-
|
|
55
|
-
MPL-2.0 - see `LICENSE`.
|
|
1
|
+
# RapidMX: Video Conferencing
|
|
2
|
+
|
|
3
|
+
[](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml)
|
|
4
|
+
[](https://coveralls.io/github/RapidMX/meet-plugin?branch=main)
|
|
5
|
+
[](https://www.npmjs.com/package/@rapidmx/meet-plugin)
|
|
6
|
+
|
|
7
|
+
Private and public WebRTC video meetings for a [RapidMX server](https://github.com/RapidMX/server). A mailbox owner
|
|
8
|
+
turns on video conferencing for a calendar event; a private meeting mints one link per invitee (inserted into the
|
|
9
|
+
invite's location and body), a public meeting shares a single link. Joining needs no account: a guest picks a name
|
|
10
|
+
(auto-filled from their RapidMX profile when signed in), checks their camera and microphone, and enters. Calls are
|
|
11
|
+
peer-to-peer WebRTC (no media server). Each pair of participants uses the best path that works, tried in order:
|
|
12
|
+
|
|
13
|
+
1. **Direct peer-to-peer**, the preferred path.
|
|
14
|
+
2. **Relayed through a configured TURN server**, for a participant a direct connection can't reach. A plain `turn:`
|
|
15
|
+
address is offered over both UDP and TCP, so a network that blocks UDP can still reach it.
|
|
16
|
+
3. **Proxied by the RapidMX server itself over a WebSocket**, the last resort for a participant whose network lets
|
|
17
|
+
nothing but ordinary HTTPS out. Video is lower quality and sound may lag; it needs a browser with WebCodecs, and
|
|
18
|
+
can be turned off with the `mail:videoconf:relay:enabled` setting. A tile says when a participant is on the TURN
|
|
19
|
+
relay or the server relay.
|
|
20
|
+
|
|
21
|
+
Participants can put **video filters** on their camera from the lobby or during the call: a blurred or custom
|
|
22
|
+
background, black and white / sepia / night vision / pixelate looks, and face accessories. They run entirely in the
|
|
23
|
+
browser (MediaPipe, loaded only when a filter needs it - from public CDNs by default, or from your own server with
|
|
24
|
+
`mail:videoconf:effects:assets_url`), and the devices, on/off state and filters a participant chose are remembered in
|
|
25
|
+
their browser's `localStorage` for next time.
|
|
26
|
+
|
|
27
|
+
This plugin's `apps/` also ship the public join/lobby/in-call pages and the personal Settings screen - see
|
|
28
|
+
`package.json`'s `rapidmx.plugin.ui` for exactly what's mounted where. Its `ui.appRail` entry adds a **Meet** button
|
|
29
|
+
to the web client's app rail, shown only for a user who has a personal room: the entry's `resolveFrom`
|
|
30
|
+
(`/mail/video-meetings/personal-room`, i.e. `GET /api/mail/video-meetings/personal-room`) answers
|
|
31
|
+
`{ href: "/meet/<token>", label }` for the caller's personal room (the oldest still-active public meeting of the first
|
|
32
|
+
mailbox they own that has one) or 404 when there is none, in which case the button stays hidden.
|
|
33
|
+
|
|
34
|
+
## What it adds
|
|
35
|
+
|
|
36
|
+
_(Filled in as each phase lands - see `.claude/NOTES.md` for the running detail, and `RELEASE_NOTES.md` for the
|
|
37
|
+
full changelog.)_
|
|
38
|
+
|
|
39
|
+
**Phase 1 (backend data model, routes, signaling) - done.** A mailbox owner creates a `VideoMeeting` through
|
|
40
|
+
`/api/mail/video-meetings` - `private` (one join link minted per invitee) or `public` (one shared link) - and an
|
|
41
|
+
anonymous participant joins through `GET .../join/:token`, which hands back the meeting's public details, an ICE
|
|
42
|
+
server list (public STUN always, TURN when configured) and a short-lived guest token already authorized to
|
|
43
|
+
exchange WebRTC signaling on that one meeting's channel over the server's existing `/push` route. No new realtime
|
|
44
|
+
infrastructure and no UI yet - see `.claude/NOTES.md`'s dated entry for the full design.
|
|
45
|
+
|
|
46
|
+
## Development
|
|
47
|
+
|
|
48
|
+
Same layout and tooling as this project's other plugins (`@rapidmx/booking-plugin`, `@rapidmx/mapi-plugin`,
|
|
49
|
+
`@rapidmx/autodiscover-plugin`): `yarn install`, `yarn test:prod`, `yarn build`. `@rapidmx/restapi` and
|
|
50
|
+
`@rapidmx/web-client` are portal-linked in `package.json`'s `resolutions` during local development against a
|
|
51
|
+
matching working tree of those repos.
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
MPL-2.0 - see `LICENSE`.
|