@ai-matrx/meet 0.7.84 → 0.7.85

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,5 +1,31 @@
1
1
  # Changelog — `@ai-matrx/meet`
2
2
 
3
+ ## 0.7.85
4
+ ### Unreleased
5
+
6
+ **The headless boundary (Meet duplicates CORE-DESIGN step S1). Breaking for imports; behavior unchanged.**
7
+
8
+ - New subpaths: `@ai-matrx/meet/core` (`.` re-exports it) and `@ai-matrx/meet/skins/meet`.
9
+ - Today's in-call UI is **Meet skin v0** under `src/skins/meet/`, reading the core only through the
10
+ facade (`useMeetCore()` + headless re-exports), enforced by `scripts/check-skin-imports.mjs`
11
+ (fails the build; self-test plants a bad import in a temp copy).
12
+ - `<MeetingRoom>` → `<MeetingSkinRoot>` (same props). The in-call parts (`ControlBar`,
13
+ `ParticipantTile`, `Captions`, `ConsentNotice`, `AttendanceNotice`, `RecordingIndicator`,
14
+ `HostMenu`, `Stage`, panels, icons, collab panels) moved from `/react` to `/skins/meet`.
15
+ `/react` keeps the provider, hooks, `useMeetCore`, `MeetRoot`, the record surfaces
16
+ (`MeetingRecordView`, `RecordingPlayer`, `GuestRecordAccessControl`) and the ringing surface
17
+ (`IncomingCallHost`, `IncomingCallCard`).
18
+ - Collab/caption hook logic moved into the core (`availableActivities`, `activityAttention`,
19
+ `performCollab`, `moveToRoom`, `untranslatedLines`, `nextTranslationBatch`,
20
+ `setCaptionLanguage`, `takePanelRequest`, `takeMoveRequest`); the hooks are thin selectors.
21
+ `MEET_REACTIONS` is a core export.
22
+ - Deleted (no consumer): `MeetingList`, `ScheduleMeeting`, `CallButton`.
23
+ - The provider's React context now lives in the globalThis slot so `/react` and `/skins/meet`
24
+ bundles share it.
25
+
26
+ **Consumer action:** `MeetingRoom` → `MeetingSkinRoot` from `/react`; import in-call parts and icons
27
+ from `@ai-matrx/meet/skins/meet`.
28
+
3
29
  ## 0.7.84
4
30
  ### Unreleased
5
31
 
package/README.md CHANGED
@@ -86,7 +86,7 @@ them. Authenticated users skip the prompt; host powers require authentication.
86
86
 
87
87
  This is enforced by TYPES, not by discipline: `MeetIdentity.userId` is `UserId | null`, and every
88
88
  operation that needs an account takes a `UserId`. A guest provider has **no call center at all** —
89
- so `<CallButton>` renders nothing rather than a disabled button (no dead ends).
89
+ so `useCalls().canCall` is false and no call control renders rather than a disabled button (no dead ends).
90
90
 
91
91
  ### 6. Admission is a server decision. Roles come from the token.
92
92
 
@@ -160,12 +160,17 @@ will refuse.
160
160
 
161
161
  ## The one-hour integration (R7)
162
162
 
163
+ Four subpaths (CORE-DESIGN §5.1): `@ai-matrx/meet/core` (framework-free; `@ai-matrx/meet`
164
+ re-exports it), `@ai-matrx/meet/react` (provider, hooks, `<MeetingSkinRoot>`, the record and
165
+ ringing surfaces), and one per skin — `@ai-matrx/meet/skins/meet` holds the Meet skin's parts
166
+ (`ControlBar`, `ParticipantTile`, `Captions`, …) for a host layout that composes them.
167
+
163
168
  ```tsx
164
169
  import "@ai-matrx/meet/tokens.css"; // defaults — override these with your brand
165
170
  import "./brand.css";
166
171
  import "@ai-matrx/meet/styles.css"; // structural, last
167
172
 
168
- import { MeetProvider, IncomingCallHost, MeetingRoom, CallButton } from "@ai-matrx/meet/react";
173
+ import { MeetProvider, IncomingCallHost, MeetingSkinRoot, useCalls } from "@ai-matrx/meet/react";
169
174
 
170
175
  export function App({ children }) {
171
176
  return (
@@ -185,11 +190,12 @@ export function App({ children }) {
185
190
  );
186
191
  }
187
192
 
188
- // Anywhere a person appears:
189
- <CallButton person={{ userId, displayName, avatarUrl }} />
193
+ // Anywhere a person appears: your own control, calling through the hook.
194
+ const calls = useCalls();
195
+ calls.canCall && <button onClick={() => calls.call([userId], "video")}>Call</button>
190
196
 
191
- // Your meeting route:
192
- <MeetingRoom roomName={roomName} meetingId={meetingId} />
197
+ // Your meeting route — the skin root chooses the viewer's skin (Meet until S9):
198
+ <MeetingSkinRoot roomName={roomName} meetingId={meetingId} />
193
199
  ```
194
200
 
195
201
  The stage fills the viewport (`100dvh`). To run a meeting inside a box — a board tile, a split
@@ -210,7 +216,7 @@ lane. A guest has no account, so that mount reads no session at all:
210
216
  ```tsx
211
217
  <MeetProvider client={supabase} baseUrl={AIDREAM_URL} organizationId={orgId}
212
218
  guestName={typedName} accessToken={async () => null}>
213
- <MeetingRoom roomName={meeting.roomName} slug={slug} />
219
+ <MeetingSkinRoot roomName={meeting.roomName} slug={slug} />
214
220
  </MeetProvider>
215
221
  ```
216
222