Show the progress rate over the last 5 seconds, and what a phase is doing after 10 seconds with no item done (closes #125)
check / check (push) Canceled after 0s

A display's rate was the phase's average since it started, so after a
long wait a burst of files read as a steady rate of over 1,000 files a
second. It now covers the items completed over the last 5 seconds, or
since the line before off a terminal, and falls to 0 while nothing
completes; the ETA still comes from the average. Once no item has
completed for 10 seconds, the line says so and what the phase is doing,
a phrase each phase gives where it is defined. A narrow terminal leaves
that out after the rate, keeping the phase, progress, elapsed time and
ETA whole. The tests set the display's clock by hand.

Judgement call: the line reads "no files finished", in the phase's unit.
Judgement call: trees' group phase says "grouping directories".

Model: opus-5-5
This commit is contained in:
2026-10-16 21:00:38 +00:00
parent e9e09effc6
commit 98bca296c5
9 changed files with 403 additions and 99 deletions
+10
View File
@@ -29,6 +29,16 @@
# Completed Steps
- the rate a progress display shows covers the items completed over the last 5
seconds, or since the line before when stderr is not a terminal, so it falls
to 0 while nothing completes, and a burst after a wait no longer reads as a
steady rate of over 1,000 files a second; the ETA still comes from the phase's
average. Once no item has completed for 10 seconds, the line says how long and
what the phase is doing, as `no files finished for 42s, reading files`, each
phase naming its own work where it is defined. A line too wide for the
terminal leaves that out after the rate, keeping the phase, progress, elapsed
time and ETA whole (2026-10-16, https://git.eeqj.de/sneak/sfdupes/issues/125)
- new subcommand `info` prints the database's details on stdout, one per line as
a name, a tab and the value: its path and where it came from, the sizes of the
database file and of its `-wal` file when there is one, when the database file