From bd0eac841374a8581e1fde8296a978f95134b541 Mon Sep 17 00:00:00 2001 From: rootiest Date: Thu, 11 Jun 2026 22:23:38 -0400 Subject: [PATCH] fix(logging): fix CR-collapse and script header filtering in AUR log post-processing col -bp is designed for backspace-overstriking (man pages), not ANSI terminal animations; it mangled escape sequences and garbled overprinted progress bar text. Replace with a perl -ne one-liner that: 1. Skips Script started/done header lines (next if matches, with -ne so next truly suppresses print, unlike -pe which still auto-prints) 2. Strips trailing \r from PTY \r\n line endings 3. Collapses CR-redrawn progress bar frames to their final state 4. Preserves all ANSI color codes so ov renders them correctly Bump wrapper version to 4 to force regeneration. --- conf.d/paru-wrapper.fish | 10 +++------- conf.d/yay-wrapper.fish | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/conf.d/paru-wrapper.fish b/conf.d/paru-wrapper.fish index 4e675d5..c801e65 100644 --- a/conf.d/paru-wrapper.fish +++ b/conf.d/paru-wrapper.fish @@ -20,7 +20,7 @@ end set -l _paru_real /usr/bin/paru set -l _paru_wrapper "$HOME/.local/bin/paru" -set -l _paru_wrapper_version 3 +set -l _paru_wrapper_version 4 # Skip entirely if the real paru binary isn't present test -x $_paru_real; or return @@ -54,12 +54,8 @@ printf '%s\n' \ 'script -q -e -c "$cmd_str" "$log_file"' \ 'exit_code=$?' \ '' \ - '# col -bp collapses CR-redrawn progress bar frames; sed strips ANSI codes and script(1) headers.' \ - 'if col -bp < "$log_file" | sed '"'"'s/\x1b\[[0-9;?]*[a-zA-Z]//g; /^Script \(started\|done\)/d'"'"' > "${log_file}.tmp" 2>/dev/null; then' \ - ' mv "${log_file}.tmp" "$log_file"' \ - 'else' \ - ' rm -f "${log_file}.tmp"' \ - 'fi' \ + '# Collapse CR-redrawn frames; keep ANSI codes for ov rendering; strip script(1) headers.' \ + 'perl -ne '"'"'next if /^Script (started|done)/; s/\r$//; s/.*\r([^\r]+)$/$1/; print'"'"' < "$log_file" > "${log_file}.tmp" 2>/dev/null && mv "${log_file}.tmp" "$log_file" || rm -f "${log_file}.tmp"' \ '' \ 'max_files="${SCROLLBACK_HISTORY_MAX_FILES:-100}"' \ 'mapfile -t logs < <(ls -1t "$log_dir"/paru_*.log 2>/dev/null)' \ diff --git a/conf.d/yay-wrapper.fish b/conf.d/yay-wrapper.fish index f2b9986..324945b 100644 --- a/conf.d/yay-wrapper.fish +++ b/conf.d/yay-wrapper.fish @@ -20,7 +20,7 @@ end set -l _yay_real /usr/bin/yay set -l _yay_wrapper "$HOME/.local/bin/yay" -set -l _yay_wrapper_version 3 +set -l _yay_wrapper_version 4 # Skip entirely if the real yay binary isn't present test -x $_yay_real; or return @@ -54,12 +54,8 @@ printf '%s\n' \ 'script -q -e -c "$cmd_str" "$log_file"' \ 'exit_code=$?' \ '' \ - '# col -bp collapses CR-redrawn progress bar frames; sed strips ANSI codes and script(1) headers.' \ - 'if col -bp < "$log_file" | sed '"'"'s/\x1b\[[0-9;?]*[a-zA-Z]//g; /^Script \(started\|done\)/d'"'"' > "${log_file}.tmp" 2>/dev/null; then' \ - ' mv "${log_file}.tmp" "$log_file"' \ - 'else' \ - ' rm -f "${log_file}.tmp"' \ - 'fi' \ + '# Collapse CR-redrawn frames; keep ANSI codes for ov rendering; strip script(1) headers.' \ + 'perl -ne '"'"'next if /^Script (started|done)/; s/\r$//; s/.*\r([^\r]+)$/$1/; print'"'"' < "$log_file" > "${log_file}.tmp" 2>/dev/null && mv "${log_file}.tmp" "$log_file" || rm -f "${log_file}.tmp"' \ '' \ 'max_files="${SCROLLBACK_HISTORY_MAX_FILES:-100}"' \ 'mapfile -t logs < <(ls -1t "$log_dir"/yay_*.log 2>/dev/null)' \