@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.
Files changed (41) hide show
  1. package/README.md +55 -55
  2. package/apps/meet/[token].tsx +341 -341
  3. package/apps/meet/_CallControls.tsx +463 -394
  4. package/apps/meet/_CallView.tsx +891 -848
  5. package/apps/meet/_DiagnosticsWindow.tsx +80 -0
  6. package/apps/meet/_MeetLobby.tsx +224 -224
  7. package/apps/meet/_ParticipantTile.tsx +169 -169
  8. package/apps/meet/_ParticipantsDrawer.tsx +10 -104
  9. package/apps/meet/_SettingsModal.tsx +152 -0
  10. package/apps/meet/_icons.tsx +80 -82
  11. package/apps/meet/_meetApi.ts +212 -212
  12. package/apps/shared/media/filters/VideoFilterProcessor.ts +408 -408
  13. package/apps/shared/media/filters/mlModels.ts +174 -174
  14. package/apps/shared/push/GuestSignalingClient.ts +359 -359
  15. package/apps/shared/relay/RelayClient.ts +7 -2
  16. package/apps/shared/webrtc/MeshConnectionManager.ts +949 -795
  17. package/apps/shared/webrtc/types.ts +247 -222
  18. package/dist/apps/meet/_CallControls.d.ts +19 -9
  19. package/dist/apps/meet/_CallControls.js +28 -10
  20. package/dist/apps/meet/_CallView.d.ts +14 -2
  21. package/dist/apps/meet/_CallView.js +27 -2
  22. package/dist/apps/meet/_DiagnosticsWindow.d.ts +25 -0
  23. package/dist/apps/meet/_DiagnosticsWindow.js +45 -0
  24. package/dist/apps/meet/_ParticipantsDrawer.d.ts +10 -21
  25. package/dist/apps/meet/_ParticipantsDrawer.js +9 -39
  26. package/dist/apps/meet/_SettingsModal.d.ts +28 -0
  27. package/dist/apps/meet/_SettingsModal.js +59 -0
  28. package/dist/apps/meet/_icons.d.ts +1 -1
  29. package/dist/apps/meet/_icons.js +1 -1
  30. package/dist/apps/shared/relay/RelayClient.d.ts +6 -1
  31. package/dist/apps/shared/relay/RelayClient.js +7 -2
  32. package/dist/apps/shared/webrtc/MeshConnectionManager.d.ts +55 -2
  33. package/dist/apps/shared/webrtc/MeshConnectionManager.js +153 -9
  34. package/dist/apps/shared/webrtc/types.d.ts +25 -1
  35. package/dist/lib/util/RedisRelayBus.js +61 -5
  36. package/dist/lib/util/RedisRelayBus.js.map +1 -1
  37. package/dist/lib/util/RelayHub.js +10 -3
  38. package/dist/lib/util/RelayHub.js.map +1 -1
  39. package/dist/types/util/RedisRelayBus.d.ts +45 -6
  40. package/dist/types/util/RelayHub.d.ts +9 -2
  41. package/package.json +208 -208
package/README.md CHANGED
@@ -1,55 +1,55 @@
1
- # RapidMX: Video Conferencing
2
-
3
- [![CI](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml)
4
- [![Coverage Status](https://coveralls.io/repos/github/RapidMX/meet-plugin/badge.svg?branch=main)](https://coveralls.io/github/RapidMX/meet-plugin?branch=main)
5
- [![npm version](https://img.shields.io/npm/v/@rapidmx/meet-plugin)](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
+ [![CI](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/RapidMX/meet-plugin/actions/workflows/build.yml)
4
+ [![Coverage Status](https://coveralls.io/repos/github/RapidMX/meet-plugin/badge.svg?branch=main)](https://coveralls.io/github/RapidMX/meet-plugin?branch=main)
5
+ [![npm version](https://img.shields.io/npm/v/@rapidmx/meet-plugin)](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`.