8000 chore(main): release 3.0.0 by github-actions[bot] · Pull Request #48 · zuqini/zpack.nvim · GitHub
[go: up one dir, main page]

Skip to content
8000

chore(main): release 3.0.0 - #48

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--zpack.nvim
Open

github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--zpack.nvim

Conversation

@github-actions
@github-actions github-actions Bot commented Oct 30, 2026 •
Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

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 only the top-level name stays lazy (241c9ba)
  • module_loader: a later require of a module whose load threw raises that error instead of returning true (241c9ba)
  • module_loader: a slash-form require('lspconfig/util') loads the pending plugin holding the module (241c9ba)
  • module_loader: load the plugin holding a module in a shared namespace, including a compiled one (936649e)
  • module_loader: when several pending plugins hold a module, the one named like it loads, as in lazy.nvim (241c9ba)
  • pack: a soft version installs from the default branch after another plugin's clone failed (936649e)
  • pack: read a tag as vim.pack does when deciding if one fits (936649e)
  • pack: restore a locked plugin at its revision when no tag fits its soft version (936649e)
  • pack: say when a plugin needs a restart to reach a tag or to update (936649e)
  • runtime: zpack escapes the path of each file it sources itself, so a # or % in the data path no longer fails with E194/E484 and loses the file (bfd84e3)
  • setup: setup() with no spec and no lua/plugins, or one holding only dotfiles, is quiet, as in 2.x (936649e)
  • setup: setup()'s options no longer count as spec fields, so specs written beside them all install (936649e)
  • setup: a plugin vim.pack can't add no longer aborts setup() (85ba638)
  • setup: a single spec with no array part, such as { import = ..., defaults = ... }, is read as a spec rather than ignored for the default import (936649e)
  • setup: a string is the module to import, in setup('custom.plugins') and in spec, rather than reported and replaced by the default import (936649e)
  • setup: any other setup() argument that isn't a table is reported, and the default import goes on (936649e)
  • setup: source plugin/ when setup() runs after startup (85ba638)
  • startup: :colorscheme loads the pending plugin holding the scheme first, as in lazy.nvim, so a Vim colors file can call its plugin's autoload/ from an init or for a lazy plugin, and an eager scheme plugin set from an earlier plugin's config (themery.nvim's restore) gets its own config first (bfd84e3)
  • startup: a require from an init loads the eager plugin holding the module, as in lazy.nvim, instead of failing with "module not found" (bfd84e3)
  • startup: a lazy plugin's cmd, event, ft and keys are set up before the inits, as in lazy.nvim, so an init running one loads the plugin (bfd84e3)
  • startup: an eager plugin's ftdetect/ runs when filetype detection is on before setup(), as in lazy.nvim, so LazyVim's vimtex opens a .cls as tex (bfd84e3)
  • startup: run an eager plugin's config once when a lazy dependent loads it (936649e)
  • utils: a version or tag of the wrong type is dropped with a warning instead of failing every plugin (936649e)
  • utils: a version string git can't take as a ref, such as *, is a semver range (85ba638)
  • validate: warn about a sem_version that isn't a semver range, and fall through to branch and defaults.version (936649e)
  • version: a semver string no tag fits follows the default branch (85ba638)
  • version: version fields follow lazy.nvim's priority: commit, tag, version, sem_version, branch, default (85ba638)

Performance Improvements

  • speed up startup with many plugins (#50) (2966b92)
  • stop tracing zpack's startup code (936649e)

Code Refactoring

  • module_loader: remove the unreachable profiler; setup({ profiling = ... }) is ignored, and print_profile and get_profile are gone (936649e)

This PR was generated with Release Please. See documentation.

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--zpack.nvim branch 3 times, most recently from 8bf9cf7 to 9a09356 Compare October 31, 2026 08:00
@github-actions github-actions Bot changed the title chore(main): release 2.1.0 chore(main): release 3.0.0 Oct 31, 2026
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--zpack.nvim branch 2 times, most recently from 240ced3 to 47c2382 Compare November 2, 2026 20:13
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--zpack.nvim branch from 47c2382 to 139b76e Compare November 3, 2026 19:16
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--zpack.nvim branch from 139b76e to 4360718 Compare November 6, 2026 05:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Support opts_extend

0 participants

0