Skip to content

v0.3.0 — Readable progress, honest file states, no overlapping operations

Choose a tag to compare

@Plumvery Plumvery released this 21 Jul 18:13
· 9 commits to main since this release
0c582c4

A UX pass over the editor window and settings page, plus a correctness fix for operations that could run twice.

✨ What's new

📊 Progress that stays readable during parallel transfers

The gauge used to jump around because every worker reported its own view: a stale snapshot of the done counter, its own file name as the label, and its own byte fraction. Progress is now aggregated in one place — phases occupy fixed slices of a single 0→100% run, in-flight bytes are summed rather than overwritten, weighting is by size instead of file count (a 4 KB and a 4 GB file no longer move the bar equally), the label sticks to the longest-running file, and the reported value can never run backwards. The bar also stays live through the status re-check that follows a Push or Pull instead of parking at 100%.

🔵 New "not pushed" file state

The list only ever compared files against the manifest, which says nothing about whether a blob was uploaded — Track writes the hash immediately, so a file that had never left your disk showed as up to date. Blobs now get recorded as confirmed-in-storage when a Push uploads them (or finds them already there), a Pull downloads them, or Verify checks them, and the list gains a fourth not pushed state.

No network calls: the record lives under Library/UniLFS/ and is scoped per storage location, so repointing the project at another bucket does not inherit the old bucket's confirmations. Safe to delete — files fall back to not pushed until the next Push or Pull confirms them again.

🔐 A visible sign-in path

The sign-in button was buried in Project Settings, so an unconfigured project announced itself as a failed Push. UniLFS now asks once per editor session when a project tracks files but the provider is not ready, offering to sign in directly (Google Drive) or open the settings — silent when nothing is tracked, never shown in batch mode, and mutable per project. The UniLFS window shows the same thing as a banner with a direct sign-in button.

🐛 Fixes

  • Operations can no longer run twice. The window and Auto Pull/Push each guarded only themselves, so a manual Push racing an Auto Push meant whichever saved the manifest last silently discarded the other's entries. Push / Pull / Restore / Track / Untrack / Status now share a process-wide lock.
  • Project Settings layout — page padding and label width match built-in settings pages, Secret Access Key and Client Secret (project) no longer clip, wrapped help text is no longer cut to a single line, and the Google Drive account and folder rows line up with the fields above them.
  • Credentials are written on focus-out, not per keystroke. Saving user settings also rewrites the managed .gitignore block, so typing a secret did that once per typed character.
  • Connection test failures are shown as errors, and each provider lists what is still missing before Push/Pull can work.

📦 Install / upgrade

https://github.com/Plumvery/UniLFS.git#v0.3.0

Full changelog: v0.2.0...v0.3.0