Skip to main content
Glama

clippy

by neilberkman
CHANGELOG.md18.3 kB
# Changelog Notable changes to clippy. ## [1.3.4] - 2025-09-22 ### Enhanced - Improved MCP server tool descriptions to advertise the efficient `force_text` pattern - Added PRO TIPS explaining how to use temp files with `force_text='true'` for iterative editing - Helps LLMs discover this pattern for more efficient code editing workflows - Particularly useful for production debugging scenarios ## [1.3.3] - 2025-01-26 ### Fixed - Fixed interactive picker issues (#6) - Resolved picker UI problems - Improved interaction handling ## [1.3.2] - 2025-01-25 ### Fixed - Fixed timezone handling in recent files - File ages now calculated using UTC to avoid timezone confusion - Prevents negative durations when files have future timestamps in local timezone - Added comprehensive timezone tests ## Draggy [0.13.3] - 2025-01-25 ### Fixed - Fixed timezone handling in recent downloads (uses shared core library) - File ages now calculated using UTC to avoid timezone confusion - Prevents negative durations when files have future timestamps in local timezone ## Draggy [0.13.2] - 2025-01-24 ### Fixed - Folders are no longer shown in recent files list - Only actual files are displayed, not directories - Improves usability since folders can't be meaningfully copied/pasted ## [1.3.1] - 2025-01-24 ### Fixed - Fixed `-t`/`--text` flag not working with non-standard text files (e.g., .exs files) - Now falls through to MIME detection when UTI is not recognized as text - Ensures all text files can have their content copied with `-t` flag ## Draggy [0.13.1] - 2025-01-23 ### Changed - **Improved UI polish**: - Removed redundant info bar, keeping only footer hint - Shows "No files" instead of "0 files" when empty - Option key hint styled as blue badge for better visibility - Auto-switch toast now has dismissible X button ### Fixed - Fixed macOS version mismatch warnings during build - Set deployment target to macOS 14.0 for both Go and Swift - Fixed critical bug where Option key previews would trigger anywhere on screen when popover was closed - Properly cleanup timers when popover closes - Stop monitoring modifier keys when app loses focus - Clear view models on popover dismissal ## [1.3.0] - 2025-01-22 ### Added - **MIME type detection for all files**: Files now have their MIME types detected - Uses gabriel-vasile/mimetype library for accurate detection - MIME types passed through C bridge to Draggy - **Human-friendly file type display**: Shows readable types instead of technical MIME - Integrated neilberkman/mimedescription library for type descriptions - Shows "PDF document", "Word document", "PNG image" etc. - Smart fallback for unknown types ### Changed - **Enhanced clippy picker display**: - Shows file type next to each file (e.g., [PDF], [PNG], [Word]) - Dynamic terminal width adjustment for better layout - Middle truncation for long filenames (shows start and end) - Improved spacing calculations ### Draggy [0.13.0] - **File type information in preview**: Hold Option to see complete file details - Preview window now shows filename, file type, size, folder, and time - Improved metadata layout with visual separator - Better typography and spacing for readability - **Updated data format**: Now parses MIME types from bridge - **Fixed deprecation warning**: Updated onChange handler for macOS 14+ ## [1.2.6] - 2025-01-21 ### Added - **Folder selection for recent files**: Control which folders to search - New `--folders` flag to specify folders (e.g., `--folders downloads,desktop`) - Supports downloads, desktop, and documents folders - Config option `default_folders` to set default search folders - Updated help text to reflect broader search scope ### Draggy [0.12.0] - **Folder preferences**: Configure which folders to search for recent files - New preferences section for folder selection - Checkboxes for Downloads, Desktop, and Documents - Settings persist across app restarts - **Improved recent files display**: Better organization and UI - Enhanced file row display with better formatting - Improved view model for recent files handling - Better integration with folder preferences - **UI refinements**: Various interface improvements - Better settings window layout - Improved content view organization - Enhanced file browsing experience ## [1.2.5] - 2025-01-21 ### Fixed - MCP server panic "Prompt capabilities not enabled" - Upgraded mcp-go from accidentally downgraded v0.10.0 back to v0.34.0 - Restores MCP server functionality for AI/LLM integration ## [1.2.2] - 2025-01-20 ### Draggy [0.11.3] - Fixed auto-switch message behavior - X button now only dismisses the message, doesn't switch views - Info bar with tips now appears after dismissing message - Fixed update notification button truncation - "Copy Command" button shortened to "Copy" with tooltip - UI improvements for better clarity ## [1.2.2] - 2025-01-20 ### Fixed - Recent downloads flags (`-r 3`, `-i 5m`) now work correctly - Fixed argument parsing to support space-separated values - Previously required `=` syntax (e.g., `-r=3`) - Help text now correctly shows usage examples ### Draggy [0.11.2] - Fixed blank "Draggy Settings" window appearing at startup - Properly configured SwiftUI App scene to prevent default window - Added window closing on app launch as safety measure - Only affects release builds (not seen in development) - Previous fixes from 0.11.1: - Fixed settings window content display - Fixed version display (now shows v0.11.0) - Fixed window title consistency ## [1.2.1] - 2025-01-20 ### Fixed - Version information now properly displayed in `--version` output - Fixed ldflags in GoReleaser to correctly set version variables ## [1.2.0] - 2025-01-20 ### Added - **Clear clipboard**: New `--clear` flag to explicitly empty the clipboard - `clippy --clear` empties the clipboard - Empty input (e.g., `echo -n | clippy`) also clears the clipboard - **MCP server improvements**: Better guidance for AI tools on when to copy text vs file references - Clearer tool descriptions to prevent incorrect parameter usage ### Changed - **BREAKING**: Changed default behavior to always copy files as file references, not content - Text files (.txt, .md, etc.) now copy as files by default - Added `--text` / `-t` flag to force copying text file content - This allows pasting text files into Finder/GUI apps as files ### Draggy [0.11.0] - **Version checking**: Check for updates when opening the app (max once every 2 hours) - Respects Homebrew installations with appropriate update instructions - Non-intrusive notification bar at the top of the window - **Onboarding improvements**: Fixed permission dialog UI issues - Fixed text truncation in permission messages - Fixed buttons not hiding after clicking Enable - Fixed window expanding to massive size - Improved visual design with borders and better spacing - **File previews**: Thumbnail generation for images and PDFs - Uses QuickLook, native image rendering, and PDF rendering - Smart caching to minimize performance impact - Toggle in preferences - **Double-click to open**: Quick file access without leaving the menu bar - **UI improvements**: Hand cursor on hover, helpful tooltips - **Bug fixes**: - Fixed drag-and-drop using simple NSItemProvider approach - Fixed clipboard persistence (files no longer disappear on restart) - Added ESC key support to close popover menu - Auto-show recent downloads when clipboard is empty - Fixed permission dialog z-order issues ## [0.9.0] - 2025-01-18 ### Added - **Draggy**: New optional GUI companion app for drag-and-drop workflows - Menu bar app that makes clipboard files draggable - Zero background activity - no polling, no battery drain - Event-driven architecture following Core vs Interface principles - Located in `gui/draggy/` directory - Not automatically installed with clippy (will be separate brew cask) ### Changed - Updated MCP server config to use Homebrew-installed clippy path ### Fixed - Fixed linter warnings in examples and main code ## [0.8.0] - 2025-01-18 ### Added - **MCP (Model Context Protocol) server**: New `mcp-server` subcommand enables AI assistants to use clippy - Integrate with Claude Desktop, Cursor, or any MCP-compatible AI tool - Three powerful tools exposed: - `clipboard_copy`: Copy text or files to clipboard programmatically - `clipboard_paste`: Paste clipboard content to files/directories - `get_recent_downloads`: List and work with recently downloaded files - Built with github.com/mark3labs/mcp-go for standard MCP compliance - Includes pre-built prompts for common operations - Simple setup: just add to claude_desktop_config.json - **New `-i` flag for interactive picker**: Clean separation between immediate copy (`-r`) and interactive mode (`-i`) - `clippy -i` - show interactive picker with recent files - `clippy -i 3` - show picker with 3 most recent files - `clippy -i 5m` - show picker for files from last 5 minutes - Both `-r` and `-i` accept the same arguments (DRY implementation) - **Lowercase 'p' key in picker**: Changed from 'P' to 'p' for copy & paste mode (easier to type) - **Text paste to directories**: Pasting text content to a directory now creates timestamped .txt files ### Changed - **Major architectural refactor**: Following Saša Jurić's Core vs Interface philosophy - Moved Bubble Tea picker from `pkg/recent/` to `cmd/clippy/` - Core library (pkg/) now only provides data and business logic - Interface elements (UI/TUI) live in cmd/ where they belong - This creates proper separation of concerns - **Simplified `-r` flag behavior**: Now always does immediate copy (no picker) - `clippy -r` - copies most recent download immediately - `clippy -r 3` - copies 3 most recent downloads immediately - Use `-i` flag for interactive picker mode - **Bubble Tea picker improvements**: Now supports both single and multi-select seamlessly - Space to toggle selection - Enter to copy (selected items or current item if nothing selected) - 'p' to copy & paste in one operation ### Fixed - **Clipboard synchronization bug**: Fixed "Heisenbug" where clipboard operations only worked with --debug flag - Replaced hacky sleep with proper NSPasteboard changeCount polling - Clipboard operations now wait for macOS to confirm completion - Uses NSRunLoop to properly handle asynchronous pasteboard operations - This is the correct way to handle clipboard operations in macOS CLI tools - **MCP tool naming**: Fixed validation error by changing tool names from forward slashes to underscores - **Directories in picker**: Fixed issue where directories appeared in the file picker ### Removed - **Removed --batch flag**: Functionality integrated into numbered copies (e.g., `clippy -r 3`) - **Removed --pick flag**: Use `-i` for interactive picker instead - **Removed picker from pkg/recent**: UI components now properly live in cmd/ ## [0.7.2] - 2025-07-17 ### Changed - **Major architectural refactor**: Moved all recent downloads functionality from pasty to clippy - Recent downloads is about file selection, which belongs in clippy (copy TO clipboard) - Pasty now focuses purely on pasting FROM clipboard - This creates cleaner separation of concerns - **New `--paste` flag in clippy**: Copy and paste in one step - `clippy file.txt --paste` - copy to clipboard AND paste to current directory - `clippy -r --paste` - copy recent download and paste here - `clippy -r --pick --paste` - pick file, copy it, and paste here ### Fixed - **Picker functionality**: Fixed `--pick` flag that was broken in v0.7.1 due to buggy wrapper function - **DRY refactor**: Removed `PastePickedRecentDownload()` wrapper, both tools now use shared `PickRecentDownload()` function - **Public API**: Made `CopyFileToDestination()` public for shared use between tools - **Test fixes**: Fixed hardcoded test expectations and handling of filenames with spaces ### Removed - **Recent downloads in pasty**: All `-r/--recent` functionality removed from pasty - Use `clippy -r --paste` instead of `pasty -r` - This is a breaking change but creates better architecture ## [0.7.1] - 2025-07-17 ### Changed - **Streamlined recent downloads UX**: `-r/--recent` now accepts optional time duration directly - `clippy -r 5m` instead of `clippy --recent --recent-time 5m` - `pasty -r 1h` instead of `pasty --recent --recent-time 1h` - Backward compatibility maintained with `--recent` long form - **Updated documentation**: All examples now show the streamlined `-r` usage pattern ## [0.7.0] - 2025-07-17 ### Added - **Recent downloads functionality**: Copy your most recent downloads without leaving the terminal - `clippy -r` / `pasty -r` - copy most recent download - `clippy -r 5m` / `pasty -r 5m` - time-based filtering - `clippy -r --batch` / `pasty -r --batch` - copy all files from recent batch download - `clippy -r --pick` / `pasty -r --pick` - interactive picker using promptui - **Smart Downloads folder detection**: Automatically finds and scans macOS Downloads folder - **Batch download handling**: Groups files downloaded within 30 seconds for batch operations - **Archive auto-detection**: Smart handling of common archive types (.zip, .tar.gz, .dmg, etc.) - **Separate debug and verbose modes**: `--debug` for technical details, `--verbose` for user-friendly output - **Enhanced logging**: Debug mode shows technical details while verbose shows user-friendly messages ### Technical - **Cobra CLI framework**: Professional command-line interface with comprehensive help - **Library-first architecture**: All functionality available as Go library functions - **Platform-specific build constraints**: Proper macOS-only compilation ## [0.6.1] - 2025-07-17 ### Fixed - Pasty now correctly prioritizes file references over text content when both are present on clipboard - When you copy a file from Finder, pasty now outputs the file path instead of just the filename ### Changed - Pasty now defaults to copying files to current directory when no destination is specified (equivalent to `pasty .`) ## [0.6.0] - 2025-07-16 ### Added - **UTI detection**: Hybrid detection system using macOS UTI → MIME → mimetype fallback for maximum reliability - **Enhanced verbose output**: Shows which detection method was used (UTI, MIME, or content analysis) - **CI for pull requests**: GitHub Actions workflow runs tests, linting, and builds on all PRs - **Pasty library architecture**: Refactored to use `clippy.PasteToStdout()` and `clippy.PasteToFile()` functions ### Changed - More accurate type detection using macOS's native UTI system instead of relying solely on MIME types - Pasty now uses library functions for DRY architecture (thin CLI over rich library functionality) - Updated all tests to match new verbose output format - Improved error handling and code quality ### Fixed - Removed unused code and resolved linting issues - Better temporary file cleanup with proper error handling ## [0.5.1] - 2025-07-16 ### Changed - Updated README with compelling real-world examples for pasty - Screenshots & in-memory content processing workflows - Multi-file scripting and automation examples - GUI → CLI bridge use cases ### Fixed - Code formatting improvements - Removed redundant test cleanup flags ## [0.5.0] - 2025-07-16 ### Added - **Library support**: Clippy can now be used as a Go library - High-level API with smart detection (`clippy.Copy()`, `clippy.CopyData()`, etc.) - Low-level clipboard API (`pkg/clipboard` package) - Examples directory with working code samples - Support for stdin in library API (`clippy.CopyData(os.Stdin)`) - **Pasty tool**: Companion paste tool for intelligent clipboard reading - GoReleaser config now builds both clippy and pasty binaries ### Changed - Moved clipboard package to `pkg/clipboard` for public library use - Simplified clipboard package (removed low-level functions like `GetImage`, `GetTypes`) - Updated README with library usage documentation and pasty tool section - Fixed GoReleaser to use `brews` instead of `homebrew_casks` for CLI tools ## [0.4.0] - 2025-07-16 ### Added - Help flag (-h, --help) with comprehensive usage examples - Config file options: `cleanup` and `temp_dir` - Project restructured to support multiple binaries (preparing for pasty companion tool) ### Changed - Code refactored to reduce duplication (DRY improvements) - Shared clipboard functionality extracted to internal/clipboard package - Updated README with new build instructions and config options ### Fixed - Removed outdated race detector references ## [0.3.1] - 2025-07-15 ### Changed - Optimized temp file cleanup to use glob pattern matching instead of scanning entire temp directory - Fixed race condition in cleanup by running it synchronously after main operation completes ### Fixed - README examples now accurately describe pbcopy behavior (only accepts piped input) - Updated curl example to use real image service (picsum.photos) with -L flag for redirects ## [0.3.0] - 2025-07-15 ### Added - Multi-file support: `clippy *.jpg` copies all matching files at once - NSApplication initialization for reliable clipboard operations - Comprehensive pipeline tests - Comparison with gcopy alternative in README ### Fixed - Clipboard operations now complete reliably without timers or delays - Replaced invalid test PNG with proper 400x400 image ### Changed - Simplified Homebrew installation to single command - Improved README introduction to focus on core problem/solution ## [0.2.0] - 2025-07-15 ### Added - GitHub Actions CI/CD pipeline - GoReleaser configuration for automated releases - Homebrew tap support (neilberkman/homebrew-clippy) ## [0.1.0] - 2025-07-15 ### Added - Initial release - Smart content detection (text vs binary files) - File reference copying for GUI app compatibility - Piped binary data support with temp file creation - Automatic cleanup of temporary files - Verbose mode (-v flag) - Configuration file support (~/.clippy.conf) - Version flag (--version)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/neilberkman/clippy'

If you have feedback or need assistance with the MCP directory API, please join our Discord server