@recallai/desktop-sdk 1.3.6 → 2.0.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/CHANGELOG.md +23 -1
- package/index.d.ts +10 -2
- package/index.js +21 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
### 2.0.1 [patch] (MacOS+Windows) - 2025-12-15
|
|
2
|
+
|
|
3
|
+
- Several crash fixes across macOS + windows
|
|
4
|
+
- Fixed an error when shutting down the sdk
|
|
5
|
+
- Fixed an issue capturing google meet meetings on windows when there are multiple windows
|
|
6
|
+
- Fixed an issue capturing teams on windows when using virtual desktops
|
|
7
|
+
- Streaming upload stability fixes
|
|
8
|
+
|
|
9
|
+
### 2.0.0 [major] (MacOS+Windows) 2025-12-03
|
|
10
|
+
|
|
11
|
+
- Captured data now is streamed to the Recall API backend rather than uploading after call
|
|
12
|
+
- Numerous crash fixes
|
|
13
|
+
- URL detection improvements for Google Meet and Teams
|
|
14
|
+
- Fix bug in Slack detection where changing microphones would prematurely end recording
|
|
15
|
+
- Fix bug where switching virtual desktops could prematurely end recordings on Safari
|
|
16
|
+
- Fix bug where Teams pre-join room was detected as a meeting
|
|
17
|
+
- Fix false positive Meet detections
|
|
18
|
+
- Don't prompt for permission to access Teams URL database if the app doesn't have permission
|
|
19
|
+
- Handle audio device errors more gracefully on Windows
|
|
20
|
+
- Support for Speechmatics realtime transcription
|
|
21
|
+
- Mitigation for cases when ScreenCaptureKit locks up
|
|
22
|
+
|
|
1
23
|
### 1.3.6 [patch] (Windows) - 2025-11-18
|
|
2
24
|
|
|
3
25
|
- Fixed an issue that would cause audio to not process properly depending on recording config.
|
|
@@ -105,4 +127,4 @@
|
|
|
105
127
|
|
|
106
128
|
### 1.0.0 [major] (MacOS+Windows) - 2025-07-24 (deprecated)
|
|
107
129
|
|
|
108
|
-
- Initial Changelog Entry
|
|
130
|
+
- Initial Changelog Entry
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type RecallAiSdkEvent = RecordingStartEvent | RecordingStopEvent | UploadProgressEvent | MeetingDetectedEvent | MeetingUpdatedEvent | MeetingClosedEvent | SdkStateChangeEvent | ErrorEvent | MediaCaptureStatusEvent | ParticipantCaptureStatusEvent | PermissionsGrantedEvent | RealtimeEvent | ShutdownEvent;
|
|
1
|
+
export type RecallAiSdkEvent = RecordingStartEvent | RecordingStopEvent | UploadProgressEvent | MeetingDetectedEvent | MeetingUpdatedEvent | MeetingClosedEvent | SdkStateChangeEvent | ErrorEvent | MediaCaptureStatusEvent | ParticipantCaptureStatusEvent | PermissionsGrantedEvent | RealtimeEvent | ShutdownEvent | LogEvent;
|
|
2
2
|
export type EventTypeToPayloadMap = {
|
|
3
3
|
'recording-started': RecordingStartEvent;
|
|
4
4
|
'recording-ended': RecordingStopEvent;
|
|
@@ -14,13 +14,14 @@ export type EventTypeToPayloadMap = {
|
|
|
14
14
|
'permission-status': PermissionStatusEvent;
|
|
15
15
|
'realtime-event': RealtimeEvent;
|
|
16
16
|
'shutdown': ShutdownEvent;
|
|
17
|
+
'log': LogEvent;
|
|
17
18
|
};
|
|
18
19
|
export type Permission = 'accessibility' | 'screen-capture' | 'microphone' | 'system-audio' | 'full-disk-access';
|
|
19
20
|
export interface RecallAiSdkWindow {
|
|
20
21
|
id: string;
|
|
21
22
|
title?: string;
|
|
22
23
|
url?: string;
|
|
23
|
-
platform
|
|
24
|
+
platform?: string;
|
|
24
25
|
}
|
|
25
26
|
export interface RecallAiSdkConfig {
|
|
26
27
|
api_url?: string;
|
|
@@ -103,6 +104,13 @@ export interface ShutdownEvent {
|
|
|
103
104
|
code: number;
|
|
104
105
|
signal: string;
|
|
105
106
|
}
|
|
107
|
+
export interface LogEvent {
|
|
108
|
+
level: 'debug' | 'info' | 'warning' | 'error';
|
|
109
|
+
message: string;
|
|
110
|
+
subsystem: string;
|
|
111
|
+
category: string;
|
|
112
|
+
window_id: string;
|
|
113
|
+
}
|
|
106
114
|
export declare function init(options: RecallAiSdkConfig): Promise<null>;
|
|
107
115
|
export declare function shutdown(): Promise<null>;
|
|
108
116
|
export declare function dumpAXTree(procName: string): Promise<any>;
|
package/index.js
CHANGED
|
@@ -74,8 +74,16 @@ const pendingCommands = {};
|
|
|
74
74
|
let lastOptions;
|
|
75
75
|
let remainingAutomaticRestarts = 10;
|
|
76
76
|
let unexpectedShutdown = false;
|
|
77
|
+
let exiting = false;
|
|
77
78
|
let logBuffer = [];
|
|
78
79
|
let logIndex = 0;
|
|
80
|
+
process.on("exit", () => {
|
|
81
|
+
exiting = true;
|
|
82
|
+
if (proc && !proc.killed) {
|
|
83
|
+
proc.kill();
|
|
84
|
+
proc = null;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
79
87
|
function appendError(error) {
|
|
80
88
|
lastErrorOut.push(error);
|
|
81
89
|
if (lastErrorOut.length > 100) {
|
|
@@ -172,7 +180,7 @@ function logError(...log) {
|
|
|
172
180
|
doLog("error", log);
|
|
173
181
|
}
|
|
174
182
|
function emitEvent(type, payload) {
|
|
175
|
-
if (type !== "upload-progress" && type !== "realtime-event") {
|
|
183
|
+
if (type !== "upload-progress" && type !== "realtime-event" && type !== "log") {
|
|
176
184
|
doLog("info", ["Receiving event: " + type + " | " + sortedStringify(payload)], false);
|
|
177
185
|
}
|
|
178
186
|
for (const listener of listeners) {
|
|
@@ -204,6 +212,16 @@ function startProcess() {
|
|
|
204
212
|
if (process.platform === "win32" && process.env.GLOBAL_GST_RECALL !== "1") {
|
|
205
213
|
envExtra["GST_PLUGIN_PATH"] = path.join(path.dirname(exe_path), "gstreamer-1.0");
|
|
206
214
|
}
|
|
215
|
+
if (process.platform === "darwin") {
|
|
216
|
+
try {
|
|
217
|
+
const electron = require('electron');
|
|
218
|
+
envExtra["EXE_NAME"] = electron?.app?.getBundleID?.();
|
|
219
|
+
}
|
|
220
|
+
catch { }
|
|
221
|
+
}
|
|
222
|
+
if (!envExtra["EXE_NAME"]) {
|
|
223
|
+
envExtra["EXE_NAME"] = path.basename(process.execPath);
|
|
224
|
+
}
|
|
207
225
|
const gst_dump_dir = process.env.RECALLAI_DESKTOP_SDK_DEV ? path.join(os.tmpdir(), "gst.nocommit") : os.tmpdir();
|
|
208
226
|
if (!fs.existsSync(gst_dump_dir)) {
|
|
209
227
|
try {
|
|
@@ -216,7 +234,7 @@ function startProcess() {
|
|
|
216
234
|
proc = (0, child_process_1.spawn)(exe_path, {
|
|
217
235
|
stdio: (process.platform === "darwin" ? ["pipe", "pipe", "pipe", "pipe"] : "pipe"),
|
|
218
236
|
env: {
|
|
219
|
-
GST_DEBUG: "2",
|
|
237
|
+
GST_DEBUG: "2,transcriber:4,rtewebsocketsink:4,rtewebhooksink:4,audiomixer:4,galleryview:4,dsdks3sink:5",
|
|
220
238
|
GST_DEBUG_DUMP_DOT_DIR: gst_dump_dir,
|
|
221
239
|
RUST_BACKTRACE: "1",
|
|
222
240
|
// "DYLD_INSERT_LIBRARIES":"/opt/homebrew/lib/libjemalloc.dylib",
|
|
@@ -291,7 +309,7 @@ function startProcess() {
|
|
|
291
309
|
rlStderr?.close();
|
|
292
310
|
rlStdout = null;
|
|
293
311
|
rlStderr = null;
|
|
294
|
-
if (code === 0 || signal === 'SIGINT') {
|
|
312
|
+
if (code === 0 || signal === 'SIGINT' || exiting) {
|
|
295
313
|
return;
|
|
296
314
|
}
|
|
297
315
|
logError(`Desktop SDK: Process exited with code ${code}, signal ${signal}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recallai/desktop-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Recall Desktop SDK",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
"@types/node": "^24.2.0",
|
|
21
21
|
"typescript": "^5.3.3"
|
|
22
22
|
},
|
|
23
|
-
"commit_sha": "
|
|
23
|
+
"commit_sha": "4cedfc8f22df6b62dbb38dec3c21983ff3bf383c"
|
|
24
24
|
}
|