Commit graph

1 commit

Author SHA1 Message Date
jedarden
1d316bce2b feat(pdftract-2hqxi): implement indicatif progress bar with watchdog
Implements the progress bar for pdftract grep with:
- 100ms steady tick for spinner animation
- 500ms watchdog guarantee for liveness during slow file operations
- 30s slow-file warning
- TTY detection with --progress/--no-progress flags
- Multi-progress: main bar (overall) + current bar (per-file)
- Output to stderr (separate from --json stdout)

Key changes:
- Replaced tokio::sync::Mutex with std::sync::Mutex for sync context
- Added shutdown_flag for clean watchdog thread shutdown
- Added main_bar_for_watchdog reference for forced redraws
- Changed TTY detection to use atty crate (cross-platform)
- Set ProgressDrawTarget::stderr() explicitly

Acceptance criteria:
- Bar updates >= every 500ms during 1000-file grep
- 5GB slow file: bar continues ticking via steady tick
- Slow-file warning at 30s
- Non-TTY: no bar (workers still process)
- --no-progress forces off even on TTY
- Bar goes to stderr; --json output to stdout uncontaminated
- Final summary line printed on done

Related: pdftract-43sg2 (ProgressEvent source)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 20:02:11 -04:00