Skip to content

v3.15.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 21:53
· 22 commits to main since this release
7059fcd

fastf 3.15.0: a quality pass

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. --help, the man pages and the shell completions are byte for
byte those of 3.14.0.

This release is a careful read of the whole source by somebody who did not
write it. Most of it changes how the code reads and nothing you can see. What
you can see is below: defects that reading turned up, each fixed with a test
that failed first.

What looks different

Two screens and the reconcile report's wording changed. Everything else looks
as it did.

  • Making a template from a folder: the preview now shows its summary line
    (2 folders, 1 text file 1 bundled (24.0 KB)), which sat below the fold of
    the dialog before, even in a window with rows to spare.
  • The reconcile report, in the app and from fastf reconcile, counts in
    plain words: 1 move finished, 1 project was never finished, where it
    used to say 1 move(s) and 1 project(s) were.
  • What reconcile put right is listed as put right. Files a cloud mount had
    left behind, which reconcile moved into their place, used to be reported
    under what needs a look, with a ⚠ verdict and a count in the summary. They
    are now listed under repaired, and a reconcile whose only findings are
    repairs ends with ✓. The exit status is unchanged. If a script reads
    reconcile's output, check it against these words.
  • fastf register on a folder that already is a project used to print
    ✓ Project registered when nothing was written. It now says Already a project — nothing was written, and names --rename or --apply when they
    were asked for and not carried out. The exit code is unchanged.

Fixed in the app

  • A dialog acts on the projects it was opened about. Delete named its
    folders as it opened and read the marks again at Enter, so a library reload
    landing in between could send the delete to the row under the cursor: a
    folder the question never named. Unregister, move, copy, the tag pickers,
    the quick note and the todo prompts had the same shape. Each now keeps the
    folders it was opened about, and refuses when none of them is left.
  • A tag or a value made shorter in the pane no longer shows the end of the old
    one after it (client/Xcme for client/X) until it is saved.
  • A slow read of one project's details can no longer land in the dialog of a
    copy of it with the same ID.
  • The copy and counter prompts check what you typed before they close, so a
    refusal no longer loses the text.
  • The palette brings a project into view whatever filter hid it; a long folder
    is listed in order rather than an arbitrary 200 entries; the picker's
    columns line up under double-width names; one mark reads 1 mark cleared.

Fixed on the command line

  • template from-folder's preview and --dry-run come from the same scan the
    run makes, depth limit and refusals included.
  • register --rename's preview reads the counter the way the run does,
    register --recursive's preview names the ID the run writes, and options
    that rule each other out are refused before anything waits on the lock.
  • config show says where the editor came from and prints the limit actually
    in force.
  • A value written into config.toml by hand is read whatever its case:
    on_name_collision = "Error" now means error, where it used to fall back to
    suffix. A recent_limit of zero reads as the default, twenty, rather than
    one.
  • fastf apply mentions {id} only where the template uses it.
  • On Windows, paths are shown without the \\?\ prefix everywhere, including
    the path a create prints for a shell to cd into.

Fixed in moves and removals

  • What a move copied is written to disk, folder by folder, before the
    original is touched.
  • A base that stopped answering holds no other command up.
  • A mount that drops is no longer asked again a thousand times a second, which
    filled the log and rotated it away. On a dropped mount the log is now a few
    kilobytes where it was megabytes.
  • Removing a move's record waits for an upload once, about twenty seconds,
    where it could take four minutes.
  • Smaller ones: a case check that cannot be undone stops a copy before it
    starts, a removal whose claim could not be written stays under the lock, the
    search for a staging name always ends, and a removal's last pause is followed
    by one last try.
  • On Windows the cursor is restored after Ctrl-C by the console's own call.

How it was checked

Every scenario of the 3.14.0 test runs on real mounts (a local disk, sshfs, an
rclone mount of an S3 bucket, and mounts that stall and drop mid-move) was run
again on this release and on 3.14.0 side by side. Twenty-four scenarios, and
the two agree on every outcome, on what is left behind, and on content, modes
and file times. Moves take the same time.

What's Changed

  • packaging: bump both AUR packages to 3.14.0-1, and retire PLAN.md by @cristocola in #110
  • A quality pass: smaller files, comments that earn their place, and the defects that reading it found by @cristocola in #111
  • fastf 3.15.0: a quality pass by @cristocola in #112

Full Changelog: v3.14.0...v3.15.0