8000 Releases · zuqini/zpack.nvim · GitHub
[go: up one dir, main page]

Skip to content

Releases

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 20:04
55e038f

3.0.0 (2026-11-06)

⚠ BREAKING CHANGES

  • merge: a plugin's specs merge in import order, as in lazy.nvim, so a later spec under dependencies overrides a top-level one and its function opts sees the top-level opts
  • module_loader: a require loads a lazy plugin only when the plugin holds the module's file, as in lazy.nvim; one with only the top-level name stays lazy
  • commands: :ZPack clean and :ZPack sync list what they would delete and ask, defaulting to No; ! skips the prompt
  • import: a nil in a spec list no longer ends the list, so what follows it installs
  • lazy: a plugin whose function-form trigger throws stays lazy instead of loading at startup
  • module_loader: remove the unreachable profiler; setup({ profiling = ... }) is ignored, and print_profile and get_profile are gone
  • module_loader: require no longer loads a plugin whose name resembles a module it doesn't provide; a plugin registering a module from plugin/ needs a trigger of its own
  • keys: two strings in keys are two keys unless the second can only be an rhs, so { '<leader>d', 'dd' } needs a field or nesting to stay one key
  • keys: a later spec's key replaces an earlier one
  • import: a bare name nothing defines is skipped rather than installed
  • merge: a disabled dependency no longer disables the plugin listing it
  • merge: the last spec to set enabled or cond wins, instead of any false
  • lazy: an event with no real event in it, such as LazyFile, leaves the plugin eager with a warning
  • utils: a version string git can't take as a ref, such as *, is a semver range
  • import: spec modules import in module name order
  • version: version fields follow lazy.nvim's priority: commit, tag, version, sem_version, branch, default

Features

  • close lazy.nvim parity gaps in spec lists, keys, triggers and bare names (85ba638)
  • import: import specs from a plugin's own modules (85ba638)
  • merge: support opts_extend (#46) (b23ed1f), closes #45

Bug Fixes

  • cmd: keep a numeric first argument on a lazy command's first use (936649e)
  • commands: :ZPack clean and :ZPack sync list what they would delete and ask, defaulting to No; ! skips the prompt (936649e)
  • commands: :ZPack clean leaves a plugin active this session for next time rather than raising (936649e)
  • ft: a lazy ft plugin's ftdetect/ is sourced once, as in lazy.nvim, so one that runs set filetype= fires FileType once per file (bfd84e3)
  • hooks: a module brought in by an in-session update is found without a restart (936649e)
  • hooks: removing a plugin drops its command and key proxies, so its command gives E492 and a command it shared with another lazy plugin works for that plugin; an init removing a plugin no longer re-fires its event or crashes setup() when the plugin has its own init (bfd84e3)
  • import: a nil in a spec list no longer ends the list, so what follows it installs (936649e)
  • import: a bare name nothing defines is skipped rather than installed (85ba638)
  • import: a bare string in a spec list installs as a plugin, rather than being reported as invalid and skipped (936649e)
  • import: an import with no plugin of its own finds its module in a listed plugin named after it, installing it if missing, on the first start (936649e)
  • import: spec modules import in module name order (85ba638)
  • import: take a plugin's lua/ off package.path after startup (936649e)
  • import: warn when an import finds no specs (85ba638)
  • keys: a key keeps its proxy while a plugin listing it is pending, as in lazy.nvim, so another plugin's keys on the same lhs don't stop it loading (bfd84e3)
  • keys: a later spec's key replaces an earlier one (85ba638)
  • keys: a plugin drops its key proxies as it loads, as in lazy.nvim, so a plugin that maps a key only when it's free (flash.nvim's ; and ,) gets it (bfd84e3)
  • keys: two strings in keys are two keys unless the second can only be an rhs, so { '<leader>d', 'dd' } needs a field or nesting to stay one key (85ba638)
  • lazy: a plugin whose function-form trigger throws stays lazy instead of loading at startup (936649e)
  • lazy: an event with no real event in it, such as LazyFile, leaves the plugin eager with a warning (85ba638)
  • lazy: no proxy over what a function-form trigger already loaded (936649e)
  • lazy: set up triggers in a session that installs a plugin (85ba638)
  • loader: a function-form opts that throws is reported once and the plugin still loads without its config, as in lazy.nvim, instead of staying pending (bfd84e3)
  • loader: a plugin already on 'runtimepath' that loads after a config turned detection on gets its ftdetect/ once, not twice (bfd84e3)
  • loader: a require or build after startup sources plugin/, and a failing dependency doesn't stop its parent (85ba638)
  • loader: report a plugin/ script's error without failing the load (936649e)
  • loader: source a plugin's dependencies before its plugin/, in the order they're listed (85ba638)
  • merge: a disabled dependency no longer disables the plugin listing it (85ba638)
  • merge: a plugin's specs merge in import order, as in lazy.nvim, so a later spec under dependencies overrides a top-level one and its function opts sees the top-level opts (bfd84e3)
  • merge: a table listed at the top level and under a lazy parent's dependencies loads eagerly (#49) (85ba638)
  • merge: clear opts keys set to vim.NIL (#47) (3bd8cdf)
  • merge: drop a removed plugin's specs before deriving what stays (#49) (871104e)
  • merge: plugins under an optional or disabled parent's specs are dropped (#49) (85ba638)
  • merge: removals resting on other removals no longer depend on import order (936649e)
  • merge: the last spec to set enabled or cond wins, instead of any false (85ba638)
  • module_loader: require no longer loads a plugin whose name resembles a module it doesn't provide; a plugin registering a module from plugin/ needs a trigger of its own (936649e)
  • module_loader: a require loads a lazy plugin only when the plugin holds the module's file, as in lazy.nvim; one with ...
Read more

v2.0.4

Choose a tag to compare

@github-actions github-actions released this 26 Sep 05:11
ec09994

2.0.4 (2026-09-25)

Bug Fixes

  • utils: allow non-GitHub URLs while still expanding the short form GitHub owner/repo paths (#42) (a6fdbf5)
  • utils: only pass git URLs through [1]; flag local paths in validate (#44) (451a0bb), closes #42

v2.0.3

Choose a tag to compare

@github-actions github-actions released this 23 Sep 23:22
56baaa8

2.0.3 (2026-09-22)

Bug Fixes

  • merge: fold specs deriving the same plugin name, matching lazy.nvim (#40) (892385a), closes #39

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 20 Aug 18:04
b9146b1

2.0.2 (2026-08-20)

Bug Fixes

  • import: explicit src/url/dir overrides [1] shorthand, matching lazy.nvim (#36) (7b40442)

v2.0.1

Choose a tag to compare

@github-actions github-actions released this 02 Aug 00:41
f1af873

2.0.1 (2026-08-02)

Bug Fixes

  • import: added support of importing spec-files directly, as it was in lazy.nvim (#30) (0b61779)

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 03 Jun 22:46
1a5a7f2

⚠ BREAKING CHANGES

2.0.0 removes every previously deprecated setup() option, the zpack.add()
function, and the legacy :Z* commands. Update your config before upgrading:

Removed in 2.0 Replacement
setup({ confirm = … }) setup({ defaults = { confirm = … } })
setup({ disable_vim_loader = true }) setup({ performance = { vim_loader = false } })
setup({ plugins_dir = 'dir' }) a { import = 'dir' } entry in your spec list
setup({ cmd_prefix = 'Z' }) setup({ cmd_name = 'Z' })
legacy :ZUpdate / :ZClean / :ZDelete / :ZRestore / :ZLoad / :ZBuild :ZPack update / clean / delete / restore / load / build (or :Z … with cmd_name = 'Z')
setup({ auto_import = … }) removed — was already a no-op in 1.x
require('zpack').add(…) removed — was already a no-op in 1.x

See Upgrading from 1.x to 2.0 for the full migration guide.

Features

  • adopt Neovim plugin best practices (#23) (2f45de6)
  • close lazy.nvim parity gaps across lazy triggers (#27) (9ed473a)
  • lazy-parity: add defaults.lazy and defaults.version (#29) (d52f0dd)
  • lazy.nvim spec parity (pin/optional/dev/specs/build/reload/sync) (#28) (b6f82cd)
  • remove deprecated features for 2.0.0 (#25) (4681a74)
  • support bang on :ZPack update/restore; document 0.13 native commands (4f9b312)
  • sync state with vim.pack via PackChanged on plugin removal (0b65048)

Bug Fixes

  • address PR #21/#22 review follow-ups (c9c6c61)
  • command-specific legacy command deprecation notice (8970a43)
  • correct bang placement in usage hints; always warn on legacy commands (2f4bf35)
  • guard non-number priority and non-string import field (af3f109)
  • guard non-string src/url/dir in normalize_source (b127f63)
  • harden lazy-load path against operator-pending loss + throw-leaks (#26) (c6079d5)
  • preserve typeahead order on multi-key sequences (6b99fcb)

Code Refactoring

  • :ZPack with subcommands (d197fc6)

v1.2.1

Choose a tag to compare

@zuqini zuqini released this 12 May 05:21
8d02f50

What's Changed

  • docs: add migration notes for install feedback and passive libraries on by @zuqini in #14
  • docs: split general tips from lazy.nvim migration notes by @zuqini in #15
  • docs: rename tips subsection to gotchas by @zuqini in #16
  • feat: forward expr/silent/noremap/replace_keycodes on KeySpec by @zuqini in #19

Full Changelog: v1.2.0...v1.2.1

v1.2.0 — public introspection API + opts merging refactor

Choose a tag to compare

@zuqini zuqini released this 13 Apr 20:28
d3cc74d

What's Changed

  • feat: add public introspection API for third-party tooling by @zuqini in #12
  • refactor: collapse opts merging to single authoritative path by @zuqini in #13

Full Changelog: v1.1.2...v1.1.3

v1.1.2 — lazy-loading event re-firing bug fixes + polish

Choose a tag to compare

@zuqini zuqini released this 09 Apr 06:54
7ea1529

What's Changed

  • fix: forward ev.data, validate buffer, chain dependencies, and dedupl… by @zuqini in #10

Full Changelog: v1.1.1...v1.1.2

v1.1.1 - bug-fix/stability

Choose a tag to compare

@zuqini zuqini released this 09 Apr 00:07
a782b9d

What's Changed

  • fix: lazy-loaded plugins not fully activating by @zuqini in #8

Full Changelog: v1.1.0...v1.1.1

0