π¨ Breaking Changes
-
Config restructure: Introduced `hooks` system, renamed UI picker config keys
- `ui.file_picker` β `ui.local_picker`
- `mounts.unmount_on_exit` β `hooks.on_exit.auto_unmount`
- `mounts.auto_change_dir_on_mount` β `hooks.on_mount.auto_change_to_dir`
- Deprecation shims provided (removal planned after January 15th)
-
SSH-first authentication: Now establishes ControlMaster socket before mounting
- Eliminates repeated auth prompts for terminals and live operations
- Requires `~/.ssh/sockets/` directory with `chmod 700`
-
Command/API renames: Clearer naming conventions
- `SSHBrowse` β `SSHFiles`, `SSHEdit` β `SSHConfig`
- API functions renamed for clarity
-
SSHFS options: Simplified configuration format (table-based conversion to `-o` args)
β¨ Features
Live Remote Search
- Stream grep/find commands over SSH for faster remote searching
- Works on mounted SSHFS filesystems using the ControlMaster connection
- Support for Telescope, fzf-lua, snacks.nvim, and mini.pick
- Graceful fallback to local operations if remote streaming fails
- Optimized previews for large remote files
SSH Enhancements
- ControlMaster support for connection reuse across mount, terminals, and live commands
- Comprehensive SSH config parsing (Match directives, ProxyJump)
- Asynchronous authentication with fallback to interactive terminals
- Graceful ControlMaster cleanup on disconnect
UI Improvements
- Health check (`:checkhealth sshfs`) for dependencies and config validation
- Mount selection for multiple concurrent connections
- Unified mount command with improved prompts
- Configurable netrw command
Integration Updates
- Added snacks.nvim integration (files, grep, live grep/find)
- Added mini.pick integration (files, grep, live grep/find)
- Improved previews with line limits for large files
- Fixed netrw and ranger directory handling
π Fixes
- Prevent shell injection by using command tables
- Fixed connection table modification during iteration
- Correct base_mount_dir initialization order
- Fixed SSH terminal with proper jobstart configuration
- Improved error handling and notifications
- Fixed mini.pick API compatibility
- Tab-local directory changes (tcd) for proper scoping
β‘ Performance
- Optimized Telescope previews for remote files
- Limited live grep/find output to 10,000 lines for performance
- Live grep/find operations run commands on remote host
ποΈ Refactoring
- Modular picker integration system with lazy loading
- Centralized SSH command building
- Streamlined connection handling
- Reorganized codebase structure (lib/, ui/, integrations/)
- Comprehensive LuaDoc comments across all modules
π Documentation
- Overhauled README with clarity improvements
- Added CLAUDE.md for development guidance
- Updated configuration examples
- Added module purpose comments