@ai-matrx/meet 0.7.2 → 0.7.5

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/CHANGELOG.md CHANGED
@@ -1,8 +1,96 @@
1
1
  # Changelog — `@ai-matrx/meet`
2
2
 
3
+ ## 0.7.5
4
+ ### Unreleased
5
+
6
+ ### Meet wave 2 — in-meeting parity with Zoom and Google Meet
7
+
8
+ - **Host moderation now actually happens — through the server.** Through 0.7.x "Mute" and
9
+ "Remove" were published on the room's data plane (`mx.host`) and nothing in the platform
10
+ listened: the buttons did nothing. Every host power is now `POST /api/v1/meet/moderate`
11
+ (`MEET_ROUTES.moderate`), decided by aidream from the meeting itself and performed by the SFU:
12
+ mute, stop video, stop screen share, mute everyone, ask to unmute (one / everyone), spotlight
13
+ for everyone, lower a hand / all hands, make or remove a co-host, make someone the host
14
+ (host only; the previous host stays a co-host), rename (self, or a host renaming others),
15
+ remove (cannot rejoin), report. New `core/in-room.ts` (`createInRoomClient`,
16
+ `ModerationAction`, `MODERATION_ACTIONS`), exposed as `MeetHost.inRoom`.
17
+ `useHostControls()` gains `run(request)`, `isOwner`, `busy`, and a shared `notice` (the
18
+ server's sentence, kept in the snapshot as `actionNotice`).
19
+ - **In-meeting chat is SAVED.** A message to everyone goes through `POST /api/v1/meet/chat`,
20
+ is stored in `communication.meet_chat_messages`, and reaches the room as the server's
21
+ `matrx.meet.chat`; every join reads the history (`GET ?meeting_id=`), so a late joiner sees
22
+ what was said. It shows at once as pending, then saved; a refusal stays visible with the
23
+ server's reason. **Private messages** to one person: `engine.sendPrivateChat(to, text)` /
24
+ `useRoom().sendPrivateChat` — data plane only, addressed to that identity, never saved.
25
+ - **Spotlight for everyone** rides the room's metadata (server-set, delivered on join);
26
+ `snapshot.spotlight`, `computeStage({ spotlight })` — a local pin outranks it, a screen share
27
+ outranks both.
28
+ - **Raise hand queue** — hands carry when they went up (`MeetParticipant.handRaisedAt`),
29
+ `useHandQueue()` orders them, a raised hand is re-announced (with its original time) to a late
30
+ joiner, and a host lowers one or all.
31
+ - **Reactions** — a reaction picker in the control bar (Meet's nine), and the overlay is finally
32
+ mounted (`<MeetingOverlays>` inside `<ControlBar>`).
33
+ - **What a host did to me** — `matrx.meet.moderation` packets become `snapshot.moderationNotice`
34
+ ("Ana is asking you to unmute" with an Unmute button; muted; removed). A demotion re-grants
35
+ the local role, so an old host loses host controls at once.
36
+ - **Noise suppression and background blur / picture** — `engine.setEffects()` /
37
+ `useMediaEffects()`, applied live and remembered per browser (`createWebEffectsStorage`);
38
+ background effects via `@livekit/track-processors` (new dependency, imported lazily), absent
39
+ on a browser without WebGL2.
40
+ - **Devices** — the chosen microphone / camera / speaker are now APPLIED on join (the pickers
41
+ used to store a choice nothing read); `<SettingsPanel>` switches them live with a microphone
42
+ level meter and a speaker test; the pre-join screen has a live camera preview (with the chosen
43
+ background), a mic level meter, a speaker picker + test, and the effects.
44
+ - **Connection quality** — `<QualityBars>` on every tile and People row.
45
+ - **People panel** — search, the hand queue with Lower all, Mute all / Ask all to unmute, and a
46
+ per-person menu (`<PersonMenu>`, also on every tile) with every action the actor may take.
47
+ - **Keyboard shortcuts** (Meet's chords): ⌘/Ctrl+D mic, ⌘/Ctrl+E camera, ⌘/Ctrl+Alt+H hand,
48
+ ⌘/Ctrl+Alt+C chat, ⌘/Ctrl+Alt+P people, Shift+? the sheet (`useMeetShortcuts`,
49
+ `MEET_SHORTCUTS`, `<ShortcutsSheet>`).
50
+ - **Exported for host layouts**: `HostMenu` (lock / end — the Board layout can now render it),
51
+ `MeetingOverlays`, `PersonMenu`, `SettingsPanel`, `ShortcutsSheet`, `QualityBars`,
52
+ `MEET_REACTIONS`, new icons.
53
+
54
+ ### Removed
55
+
56
+ - `RoomEngine.publishHostAction`, `HostAction`, `DATA_TOPICS.hostAction` — a control plane
57
+ nobody listened to (see above). `RoomEngine.sendChat` → `MeetHost.inRoom.sendChat` (saved).
58
+
59
+ ### Consumer action
60
+
61
+ matrx-frontend: bump `@ai-matrx/meet`; the Board header renders `<HostMenu>` beside its host
62
+ controls. Everything else arrives through `<ControlBar>`, which both layouts already render.
63
+ Requires the aidream routes `/v1/meet/moderate` and `/v1/meet/chat`.
64
+
65
+ ## 0.7.4
66
+
67
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
68
+ `git diff npm/meet/v0.7.3..npm/meet/v0.7.4 -- apps/shared/meet`).
69
+ No source changes intended and no consumer action required.
70
+
71
+ ## 0.7.3
72
+
73
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
74
+ `git diff npm/meet/v0.7.2..npm/meet/v0.7.3 -- apps/shared/meet`).
75
+ No source changes intended and no consumer action required.
76
+
3
77
  ## 0.7.2
4
78
  ### Unreleased
5
79
 
80
+ - **Meet wave 1 — meetings you can manage day to day.** New `MeetRepository` methods over the
81
+ new database doors: `scheduleMeeting`, `updateMeeting` (JSON patch, version compare-and-swap),
82
+ `cancelMeeting`, `archiveMeeting`, `restoreMeeting`, `setOccurrence` (cancel / move / restore one
83
+ occurrence of a series), `meetingOccurrences`, `occurrencesBetween` (the Upcoming list),
84
+ `invitees`, `addInvitees`, `setInviteeRole`, `removeInvitee`, `respond`, and the account-less
85
+ `invitationByToken` / `respondByToken`. New server calls `announceMeeting` (send invitations /
86
+ updates / cancellations with `.ics`, re-queue reminders — call after every save) and
87
+ `pushMeetingToGoogleCalendar` (gated by the server). `MeetingRecord` gains `timeZone`, `agenda`,
88
+ `recurrenceRule`, `joinBeforeHost`, `cancelledAt`, `cancellationReason`, `deletedAt`,
89
+ `calendarSequence`, `version` (optional in the type). New `MeetErrorCode` `cancelled` (a join to
90
+ a cancelled meeting, 410, with the server's sentence); `40001` / `55000` now map to `conflict`.
91
+ `MEET_ROUTES.meetingAnnounce` / `meetingGoogleCalendar` + `meetingPath()`. Consumer action: none
92
+ required; the management screens (matrx-frontend, wave 1 UI) adopt the new methods.
93
+
6
94
  - **A meeting link works for people from any organization.** The server now admits a
7
95
  signed-in person from another organization who holds the link (guest rules: lobby,
8
96
  host admission). The durable feed's meeting re-read fell over for them, because RLS