Repository navigation
Releases
v0.5.7
What's Changed
Full Changelog: v0.5.6...v0.5.7
v0.5.6
What's Changed
- ci(release): test against a pinned Neovim 0.12.5 by @gw31415 in #68
- ci(release): mark published releases as latest by @gw31415 in #69
- feat(generations): list and switch retained generations by @gw31415 in #70
- chore(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 by @dependabot[bot] in #55
- chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 by @dependabot[bot] in #56
- chore(deps): bump Swatinem/rust-cache from f0d9c3887740aee45f6153b24b3a6b815192ec16 to c8037a86dde8214a8310e9f54a8fc61ab362aa31 by @dependabot[bot] in #57
- feat: retain 64 generations, keep generations in use, add --watch and rsplug.watch() by @gw31415 in #71
Full Changelog: v0.5.5...v0.5.6
v0.5.5
What's Changed
- perf(runtime): cut rsplug's startup overhead (single source, no :packadd!) by @gw31415 in #64
- chore(release): prepare v0.5.4 by @gw31415 in #65
- fix(runtime): support Neovim 0.9 in the rtp loader by @gw31415 in #66
- chore(release): prepare v0.5.5 by @gw31415 in #67
Full Changelog: v0.5.3...v0.5.5
v0.5.3
What's Changed
- fix(install): 既存の generation を再利用するときも init.lua を指し直す by @gw31415 in #62
- chore(release): prepare v0.5.3 by @gw31415 in #63
Full Changelog: v0.5.2...v0.5.3
v0.5.2
v0.5.1
v0.5.0
What's Changed
- chore(deps): bump actions/checkout from 5.1.0 to 7.0.1 by @dependabot[bot] in #43
- chore(deps): bump actions/download-artifact from 6.0.0 to 8.0.1 by @dependabot[bot] in #44
- chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.1 by @dependabot[bot] in #45
- chore(deps): bump actions/attest-build-provenance from 2.4.0 to 4.1.1 by @dependabot[bot] in #46
- refactor(cli): replace clap with usage-rs by @gw31415 in #52
- feat(cli): add man and completion generation by @gw31415 in #53
- chore(deps): bump actions/attest from 4.1.1 to 4.2.2 by @dependabot[bot] in #48
- chore(deps): bump Swatinem/rust-cache from e18b497796c12c097a38f9edb9d0641fb99eee32 to f0d9c3887740aee45f6153b24b3a6b815192ec16 by @dependabot[bot] in #50
- chore(deps): update Rust dependencies by @gw31415 in #54
New Contributors
- @dependabot[bot] made their first contribution in #43
Full Changelog: v0.4.0...v0.5.0
v0.4.0
rsplug.nvim 0.4.0
Released 2026-07-24.
Highlights
- Faster plugin installation and updates through parallel discovery, adaptive
remote scheduling, snapshot catalog fast paths, and reuse of already-installed
repositories. - Faster GitHub downloads with
RSPLUG_GITHUB_TOKEN, API revision resolution,
codeload tarballs, connection pooling, and adaptive concurrency. - More deterministic published pack directories: copy fallbacks no longer
create hard-link aliases that can mutate an already-published snapshot. - Improved lazy-loading and runtime behavior, including cleaner trigger state,
corrected Lua module roots, and more reliable plugin/dependency loading. - Clearer installer output with configuration summaries, fetch progress, build
output, and actionable build errors.
Release and validation
- All six workspace crates are published at version
0.4.0. - Release binaries are available for x86_64 and aarch64 Linux, x86_64 and
aarch64 macOS, and x86_64 Windows. - Every binary archive includes version verification and is accompanied by
SHA256SUMSand build provenance attestation. - The release workflow runs formatting, the full locked test suite, Clippy,
package checks, and an immutable annotated-tag preflight before publication.
Upgrade notes
The configuration format remains compatible with the previous release. Existing
lock files can be reused; run your normal update command when you want to refresh
locked revisions.
See the full commit history
for implementation details.
v0.3.0
Highlights
v0.3.0 is a substantial update to rsplug.nvim's installation, packaging, repository-resolution, and runtime-generation internals. It improves the reliability of repeated installs and updates while making large plugin sets faster to resolve and safer to publish atomically.
New features
Faster GitHub repository resolution and downloads
- Added batched GitHub GraphQL revision resolution for GitHub repositories.
- Pipelines revision resolution with repository fetching so network work can overlap instead of waiting for every lookup to finish first.
- Keeps a per-repository
ls-remotefallback for non-GitHub sources and for GitHub API/GraphQL failures. - Added the required GitHub
User-Agentheader to API requests. - Added a faster GitHub HTTPS download path using:
- A shared
reqwest::Clientfor connection pooling and HTTP/2 multiplexing. - GitHub's REST API and
ls-remotefallback for revision resolution. codeload.github.comtarball downloads, outside the GitHub API rate limit.- zlib-ng-backed decompression.
- A shared
- Added adaptive download concurrency that can reduce parallelism when the remote service reports errors.
Persistent plugin-list and snapshot metadata
- Added persistent plugin-list blocks and snapshot manifests.
- Snapshot state now records the inputs needed to identify and reuse a generated package reliably.
- Repeated loads can reuse an existing snapshot without requiring the source repository's
.gitdirectory when it is not needed. - Added content-hash-based identity for tarball and generated content, avoiding collisions based only on repository paths.
- Added canonical repository identity handling for lock keys and cache paths, including normalized GitHub and Git URL forms.
Atomic package publication
- Package installation now builds into a staging generation and publishes it atomically.
- A failed install no longer replaces the previously published working generation.
- Added generation selection through the
RSPLUG_GENERATIONenvironment variable. - Cleaned up stale staging directories and improved reuse of an existing installed package.
More robust package merging and copying
- Reworked pack copying to recursively merge directory contents instead of relying on symlink placement.
- Added copy fallbacks for hard-link operations that cross filesystems.
- Uses the platform's normal file-copy behavior on macOS, including APFS clone support where available.
- Preserves
.gitignore-ignored build artifacts when copying plugin contents. - Added the
dotgitoption to include a repository's.gitdirectory in the generated pack when required. - Added safer handling for sealed-directory collisions and overlapping merge destinations.
- Improved documentation-file handling by moving plugin documentation into the dedicated
_rsplug:docstart plugin when appropriate. - Fixed merge normalization and source-name preservation across merged plugins.
- Improved default merge behavior and restored the appropriate guard for optional plugins.
Configuration and lazy-loading improvements
- Added explicit configuration IDs with validation while keeping plugin names optional.
- Improved support for script-only configuration entries and anonymous script-only plugins.
- Preserved the intended precedence when
start = trueis combined with a lazy-loading trigger. - Fixed
lua_startscript separators and runtime template generation. - Removed the unsupported
symoption from the documented configuration surface.
Lock-file and garbage-collection improvements
- Added lock-file reconstruction from the local plugin cache.
- Added garbage-collection support for stale cache entries.
- Improved lock-key normalization and conflict detection for equivalent repository URLs.
Reliability and bug fixes
- Fixed a panic caused by attempting to unwrap a load context while an
Arcreference was still alive. - Fixed revision state tracking when a revision is already resolved through the GraphQL path.
- Fixed warnings from the GraphQL batch-resolution path being routed through the normal logger instead of directly to stderr.
- Fixed duplicate and stale entries during manifest-driven package merging.
- Fixed data loss when merging directory entries into an existing destination.
- Fixed document stealing and package enumeration edge cases.
- Fixed lazy-loading behavior around startup plugins and trigger precedence.
- Improved terminal progress output for fetching, loading, updating, and installed-plugin summaries.
- Updated the Rust toolchain to Rust 1.97.0.
- Updated key dependencies, including
toml_editandreqwest.
Crate versions
All workspace crates are now published at 0.3.0:
rsplugrsplug-adaptive-semaphorersplug-dagrsplug-file-specifierrsplug-walkerrsplug-fts
Verification
The release was verified with:
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace- GitHub Actions release builds for:
aarch64-apple-darwinaarch64-unknown-linux-gnux86_64-apple-darwinx86_64-pc-windows-msvcx86_64-unknown-linux-gnu
Upgrade notes
Existing configuration files remain compatible. If you use cache or generated-pack automation, review the new RSPLUG_GENERATION behavior and the dotgit option. The new atomic publication path is designed to make interrupted or failed updates safe, so it is recommended to let rsplug manage generations rather than copying generated pack directories manually.
Full Changelog: v0.2.4...v0.3.0
v0.2.4
v0.2.4
Features
- GitHub token authentication: Set
GITHUB_TOKENorGH_TOKENto
authenticate GitHub API requests and avoid rate limits. Token lookup
follows theghCLI convention (GITHUB_TOKENtakes precedence over
GH_TOKEN). - GitHub tarball fetch fallback: When a Git fetch hits GitHub's rate
limit, rsplug automatically falls back to downloading the tarball
archive. - Adaptive semaphore for fetch rate limiting: Fetch operations now use
an adaptive concurrency limiter that backs off on rate-limit errors. - Dynamic loading bar width: The progress loading bar now adjusts its
width to fit the terminal. - Improved cache fetch progress UI: Fetch stage progress reporting is
now clearer.
Bug Fixes
-ualone no longer installs uninstalled repos: Runningrsplug -u
without--installno longer accidentally installs repos that were not
yet installed.- Git dependency dep_name now uses repo basename:
dep_namefor Git
URL dependencies is now consistently derived from the repo basename. - Readable source names in not-installed warnings: The "not installed"
warning now shows human-readable source names instead of internal
identifiers.
Internal
- Snapshot cache infrastructure (source.git + per-snapshot worktrees) for
stable plugin references across updates. - Plugin identity separated from absolute placement paths.
- Config parse error messages improved.
- Lua runtime style unified (single-quote, no-paren) across generated
templates.
Full Changelog: v0.2.3...v0.2.4