Skip to content

0.11.0

Latest

Choose a tag to compare

@mgumz mgumz released this 08 Nov 10:42

Features

  • Support git hosters other than GitHub: GitLab (gitlab.com), Forgejo
    (codeberg.org) and Gitea (gitea.com). update and check work for plugins
    hosted there. For self-hosted instances, name the software behind it with the
    new plugin option hoster=github|forgejo|gitea|gitlab.
  • Keep downloaded archives in the XDG cache: -cache (default
    $XDG_CACHE_HOME/vopher, falling back to ~/.cache/vopher). Archives are
    stored by host and path of their URL, so several lists or -dirs share them
    without colliding.
  • Reuse cached archives: vopher sends conditional requests (ETag /
    Last-Modified) and extracts the cached archive on "304 Not Modified". No
    request at all is made if the plugin is pinned to a commit id or its sha1=
    matches the cached archive.
  • New flag -offline: update, fupdate and fetch extract the cached
    archives only, without touching the network.
  • check shows the branch holding a #ref: for a pinned plugin, check now
    also shows the newer commits on the branch that contains the installed commit.

Changed behaviour

  • Without #ref and branch=, update asks the hoster for the archive of
    "main", then "master", and takes the first one found (previously: always
    "master"). #ref wins over branch=, branch= wins over the probe.
  • prune -all also removes cached archives not referenced in vopher.list.
  • The file holding the commit id inside the plugin folder is named
    git-commit now (previously: github-commit). check falls back to the old
    name, update removes it when writing the new one.

Improvements

  • Per-host request limits and timeouts: -http.jobs host=n (default *=8)
    and -http.timeout host=duration (default *=30s). Previously, check fired
    all feed requests at once without a timeout and could hang forever once GitHub
    throttled. check now reports progress and hints at rate limits (403/429).
  • check output contains fold markers per plugin, allowing to fold the
    already viewed plugins in Vim and Neovim.
  • check prints tag names in full (previously cut after 10 characters, like
    commit ids).
  • Short plugin URLs for all known hosts: codeberg.org/o/r or
    gitlab.com/group/repo get their "https://" automatically, like
    github.com/... did before.
  • Extract plugins atomically: the archive is extracted into a hidden sibling
    folder and only moved into place when complete. A failed extraction no longer
    leaves a mix of old and new files behind, and files not part of the new
    version are gone.
  • Show where the archive of a plugin came from: downloaded, unchanged (304) or
    taken from the cache. UI oneline shows counters in the progress line, UI
    simple appends it to the job line.
  • depends-on= in vim-packs / nvim-packs: a dependency can be referenced
    by its base name, e.g. depends-on=plugin-b for a plugin placed at
    my-packs/opt/plugin-b.

Fixes

  • check handles tag names containing "/": a plugin pinned with
    #firestore/v1.27.0 never got its * mark.

Internal

  • Upgrade dependencies: klauspost/compress 1.18.0 → 1.20.3, ulikunitz/xz
    0.5.15 → 0.5.17.