replicas-computer 0.2.1 → 0.2.2

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/dist/index.js CHANGED
@@ -2921,7 +2921,7 @@ async function computerStatusCommand() {
2921
2921
  }
2922
2922
 
2923
2923
  // src/version.ts
2924
- var COMPUTER_USE_VERSION = "0.2.1";
2924
+ var COMPUTER_USE_VERSION = "0.2.2";
2925
2925
  var COMPUTER_USE_PROTOCOL_VERSION = 1;
2926
2926
 
2927
2927
  // src/program.ts
@@ -46,6 +46,14 @@ var fitScreen = () => {
46
46
  var send = (message) => {
47
47
  if (socket?.readyState === WebSocket.OPEN) socket.send(JSON.stringify(message));
48
48
  };
49
+ var disconnect = () => {
50
+ clearTimeout(reconnectTimer);
51
+ reconnectTimer = void 0;
52
+ send({ type: "release" });
53
+ const previousSocket = socket;
54
+ socket = void 0;
55
+ previousSocket?.close();
56
+ };
49
57
  var resetVideoTrack = () => {
50
58
  void videoWriter?.close().catch(() => {
51
59
  });
@@ -174,6 +182,7 @@ var handleBinary = (data) => {
174
182
  }
175
183
  };
176
184
  var connect = () => {
185
+ if (document.visibilityState !== "visible") return;
177
186
  clearTimeout(reconnectTimer);
178
187
  socket?.close();
179
188
  showStatus(reconnectAttempt ? "reconnecting\u2026" : "connecting\u2026");
@@ -181,9 +190,11 @@ var connect = () => {
181
190
  nextSocket.binaryType = "arraybuffer";
182
191
  socket = nextSocket;
183
192
  nextSocket.addEventListener("open", () => {
193
+ if (socket !== nextSocket) return;
184
194
  reconnectAttempt = 0;
185
195
  });
186
196
  nextSocket.addEventListener("message", (event) => {
197
+ if (socket !== nextSocket) return;
187
198
  if (event.data instanceof ArrayBuffer) {
188
199
  handleBinary(event.data);
189
200
  return;
@@ -274,10 +285,15 @@ window.addEventListener("keyup", (event) => {
274
285
  window.addEventListener("blur", () => send({ type: "release" }));
275
286
  window.addEventListener("resize", fitScreen);
276
287
  window.addEventListener("online", connect);
288
+ document.addEventListener("visibilitychange", () => {
289
+ if (document.visibilityState === "hidden") {
290
+ disconnect();
291
+ return;
292
+ }
293
+ connect();
294
+ });
277
295
  window.addEventListener("pagehide", () => {
278
- clearTimeout(reconnectTimer);
279
- send({ type: "release" });
280
- socket?.close();
296
+ disconnect();
281
297
  screen.cancelVideoFrameCallback(frameCallback);
282
298
  videoDecoder?.close();
283
299
  audioDecoder?.close();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-computer",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Replicas workspace computer-use runtime",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",