From 4ae52eaebcdef6f0d7cf77f037b94d91216f6f8b Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 20 Dec 2025 17:06:22 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20Optimize=20file=20content?= =?UTF-8?q?=20extraction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replaced `cat | sed | tr` pipeline with `tr < file` redirection. - Eliminates 2 unnecessary process forks per file processed. - Fixes a critical bug where `sed 's// /g'` caused data loss (empty output) for all files. - Improved performance and reliability of content extraction. --- .jules/bolt.md | 3 +++ codepack.sh | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .jules/bolt.md diff --git a/.jules/bolt.md b/.jules/bolt.md new file mode 100644 index 0000000..6489a1d --- /dev/null +++ b/.jules/bolt.md @@ -0,0 +1,3 @@ +## 2025-12-20 - Unexpected sed behavior in pipes +**Learning:** `sed 's// /g'` without a prior regex fails (exit code 1) on some systems/versions, and when used in a pipe like `cat | sed | tr`, it can cause the pipe to effectively transmit nothing if the failure happens early or in a specific way, leading to silent data loss. +**Action:** Always validate `sed` commands in isolation. Prefer strict filtering (like `tr -cd`) over ambiguous replacement when sanitizing data. Avoid unnecessary pipes to prevent masking errors. diff --git a/codepack.sh b/codepack.sh index 0d8ae2c..3b0f16e 100755 --- a/codepack.sh +++ b/codepack.sh @@ -851,7 +851,8 @@ extract_files_content() { # Read file content and clean invalid characters local content="" if [[ -r "$file" && -s "$file" ]]; then - content=$(cat "$file" 2>/dev/null | sed 's// /g' 2>/dev/null | tr -cd '\11\12\15\40-\176' 2>/dev/null || echo "") + # Optimization: Use input redirection and avoid cat/sed to minimize forks + content=$(tr -cd '\11\12\15\40-\176' < "$file" 2>/dev/null || echo "") fi debug_log "Content length: ${#content}" >&2