diff --git a/lib/linux/process.py b/lib/linux/process.py index ec1a052..8b567ea 100644 --- a/lib/linux/process.py +++ b/lib/linux/process.py @@ -52,7 +52,7 @@ def read(): chunks.put(None) threading.Thread(target=read, daemon=True).start() - pending, percent, next_update = "", None, 0.0 + pending_list, percent, next_update = [], None, 0.0 decoder = codecs.getincrementaldecoder('utf-8')(errors='replace') exit_seen = None try: @@ -82,9 +82,18 @@ def read(): if proc.poll() is not None: break continue - pending += decoder.decode(chunk) + + decoded = decoder.decode(chunk) + if not decoded: + continue + + pending_list.append(decoded) + if '\n' not in decoded and '\r' not in decoded: + continue + + pending = "".join(pending_list) lines = re.split(r"[\r\n]", pending) - pending = lines.pop()[-8192:] + pending_list = [lines.pop()[-8192:]] for line in lines: line = re.sub(r"\x1b\[[0-?]*[ -/]*[@-~]", "", line) if not line.strip(): @@ -94,6 +103,7 @@ def read(): if match: percent = int(match[1]) snapshot(event, started, percent) + pending = "".join(pending_list) if pending: print(" " + pending, flush=True) return proc.wait(timeout=2) diff --git a/lib/windows/AutoOS.ClaudeAutostart.psm1 b/lib/windows/AutoOS.ClaudeAutostart.psm1 index 98c4a9f..2e20b02 100644 --- a/lib/windows/AutoOS.ClaudeAutostart.psm1 +++ b/lib/windows/AutoOS.ClaudeAutostart.psm1 @@ -43,7 +43,7 @@ function Get-AutoOSClaudeDefaults { foreach ($p in $block.PSObject.Properties) { $table[$p.Name] = $p.Value } if ($table.Count -gt 0) { return $table } } - } catch { } + } catch { $_ | Out-Null } } @{ enabled = $true; snapshot_interval_mins = 5; liveness_window_mins = 240 @@ -272,7 +272,7 @@ function Get-AutoOSClaudeState { sessions = @($doc.sessions) } } - } catch { } + } catch { $_ | Out-Null } } [pscustomobject]@{ version = $script:StateVersion; captured_at = 0; captured_at_iso = $null; sessions = @() } } diff --git a/lib/windows/AutoOS.Detect.psm1 b/lib/windows/AutoOS.Detect.psm1 index b1934ec..871dda5 100644 --- a/lib/windows/AutoOS.Detect.psm1 +++ b/lib/windows/AutoOS.Detect.psm1 @@ -122,7 +122,7 @@ function Get-AutoOSWingetPackageProcess { $process = [Diagnostics.Process]::Start($psi) # Close stdin so a prompt that slipped past --disable-interactivity reads # EOF and gives up, instead of sitting there until the timeout. - try { $process.StandardInput.Close() } catch { } + try { $process.StandardInput.Close() } catch { $_ | Out-Null } $process } catch { $null } } @@ -144,7 +144,7 @@ function Get-AutoOSWingetPackageResult { $Process.Kill() } } catch { $packages = @() } - finally { try { $Process.Dispose() } catch { } } + finally { try { $Process.Dispose() } catch { $_ | Out-Null } } $packages } diff --git a/lib/windows/AutoOS.Serve.psm1 b/lib/windows/AutoOS.Serve.psm1 index f732bf6..1aa1345 100644 --- a/lib/windows/AutoOS.Serve.psm1 +++ b/lib/windows/AutoOS.Serve.psm1 @@ -266,7 +266,7 @@ function Get-AutoOSExampleBlock { try { $block = (Get-Content -LiteralPath $path -Raw -Encoding UTF8 | ConvertFrom-Json).$Name if ($block) { return $block } - } catch { } + } catch { $_ | Out-Null } @{} } @@ -286,7 +286,7 @@ function Get-AutoOSDetectedAnswers { try { $value = (& git config --global $pair.Setting 2>$null | Select-Object -First 1) if ($value) { $answers[$pair.Key] = [string]$value } - } catch { } + } catch { $_ | Out-Null } } $answers }