fix(logging): render AUR progress animations to clean logs via terminal emulator
pacman/paru download progress is a multi-line terminal animation: it repaints lines in place using ANSI cursor-movement (ESC[<n>A) and erase-line (ESC[K) sequences, not just carriage returns. The previous line-wise regex approaches could not reconstruct this — frames either concatenated into one giant line (CR removed) or collapsed to blanks (CR kept), discarding the final 100% frame. Add scripts/clean_progress_log.py, a small dependency-free terminal screen-buffer emulator that replays the cursor movements against an in-memory grid and dumps the final static frame, preserving SGR color so logs still render with color in ov/bat/less -R. It also drops the script(1) header/footer. Both wrappers now pipe the raw PTY capture through this cleaner (bumped to version 5), falling back to stripping only the script(1) header when python3 is unavailable. Document the scripts/ dir and mechanism in AGENTS.md and docs/fish-config.md.
This commit is contained in:
+10
-2
@@ -60,6 +60,9 @@ The configuration is split across:
|
||||
completions/ Tab completion scripts
|
||||
integrations/
|
||||
fzf.fish FZF Catppuccin theme and key binding config
|
||||
scripts/
|
||||
clean_progress_log.py Renders script(1) typescripts (paru/yay progress
|
||||
animations) to clean static logs, preserving color
|
||||
docs/ Offline documentation and compiled man page
|
||||
fish-config.md Primary source manual (terminal-readable)
|
||||
fish-config.1 Compiled man page (auto-generated by CI)
|
||||
@@ -216,8 +219,13 @@ scrollback snapshot to SCROLLBACK_HISTORY_DIR. Files are named:
|
||||
|
||||
scrollback_YYYY-MM-DD_HH-MM-SS.log
|
||||
|
||||
The paru and yay wrappers (auto-generated in ~/.local/bin/) run inside a PTY
|
||||
via script(1) so progress bars are preserved, and capture all output to:
|
||||
The paru and yay wrappers (auto-generated in ~/.local/bin/) run the command
|
||||
inside a PTY via script(1) so download progress bars are preserved on screen,
|
||||
then render the captured terminal animation down to a clean static log via
|
||||
scripts/clean_progress_log.py (a small terminal-screen emulator that replays
|
||||
cursor movements, collapses repainted progress frames to their final state,
|
||||
and preserves ANSI color). If python3 is unavailable the wrapper falls back to
|
||||
dropping only the script(1) header/footer. Output is saved to:
|
||||
|
||||
paru_YYYY-MM-DD_HH-MM-SS.log
|
||||
yay_YYYY-MM-DD_HH-MM-SS.log
|
||||
|
||||
Reference in New Issue
Block a user