Browse Source

Claude: Add a short delay before taking any screenshot

Alessandro Pignotti 6 months ago
parent
commit
0c567163b2
1 changed files with 12 additions and 10 deletions
  1. 12 10
      src/lib/WebVM.svelte

+ 12 - 10
src/lib/WebVM.svelte

@@ -352,11 +352,11 @@
 		}
 		return null;
 	}
-	async function yieldHelper()
+	async function yieldHelper(timeout)
 	{
 		return new Promise(function(f2, r2)
 		{
-			setTimeout(f2, 0);
+			setTimeout(f2, timeout);
 		});
 	}
 	async function kmsSendChar(textArea, charStr)
@@ -366,7 +366,7 @@
 		textArea.dispatchEvent(ke);
 		var ke = new KeyboardEvent("keyup");
 		textArea.dispatchEvent(ke);
-		await yieldHelper();
+		await yieldHelper(0);
 	}
 	async function handleTool(tool)
 	{
@@ -412,6 +412,8 @@
 			{
 				case "screenshot":
 				{
+					// Insert a 3 seconds delay unconditionally, the reference implementation uses 2
+					await yieldHelper(3000);
 					var delayCount = 0;
 					var display = document.getElementById("display");
 					var dc = get(displayConfig);
@@ -439,7 +441,7 @@
 								console.warn("Identical screenshot, rate limiting");
 								delayCount++;
 								// Wait some time and retry
-								await new Promise(function(f, r) { setTimeout(f, 5000); });
+								await yieldHelper(5000);
 								continue;
 							}
 						}
@@ -514,7 +516,7 @@
 							key = key.substr("shift+".length);
 							var ke = new KeyboardEvent("keydown", {keyCode: 0x10});
 							textArea.dispatchEvent(ke);
-							await yieldHelper();
+							await yieldHelper(0);
 							continue;
 						}
 						else if(key.startsWith("ctrl+"))
@@ -523,7 +525,7 @@
 							key = key.substr("ctrl+".length);
 							var ke = new KeyboardEvent("keydown", {keyCode: 0x11});
 							textArea.dispatchEvent(ke);
-							await yieldHelper();
+							await yieldHelper(0);
 							continue;
 						}
 						else if(key.startsWith("alt+"))
@@ -532,7 +534,7 @@
 							key = key.substr("alt+".length);
 							var ke = new KeyboardEvent("keydown", {keyCode: 0x12});
 							textArea.dispatchEvent(ke);
-							await yieldHelper();
+							await yieldHelper(0);
 							continue;
 						}
 						break;
@@ -559,19 +561,19 @@
 					{
 						var ke = new KeyboardEvent("keyup", {keyCode: 0x10});
 						textArea.dispatchEvent(ke);
-						await yieldHelper();
+						await yieldHelper(0);
 					}
 					if(isCtrl)
 					{
 						var ke = new KeyboardEvent("keyup", {keyCode: 0x11});
 						textArea.dispatchEvent(ke);
-						await yieldHelper();
+						await yieldHelper(0);
 					}
 					if(isAlt)
 					{
 						var ke = new KeyboardEvent("keyup", {keyCode: 0x12});
 						textArea.dispatchEvent(ke);
-						await yieldHelper();
+						await yieldHelper(0);
 					}
 					return ret;
 				}