Skip to content

v3.13.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:41
· 28 commits to main since this release
883444e

fastf 3.13.0: a move you can watch, leave, and come back to

Nothing about an existing project changes. Every PROJECT_INFO.md,
config.toml and template works untouched, and no command, flag or file format
was removed. A move, copy or delete that an older fastf left waiting is finished
by the first fastf reconcile you run with this version.

This release comes out of moving a 1,473-file project off a Google Drive folder
mounted with rclone. The copy took minutes; then the app sat at "finalizing"
with its bar full for ten more while it removed the original, one Drive request
per file, saying nothing. Killed, it left the removal for Reconcile, which did
it again behind a spinner. Nothing was wrong, and nothing said so.

Every step is named and counted

A move now says what it is doing and how far it has got, the whole way:
scanning, checking the original's base, copying (files and bytes), verifying,
publishing PROJECT_INFO.md, setting the original aside, checking the old
copy, removing it — removing the old copy 312 of 1473 entries — and clearing
the record. In the app each step is a row: ticked with its count when done, the
current one with its bar and the entry it is at. On the command line each
finished step leaves a line, so the terminal keeps the whole run. A copy to a
folder and a reconcile report the same way; a reconcile names which item of how
many it is on, and can now be stopped between items or in the middle of a
removal.

A move is a process of its own

A move, a copy to a folder, a delete and a reconcile each run as a job: a
copy of fastf detached from the terminal and the app that started it, which
only follow it. Closing the terminal, quitting the app or killing either
leaves the job to finish.
Any fastf started meanwhile sees it: the app's
header shows what is running and its step, and fastf jobs lists it. In the
app, Esc hides the progress dialog and the job goes on; Ctrl-C cancels it until
the move publishes its copy, after which it is too late and the dialog says so.

  • fastf jobs lists jobs, fastf jobs watch follows one, fastf jobs cancel
    stops one.
  • move, copy-to, delete and reconcile take --detach: start and return.
  • A job that ended while no fastf was open is reported by the next app.
  • A job killed outright shows as stopped, and fastf reconcile finishes it.

The slow part no longer holds everything else

A move holds the library only until the original is set aside. Removing the old
copy — the part that takes minutes on a cloud mount — happens after, so a tag,
a note or another move goes through meanwhile. While a job does hold the
library, the app dims the verbs that would only wait for it and says why, and a
command that waits names the job it waits for.

Messages and the log

What fastf said and what it did are now kept, from every session:

  • Messages — the status lines and outcomes you were shown: fastf messages.
  • The log — every step of every move, copy and reconcile with its count,
    every warning, one timestamped line each: fastf log, fastf log --follow.
    config set log-level debug adds a line for every file a move touches.

L in the app opens both, with a jobs page between them; Enter on a job opens
its own log.

Tested against real mounts

The release build moved a 1,473-file project off a Cloudflare R2 bucket mounted
with rclone, with the command line killed mid-removal: the job finished, and
rclone lsf found nothing left in the bucket. It moved it back up, all 1,473
files arriving, and moved a project off the Google Drive mount, again with
nothing left on Drive. On Windows a move started over ssh finished after the
ssh session ended, and a cancel from a second session stopped another.

What's Changed

  • packaging: bump both AUR packages to 3.12.1-1 by @cristocola in #105
  • Moves as background jobs, with progress, messages and logs: 3.13.0 by @cristocola in #106

Full Changelog: v3.12.1...v3.13.0