diff --git a/.gitignore b/.gitignore index eff77b75..e8267e02 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dist/ build/ *.kate-swp .directory +CLAUDE.md diff --git a/src/fenrirscreenreader/commands/onScreenUpdate/65000-progress_detector.py b/src/fenrirscreenreader/commands/onScreenUpdate/65000-progress_detector.py index 270d3915..dcd51dda 100644 --- a/src/fenrirscreenreader/commands/onScreenUpdate/65000-progress_detector.py +++ b/src/fenrirscreenreader/commands/onScreenUpdate/65000-progress_detector.py @@ -79,10 +79,12 @@ class command(): # Pattern 1b: Time/token activity (not percentage-based, so use single beep) timeMatch = re.search(r'(\d+)s\s', text) tokenMatch = re.search(r'(\d+)\s+tokens', text) - # Pattern 1c: Curl-style transfer data (bytes, speed indicators) + # Pattern 1c: dd command output (bytes copied with transfer rate) + ddMatch = re.search(r'\d+\s+bytes.*copied.*\d+\s+s.*[kMGT]?B/s', text) + # Pattern 1d: Curl-style transfer data (bytes, speed indicators) curlMatch = re.search(r'(\d+\s+\d+\s+\d+\s+\d+.*?(?:k|M|G)?.*?--:--:--|Speed)', text) - if timeMatch or tokenMatch or curlMatch: + if timeMatch or tokenMatch or ddMatch or curlMatch: # For non-percentage progress, use a single activity beep every 2 seconds if currentTime - self.env['commandBuffer']['lastProgressTime'] >= 2.0: self.env['runtime']['debug'].writeDebugOut("Playing activity beep for transfer progress", debug.debugLevel.INFO) diff --git a/src/fenrirscreenreader/remoteDriver/unixDriver.py b/src/fenrirscreenreader/remoteDriver/unixDriver.py index addfd05f..531f05a5 100644 --- a/src/fenrirscreenreader/remoteDriver/unixDriver.py +++ b/src/fenrirscreenreader/remoteDriver/unixDriver.py @@ -45,28 +45,17 @@ class driver(remoteDriver): continue if self.fenrirSock in r: client_sock, client_addr = self.fenrirSock.accept() - response = "ERROR: Failed to process command\n" try: rawdata = client_sock.recv(8129) - data = rawdata.decode("utf-8").rstrip().lstrip() - if data: - # Process the command and get response - result = self.env['runtime']['remoteManager'].handleRemoteIncommingWithResponse(data) - if result['success']: - response = f"OK: {result['message']}\n" - else: - response = f"ERROR: {result['message']}\n" - else: - response = "ERROR: Empty command\n" - except Exception as e: - response = f"ERROR: {str(e)}\n" - - # Send response back to client - try: - client_sock.send(response.encode("utf-8")) except: pass - + try: + data = rawdata.decode("utf-8").rstrip().lstrip() + eventQueue.put({"Type":fenrirEventType.RemoteIncomming, + "Data": data + }) + except: + pass try: client_sock.close() except: