Skip to content

v8.1.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 05:08
· 5 commits to main since this release

Mesh Drive across consoles

  • Consoles are the masters of their circles. A drive lives on a console, which keeps its home
    folder, its devices and their reports; devices sync only through a console, never with each
    other, and a device can use several consoles.
  • Link a drive with another console (the drive's ⋯ menu › Link to another console…):
    pick a console from your list and a home folder on it. That console gets its own copy and
    becomes the drive's master for the devices that sync through it; a computer or Docker in the
    drive keeps the two consoles the same, the files going straight from console to console. Each
    console holds a drive once, so links form a tree and a change never comes back around.
  • Away is fine. A device whose console is off syncs through a linked one (a separate record of
    what agreed with which console, so nothing is deleted on the switch), and a console that was off
    catches up when it is back. Unlink leaves each console with its copy as a drive of its own.
  • Linked consoles on the drive card: each with its state, how many devices sync through it,
    when it last synced and which device carried it.

Conflicts

  • Settle conflicts on the drive card lists every conflict copy beside the file it is a copy of
    (who made it, sizes and times) with one choice each: Keep the original, Keep the copy or
    Keep both (the copy gets a name of its own). It is settled on the console and every device
    and linked console follows; what goes is moved to the drive's trash for 30 days.

Also in this release

  • No red "cannot reach its engine" flash at launch (#515). On Windows the engine can take a
    few seconds to start, and the app showed the error banner until it answered. The app now waits
    up to 20 seconds for a starting engine before calling it down; a real start failure or crash
    still shows at once.
  • Restart engine in Settings. Settings › Engine has a Restart engine button (desktop app)
    to stop and start this computer's engine without closing the app.
  • Devices and Mesh Drive say when the engine is too old (an engine elsewhere, such as an older
    Docker container) instead of showing "request failed (404)".

Mesh Drive, reworked

  • Making a drive is guided. Nothing is picked for you any more: name the drive, then either make a new folder on the console (you choose where
    and its name) or pick one that is already there, and pick the folder on this device. Every
    choice is checked as you make it (a name that is taken, a folder inside another drive, a file
    instead of a folder, the app's own data folder) and Create stays off until both are usable.
  • No more "let in" step. Joining used to wait for a device already in the drive to approve
    it, which locked everyone out once that device was gone. Now any device joins from the Mesh Drive page. To
    keep others out, give the drive a password (when you make it, or later from its ⋯ menu); a
    device joining types it once. Only a salted Argon2id hash is kept on the console, and any
    device in the drive, or anyone who knows the password, can change or remove it.
  • Every device in the drive, as the console sees it. Each device's engine reports to the
    console after a pass: its state, how many files and how much it holds, its app version, and when
    it last synced. The drive card lists them all with who is online, so you see who is in the
    drive and how each is doing from any device; a device that is gone can be removed by any other.
  • Rename a device from the drive's list (or in Devices): the console keeps the name, so every
    device shows it at once. Each device has its kind's icon: a phone, Docker or a computer.
  • What you'd want to know about the folder: files, total size, conflict copies, free space on
    the console, live progress (file 12 of 40 and its name), and files that were left out and why.
  • Open folder opens this device's copy in Finder or Explorer (desktop app); Open on
    console
    opens the drive's home in Files. Files lists every Mesh Drive next to /data and the
    USB drives in its Drives row, as a shortcut to its folder on the console.
  • Steadier syncing. A pass skips re-reading the console's folder when nothing changed (until
    two minutes pass); waits while a game installs; rests a file that keeps failing for ten minutes
    instead of retrying it every pass; leaves out names this device cannot store (Windows) and names
    that differ only in case (macOS, Windows); never overwrites a file you saved while it was being
    synced; keeps both copies when the same file is trashed twice in a day or conflicts twice in a
    minute; ignores a half-finished upload's .ava-part; and holds the drive's lock for however long
    one big file takes. A drive deleted from another device stops syncing here by itself and frees
    the folder.
  • Console locks follow a clock that never jumps, so setting the console's date no longer
    frees (or keeps) a lock early.

Several devices

  • The same PS5 from two devices is one console, not two. Connecting from a second device no
    longer adds a duplicate to the console list.
  • Settings and the console list sync with a CRDT (a last-writer-wins map with hybrid logical
    clocks): the newest change wins on every device whichever syncs first, a removal stays removed,
    and a change made on one device never undoes another's. A device's set-up from before it shared
    takes what your other devices already agreed on instead of overwriting it.
  • Settings backups. The app backs up its settings once a day, and before a sync from your
    other devices or a restore changes several at once. The engine keeps the last 14 (in Docker, in
    the container's data volume, so the web UI's backups outlive the browser); each console you use
    keeps every app's latest, so a wiped device gets its set-up back from there. Settings ›
    Backup
    lists both, with Back up now and Restore; a restore keeps a copy of what it
    replaces first.
  • Downloads to a NAS: replacing a file on the server is safe even when the server cannot rename
    over a file (the old one comes back if the swap fails).
  • More devices from one address. The console allowed 12 connections per IP address, which
    about three engines fill; a computer running the app and a Docker engine (Docker Desktop shows
    every container as the host) could be refused with "too many connections from this address".
    Now 24.
  • Mesh Drive refuses a whole disk, a phone's whole storage or a home folder (and the console's
    /data or a whole USB drive) as a drive's folder: everything on it would be synced.
  • Check for updates has its own icon; a Reload page button sits in the top bar (on a phone,
    in More).