Skip to content

Releases: mplusp/pack-manager.nvim

v0.5.3 - Fix PackMenu Number Key Selection

26 Jul 07:01

Choose a tag to compare

🐛 Bug Fix Release

This patch release fixes a critical issue with the PackMenu interface where number key selection wasn't working properly.

🔧 Fixed

  • Number key selection in PackMenu - Fixed loop termination logic that prevented number keys (1-8) from properly selecting menu options
  • Menu navigation - Exit keys (q/Esc) now work reliably with proper break statements

📝 Technical Details

The issue was caused by incorrect loop termination conditions in the menu's input handling. The fix implements explicit break statements when:

  • A valid number key (1-8) is pressed and matches a menu option
  • Exit keys (q or Esc) are pressed

This ensures the menu responds immediately to user input instead of continuing to wait for additional key presses.

✅ Testing

All existing tests pass and the menu now functions correctly with number key navigation.


Users experiencing issues with PackMenu not responding to number keys should update to this version.

🤖 Generated with Claude Code

v0.5.2 - Central Floating Menu Interface

26 Jul 06:42

Choose a tag to compare

🎯 New Feature: Central Floating Menu Interface

This patch release introduces a major UX improvement with a Mason-style central floating menu that provides easy access to all pack-manager functionality.

✨ New Features

:PackMenu Command

  • Mason-like floating menu interface with professional styling
  • 8 intuitive menu options covering all plugin management tasks:
    1. Add Plugin - Install new plugins
    2. List Plugins - View all installed plugins
    3. Update Plugins - Update specific or all plugins
    4. Remove Plugin - Interactive plugin removal
    5. Disable Plugin - Temporarily disable plugins
    6. Enable Plugin - Re-enable disabled plugins
    7. Manage Inactive - Handle inactive plugins with sub-options
    8. Plugin Info - View detailed plugin information

Smart Sub-menus

  • Update menu offers "Update All" or individual plugin selection
  • Inactive plugins menu provides Disable/Remove/List options
  • Plugin info displays detailed information in floating windows

Professional UI Design

  • Centered floating windows with rounded borders
  • Keyboard navigation using number keys (1-8)
  • Clear exit options with q or Esc keys
  • Consistent styling with existing floating window system

🚀 Benefits

  • Single entry point to all plugin management features
  • Improved discoverability - no need to remember individual commands
  • Better user experience similar to popular tools like Mason
  • Maintains full compatibility with existing commands
  • Perfect for new users while preserving power-user workflows

📋 Usage

Simply run:

:PackMenu

The menu provides intuitive access to all functionality while preserving the full command-line interface for advanced users.

🔧 Technical Details

  • Full API integration - require('pack-manager').show_main_menu()
  • Comprehensive test coverage for all menu functionality
  • Updated documentation with usage examples
  • Zero breaking changes - all existing commands work as before

📖 Updated Documentation

The README now includes detailed PackMenu documentation and usage examples in the programmatic API section.


This release makes pack-manager significantly more user-friendly while preserving all existing functionality!

🤖 Generated with Claude Code

v0.5.1 - Critical Hotfix

26 Jul 00:13

Choose a tag to compare

🚨 Critical Hotfix v0.5.1

This hotfix addresses a critical bug in v0.5.0 where floating window dialogs would freeze Neovim, preventing user interaction.

🐛 Bug Fixes

  • Fixed freezing floating window dialogs - Users can now properly interact with Yes/No confirmation prompts
  • Improved input handling - Replaced infinite while loops with proper vim.fn.getchar() implementation
  • Removed conflicting keymaps - Eliminated keymap setup that was causing input conflicts
  • Enhanced event handling stability - More robust handling of user input events

📋 What was broken in v0.5.0?

  • Confirmation dialogs (Yes/No prompts) would freeze Neovim
  • Users couldn't respond to plugin installation confirmations
  • The floating window UI system was unusable

✅ What's fixed in v0.5.1?

  • All floating window dialogs now work correctly
  • Proper keyboard navigation (Y/N, Enter, Escape)
  • Stable input handling without freezing

If you're using v0.5.0, please update to v0.5.1 immediately to restore full functionality.


🤖 This release was generated collaboratively between Marco Peluso (human) and Claude (AI assistant)

v0.5.0 - Floating Window UI System

26 Jul 00:05

Choose a tag to compare

🎯 Major Release: Floating Window UI System

This release completely transforms the user experience of pack-manager.nvim by replacing all command-line dialogs with beautiful, interactive floating windows.

New UI Features

🖼️ 4 Types of Interactive Dialogs

  • Confirmation dialogs - Clean Yes/No prompts with visual feedback
  • Selection dialogs - Interactive menus with keyboard navigation
  • Input dialogs - Text entry with live editing capabilities
  • Info dialogs - Dismissible informational messages

⌨️ Rich Keyboard Navigation

  • Confirm dialogs: Y/N keys, Enter for default, Esc/q to cancel
  • Select dialogs: j/k or arrow keys, number keys for direct selection
  • Input dialogs: Normal editing, Ctrl+S to save, Esc to cancel
  • Info dialogs: Any key to dismiss

🎮 Dramatically Enhanced User Experience

Before v0.5.0:

Remove plugin 'mason'? (y/N): _

After v0.5.0:

┌─────── Confirmation ───────┐
│ Remove plugin 'mason'?     │
│                            │
│ [Y]es / [N]o              │
└────────────────────────────┘

🔧 Technical Implementation

  • New module: lua/pack-manager/ui.lua - Complete floating window system
  • Replaced 16 vim.fn.input calls throughout the codebase
  • Test mode support - Functions return sensible defaults in test environments
  • Full backward compatibility - Same functionality, dramatically better UX

📦 What's Changed

  • All user dialogs now use centered floating windows with rounded borders
  • Consistent visual styling with pack-manager branding
  • No more command-line interruptions - all UI is modal
  • Responsive layout that adapts to content size and screen dimensions
  • Comprehensive test coverage with proper UI interaction mocking

🚀 Upgrade Impact

Users will immediately notice:

  • Professional-grade UI that feels modern and polished
  • Faster interactions with intuitive keyboard shortcuts
  • Better visual feedback with clear options and navigation hints
  • Consistent experience across all plugin management operations

This release elevates pack-manager.nvim from a functional CLI tool to a premium plugin manager with exceptional user experience.


🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

v0.4.1 - Bug Fixes and Plugin Addition

25 Jul 23:26

Choose a tag to compare

pack-manager.nvim v0.4.1 - Bug Fixes and Plugin Addition

This patch release fixes bugs from v0.4.0 and adds back the fidget plugin.

🐛 Bug Fixes

Fixed Duplicate Plugin Suggestions

  • Fixed duplicate listings: Plugin suggestions and tab completion now show each plugin only once
  • Cleaner display: Prefers shorter names (e.g., "mason" instead of "mason" + "mason.nvim")
  • Alphabetical sorting: Suggestions are now sorted for better readability
  • Better UX: Users still can type either version but see clean unique list

Before:

- mason (mason-org/mason.nvim)
- mason.nvim (mason-org/mason.nvim)  # duplicate\!

After:

- mason (mason-org/mason.nvim)      # clean, no duplicates

Fixed nvim-lspconfig Branch Issue

  • Correct branch: nvim-lspconfig now uses master branch instead of incorrect main
  • Better matching: Improved branch detection logic for more reliable pattern matching
  • Added test: Ensures nvim-lspconfig consistently uses the right branch

✨ Additions

Re-added Fidget Plugin

  • Added back: fidget plugin (j-hui/fidget.nvim) in common suggestions
  • LSP category: Properly categorized as LSP tool with automatic setup() calls
  • Tab completion: Available in tab completion without duplicates

🧪 Testing

  • 60/60 tests passing (up from 59)
  • Added test for nvim-lspconfig branch handling
  • All existing functionality preserved

📝 Usage Examples

" Install fidget (LSP progress indicator)
:PackAdd fidget

" Install nvim-lspconfig (now uses correct master branch)
:PackAdd lspconfig

" See clean suggestions list without duplicates
:PackAdd invalid-name

🔧 Technical Details

  • Fixed deduplication in both error messages and tab completion
  • Improved branch mapping with string.find for reliable matching
  • Added fidget to LSP patterns for proper categorization

Full Changelog: v0.4.0...v0.4.1

v0.4.0 - Unified Plugin Installation

25 Jul 23:12

Choose a tag to compare

pack-manager.nvim v0.4.0 - Unified Plugin Installation

This release significantly simplifies the plugin installation interface by combining commands and enhancing the user experience.

🚀 Major Changes

Unified PackAdd Command

  • Combined functionality: PackAdd now handles all installation methods in one command
  • Multiple input formats:
    • Common plugin names: :PackAdd mason
    • GitHub shorthand: :PackAdd folke/tokyonight.nvim
    • Full URLs: :PackAdd https://github.com/neovim/nvim-lspconfig.git
  • Tab completion: Auto-complete common plugin names for faster installation
  • Intelligent detection: Automatically detects input format and handles appropriately

Removed Commands

  • Removed PackInstall: Functionality merged into enhanced PackAdd
  • Removed PackDelPattern: Simplified interface by removing less common functionality

✨ Features

All existing features are preserved:

  • Immediate plugin loading - No restart required after installation
  • Smart plugin detection - Automatic categorization and configuration
  • Interactive setup - Guided configuration with context-aware prompts
  • Automatic setup() calls - Proper plugin initialization
  • Colorscheme activation - Immediate theme application option

🛠️ Breaking Changes

  • PackInstall command removed - Use PackAdd with plugin names instead
    • Before: :PackInstall mason
    • After: :PackAdd mason
  • PackDelPattern command removed - Use other removal commands instead

📝 Examples

" Install by common name (with tab completion)
:PackAdd mason
:PackAdd telescope
:PackAdd tokyonight

" Install by GitHub shorthand
:PackAdd folke/tokyonight.nvim
:PackAdd nvim-telescope/telescope.nvim

" Install by full URL
:PackAdd https://github.com/mason-org/mason.nvim

🧪 Testing

  • All 59 tests passing
  • Added comprehensive tests for unified command functionality
  • Verified immediate loading works with all input formats

📚 Documentation

  • Updated README.md with new command syntax and examples
  • Updated help documentation (:help pack-manager)
  • Clear migration guide for breaking changes

Full Changelog: v0.3.0...v0.4.0

v0.3.0: Complete Plugin Management with Updates

25 Jul 22:39

Choose a tag to compare

🚀 Complete Plugin Management with Updates

This minor release adds comprehensive plugin update functionality, completing the full plugin lifecycle management for vim.pack users.

✨ New Features

🔄 Plugin Update System

  • :PackUpdate [plugin_name] - Update specific plugin or all plugins

    • With plugin name: updates that specific plugin
    • Without arguments: updates ALL installed plugins
    • Tab completion for installed plugin names
    • Confirmation prompts for safety
  • :PackUpdateAll - Dedicated bulk update command

    • Updates all installed plugins at once
    • Shows plugin count before updating
    • Clear progress feedback and confirmation

🛡️ Safety & User Experience

  • Smart plugin detection - verifies plugin exists before updating
  • Confirmation prompts - prevents accidental bulk updates
  • Clear feedback - informative status messages throughout process
  • Error handling - graceful handling of missing plugins and cancellations
  • Tab completion - for all update commands

🧪 Comprehensive Test Coverage

Added 9 new tests covering:

  • ✅ Specific plugin updates
  • ✅ Bulk plugin updates
  • ✅ Plugin not found scenarios
  • ✅ User cancellation handling
  • ✅ Empty plugin list handling
  • ✅ Function availability checks

Total: 54 tests - All passing ✅

📚 Complete Documentation Update

README.md Enhancements:

  • New "Plugin Updates" section with detailed examples
  • Updated feature list highlighting update capabilities
  • Enhanced programmatic usage examples
  • Updated command reference with all new functionality

Neovim Help Documentation:

  • Updated doc/pack-manager.txt with proper help tags
  • Added comprehensive examples section
  • Documented plugin categorization system
  • Complete command reference with usage patterns

🔧 Programmatic API

New functions available for scripting:

local pack_manager = require('pack-manager')

-- Update specific plugin
pack_manager.update_plugin('tokyonight.nvim')

-- Update all plugins  
pack_manager.update_plugin('')  -- Empty string
pack_manager.update_all_plugins()  -- Dedicated function

🎯 Why This Release?

This completes the plugin management lifecycle:

  • Install: Smart installation with configuration generation
  • Update: Single or bulk updates with safety checks
  • Remove: Temporary and permanent removal options
  • Manage: Disable/enable system for safe plugin management

📊 Feature Summary

pack-manager.nvim now provides:

  • Complete lifecycle management for vim.pack plugins
  • Intelligent installation with automatic setup generation
  • Flexible update system for maintenance
  • Safe removal options with reversible disable/enable
  • Comprehensive documentation in README and Neovim help

🙏 Credits

Created by Marco Peluso with implementation by Claude (Anthropic's AI assistant).

Full Changelog: v0.2.1...v0.3.0

v0.2.1: Simplified Command Structure

25 Jul 22:29

Choose a tag to compare

🧹 Simplified Command Structure

This patch release simplifies the plugin deletion workflow by reducing command complexity and improving clarity.

✨ Changes

🗑️ Simplified Deletion Commands

  • Removed PackDelComplete command to reduce complexity
  • Renamed PackDel to PackDelTemp for better clarity
  • Now only 2 deletion commands instead of 3:
    • :PackDelTemp - Temporary removal (reinstalls on restart)
    • :PackDelFull - Permanent removal with config cleanup

📚 Updated Documentation

  • Removed confusing PackDelComplete references
  • Updated all command examples to use PackDelTemp
  • Clearer distinction between temporary and permanent removal

🔧 Technical Improvements

  • Removed unused function exports
  • Cleaned up internal code structure
  • Maintained full backward compatibility for existing workflows

🎯 Why This Change?

The previous three deletion commands (PackDel, PackDelComplete, PackDelFull) were overwhelming and confusing for users. The new structure provides:

  • Clear intent: Temporary vs Permanent
  • Reduced complexity: Fewer commands to remember
  • Better UX: Less decision paralysis

🛠️ Migration Guide

If you were using the removed commands:

  • Replace :PackDel with :PackDelTemp
  • Replace :PackDelComplete with :PackDelFull (for permanent removal)

🙏 Credits

Created by Marco Peluso with implementation by Claude (Anthropic's AI assistant).

Full Changelog: v0.2.0...v0.2.1

v0.2.0: Enhanced Installation Experience

25 Jul 22:03

Choose a tag to compare

🎉 Enhanced Installation Experience

This release introduces intelligent plugin installation with automatic configuration generation and interactive setup options.

✨ New Features

🧠 Smart Plugin Detection

  • Automatically categorizes plugins (colorschemes, LSP, UI, Git, etc.)
  • Generates appropriate configuration templates based on plugin type
  • Context-aware setup for different plugin categories

🎨 Interactive Installation

  • Guided setup process with user-friendly prompts
  • Option to immediately apply colorscheme plugins
  • Choice to automatically add require statements to init.lua
  • Smart defaults with ability to customize

🔧 Automatic Configuration

  • Generates proper require().setup() calls for plugins that need them
  • Creates commented vim.cmd.colorscheme() lines for theme plugins
  • Intelligently places configuration in the correct format

📝 Enhanced Commands

  • :PackAdd - Now with intelligent configuration generation
  • :PackInstall - Quick install with smart categorization

🛠️ Improvements

  • Added comprehensive test coverage for all new features
  • Improved path management with centralized constants
  • Fixed CI/CD pipeline issues
  • Enhanced documentation with detailed feature descriptions

📊 Test Coverage

  • 39 tests passing with 100% success rate
  • Full coverage of plugin categorization
  • Interactive installation flow testing
  • Configuration generation validation

🔧 Technical Details

  • Plugin categories supported:
    • Colorschemes: tokyonight, catppuccin, gruvbox, nord, etc.
    • LSP: lspconfig, mason, completion plugins
    • UI: lualine, bufferline, telescope, nvim-tree, oil
    • Git: gitsigns, fugitive
    • General: All other plugins with sensible defaults

📚 Example Usage

:PackAdd folke/tokyonight.nvim
" Prompts:
" - Create config file? (Y/n)
" - Add require statement? (Y/n) 
" - Apply this colorscheme now? (y/N)

:PackInstall telescope
" Automatically detects as UI plugin
" Generates config with require('telescope').setup()

🙏 Credits

Created by Marco Peluso with implementation by Claude (Anthropic's AI assistant).

Full Changelog: v0.1.0...v0.2.0

pack-manager.nvim v0.1.0 - Initial Release

25 Jul 21:15

Choose a tag to compare

pack-manager.nvim v0.1.0 - Initial Release 🎉

Enhanced commands for Neovim's built-in vim.pack plugin manager.

🚀 What's New

This is the first official release of pack-manager.nvim! This plugin provides a comprehensive set of user commands to manage plugins installed via Neovim 0.12+'s built-in vim.pack system.

✨ Features

Plugin Management

  • Safe plugin removal with confirmation prompts
  • Reversible disable/enable system that preserves configurations
  • Bulk operations for inactive plugins
  • Interactive removal with numbered menus
  • Plugin installation with GitHub shorthand support

User Experience

  • Smart tab completion for all commands
  • Automatic config cleanup including init.lua modifications
  • Pattern-based removal for bulk operations
  • Comprehensive safety features with confirmation dialogs

Technical Excellence

  • Cross-platform path handling using vim.fn.stdpath()
  • Comprehensive testing infrastructure with busted framework
  • Proper error handling and graceful failures
  • Clean plugin architecture following Neovim best practices

📦 Installation

Using vim.pack (Neovim 0.12+)

vim.pack.add({
  "mplusp/pack-manager.nvim"
})

Using lazy.nvim

{
  "mplusp/pack-manager.nvim",
  cond = function()
    return vim.fn.has('nvim-0.12') == 1 and vim.pack ~= nil
  end,
}

🎯 Key Commands

  • :PackList - List all plugins with status
  • :PackAdd <owner/repo> - Add new plugins
  • :PackDisable <name> - Safely disable plugins (recommended)
  • :PackEnable <name> - Re-enable disabled plugins
  • :PackRemove - Interactive removal menu
  • :PackDisableInactive - Clean up unused plugins

⚠️ Important Notes

  • Requires Neovim 0.12+ (nightly builds)
  • Use at your own risk - Always backup your configuration
  • Not extensively tested in production environments
  • No warranties - This is an experimental project

🤝 About This Project

This project was created as a collaborative effort between Marco Peluso (human developer) and Claude (Anthropic's AI assistant) to explore AI capabilities in software development. Marco provided direction and requirements, while Claude implemented all code, documentation, and testing infrastructure.

📋 Requirements

  • Neovim 0.12+ (nightly builds)
  • Built-in vim.pack functionality

Full documentation available in the README