Releases: yarlson/lnk
v0.9.0
Lnk v0.9.0
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Features
Others
- 8192c1d: chore(ci): update Go version to 1.25 across all workflows (@yarlson)
- 2530e59: chore(deps): bump Go version to 1.25 and update indirect dependencies (@yarlson)
Full Changelog: v0.8.0...v0.9.0
v0.8.0
Lnk v0.8.0
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Features
Others
- 6c68e2c: Merge pull request #31 from yarlson/dependabot/github_actions/actions-2d3733e69a (@yarlson)
- f0e1c7b: Merge pull request #32 from yarlson/dependabot/go_modules/github.com/spf13/cobra-1.10.2 (@yarlson)
- 4282b75: Merge pull request #33 from yarlson/dependabot/github_actions/actions-97f38a5d32 (@yarlson)
- 6dffacd: Potential fix for code scanning alert no. 6: Workflow does not contain permissions (@yarlson)
- 1c03bb3: chore(deps): bump actions/cache from 4 to 5 in the actions group (@dependabot[bot])
- dd17a5d: chore(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 (@dependabot[bot])
- c65743e: chore(deps): bump the actions group with 3 updates (@dependabot[bot])
Full Changelog: v0.7.0...v0.8.0
v0.7.0
Lnk v0.7.0
Git-native dotfiles management that doesn't suck.
New Features
-
lnk rm --forceflag - Remove files from tracking even when the symlink is missing. Useful for cleaning up orphaned entries when you accidentally delete a managed file without usinglnk rm. (#25)lnk rm --force ~/.bashrc -
Git operation timeout protection - All git operations now have timeout protection to prevent indefinite hangs:
- Short operations (status, add, commit): 30 second timeout
- Long operations (clone, push, pull): 5 minute timeout
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Features
- 8f71c32: feat: add --force flag to rm command for cleaning up orphaned tracking entries (@yarlson)
- bddb09f: feat: add timeout protection to git operations to prevent hanging (@yarlson)
Others
- 48535a6: Merge pull request #19 from yarlson/dependabot/github_actions/actions-a331d3ec2d (@yarlson)
- 430619b: Merge pull request #20 from yarlson/dependabot/go_modules/github.com/stretchr/testify-1.11.0 (@yarlson)
- b94870b: chore(deps): bump actions/checkout from 4 to 5 in the actions group (@dependabot[bot])
- 0a3e522: chore(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.0 (@dependabot[bot])
- 2aac515: docs(README): clarify color modes and emoji flags with improved formatting (@yarlson)
- ca9f795: merge (@yarlson)
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Lnk v0.6.0
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Features
Others
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Lnk v0.5.1
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Bug fixes
Others
Full Changelog: v0.5.0...v0.5.1
v0.5.0
[0.5.0] - 2025-07-30
Added
- Data Loss Prevention System: Comprehensive safety checks to prevent accidental data loss when initializing repositories with existing managed files
- Force Flag: Added
--forceflag tolnk initcommand for advanced users who understand the risks of overwriting existing content - Smart Contextual Warnings: Warnings only appear when there are actually managed files that would be overwritten, not on every force flag usage
- Enhanced Error Messages: Clear, actionable error messages that guide users to the correct command (
lnk pullinstead oflnk init -r) - User Content Detection: New
HasUserContent()method to detect existing managed files before destructive operations
Changed
- Improved UX:
lnk init -r <remote>now safely blocks when existing managed files are detected, preventing data loss - Better CLI Feedback: Force flag warnings are now contextual and only shown when relevant
- Enhanced Documentation: Updated README with comprehensive safety features section and usage examples
Fixed
- Issue #12: Fixed catastrophic data loss when running
lnk init -r <remote>after adding files - now shows clear error message and suggests usinglnk pullinstead - Warning Logic: Fixed force flag warnings to only appear when there are actually managed files to overwrite
Technical
- Safety Architecture: Implemented multi-layered safety checks with user content detection, clear error messaging, and force override capability
- Test Coverage: Added comprehensive TDD-based test suite covering all safety scenarios, integration workflows, and regression testing
- Code Quality: All changes follow existing patterns and maintain backward compatibility
Documentation
- Added "Safety Features" section to README with examples and usage guidance
- Updated command reference to include
--forceflag with proper warnings - Enhanced technical features list to highlight data loss prevention capabilities
- Updated alternatives comparison to include safety checks as a key differentiator
Migration Notes
- No Breaking Changes: Existing functionality remains unchanged
- New Safety Behavior:
lnk init -r <remote>will now block if managed files exist (uselnk pullinstead) - Advanced Users: Use
--forceflag if you need to override safety checks (not recommended for normal use)
Changelog
Bug fixes
Others
- 65db5fe: Merge pull request #13 from yarlson/force (@yarlson)
- ab97fa8: chore(brew): move lnk formula to core Homebrew repository (@yarlson)
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Lnk v0.4.0 - Bulk Operations & Enhanced Safety
🚀 Major Features
Bulk Operations Support
- Multiple file processing: Add multiple files in a single command with atomic operations
- Enhanced CLI:
lnk add ~/.bashrc ~/.vimrc ~/.gitconfignow processes all files atomically - Atomic transactions: All files succeed or all fail - no partial states
- Comprehensive rollback: Complete restoration on any failure
- Single Git commit: All files committed together with descriptive messages
Recursive Directory Processing
- New
--recursiveflag: Process directory contents individually instead of as a whole - Directory traversal:
lnk add --recursive ~/.config/nvimadds each file separately - Hidden file support: Includes dotfiles and hidden directories automatically
- Smart progress indication: Shows real-time progress for large operations (>10 files)
- Mixed operations: Combine files and directories:
lnk add ~/.vimrc --recursive ~/.config/zsh
Dry-Run Mode
- New
--dry-runflag: Preview operations without making changes - Safety first:
lnk add --dry-run ~/.ssh/configshows exactly what would happen - Recursive preview:
lnk add --dry-run --recursive ~/.configpreviews all affected files - Validation included: Same validation as real operations, catching issues early
- Clear output: Shows file counts and provides next-step instructions
✨ User Experience Improvements
Enhanced Output & Messaging
- Rich progress display: Real-time file processing updates for bulk operations
- Smart file listing: Shows sample files for large recursive operations
- Operation summaries: Clear confirmation with file counts and operation types
- Consistent formatting: Organized output with icons and proper indentation
- Contextual help: Suggests next steps and provides relevant examples
Comprehensive Help System
- Updated documentation: All help text includes new flags and examples
- Rich examples: Multiple usage patterns for bulk operations
- Flag descriptions: Clear explanations of
--recursiveand--dry-runbehavior - Integration examples: Shows combining flags for complex workflows
🔧 Technical Enhancements
Core Architecture
- Enhanced validation: Comprehensive error checking with specific file paths
- Memory efficient: Streaming processing for large directory operations
- Atomic design: All operations maintain consistency guarantees
- Progress system: Configurable threshold-based progress reporting
- Preview engine: Full simulation of operations without side effects
Testing & Quality
- 50+ new tests: Comprehensive coverage for all new functionality
- TDD implementation: Red-Green-Refactor cycles for reliable code
- Integration testing: CLI and core functionality fully tested
- Error scenarios: Complete rollback and validation testing
- Performance testing: Large directory and bulk operation validation
📖 Documentation Updates
Comprehensive README
- Updated examples: All workflows now demonstrate new capabilities
- Command reference: Complete flag documentation with examples
- Usage patterns: Real-world scenarios for bulk and recursive operations
- Technical details: Architecture insights for atomic operations
Help System
- In-app examples: Rich help text with practical usage scenarios
- Flag documentation: Detailed explanations of all options
- Workflow guidance: Best practices for bulk operations and safety
🔄 Backward Compatibility
- Full compatibility: All existing commands work exactly as before
- Progressive enhancement: New features are opt-in additions
- Same behavior: Single file operations maintain identical output and behavior
- Configuration preservation: All existing setups continue working unchanged
💡 Usage Examples
# Bulk operations - multiple files atomically
lnk add ~/.bashrc ~/.vimrc ~/.gitconfig ~/.tmux.conf
# Recursive processing - directory contents individually
lnk add --recursive ~/.config/nvim ~/.config/zsh
# Safety first - preview before applying
lnk add --dry-run ~/.ssh/config
lnk add --dry-run --recursive ~/.config/kitty
# Host-specific bulk operations
lnk add --host work ~/.gitconfig ~/.ssh/config ~/.npmrc
# Combined operations
lnk add ~/.vimrc --recursive ~/.config/nvim --host laptop ~/.ssh/config🎯 What's Next
This release establishes a solid foundation for advanced dotfile management with:
- Efficient bulk processing capabilities
- Safe preview and validation workflows
- Enhanced user experience with rich feedback
- Comprehensive testing and documentation
Perfect for users managing complex configurations across multiple machines who want both power and safety in their dotfile workflows.
Changelog
Features
- 8a29b7f: feat(add): implement dry-run mode and enhance output formatting (@yarlson)
- 36d76c8: feat(add): implement multiple file addition with atomic operation (@yarlson)
- a6852e5: feat(add): implement recursive file addition with progress tracking (@yarlson)
Others
- 9cbad5e: Merge pull request #10 from reneleonhardt/chore/update-actions (@yarlson)
- 4b11563: Update README.md (@yarlson)
- 6de3877: chore(gitignore): refine file exclusions for better repo management (@yarlson)
- 6830c06: docs(README): enhance usage examples and feature descriptions (@yarlson)
- b476ce5: docs(README): refine project description and highlight key benefits (@yarlson)
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Lnk v0.3.0
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Features
Full Changelog: v0.2.2...v0.3.0
v0.2.2
Lnk v0.2.2
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Others
- 3cba309: refactor(core): simplify Lnk creation with functional options pattern (@yarlson)
- 02f342b: refactor(core): simplify path handling and remove redundant generateRepoName function (@yarlson)
- 1e2c970: refactor(errors): implement structured error handling for improved debugging (@yarlson)
- 3e6b426: test(cmd): improve test coverage for file storage and .lnk tracking (@yarlson)
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Lnk v0.2.1
Git-native dotfiles management that doesn't suck.
Installation
# Quick install
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
# Homebrew
brew tap yarlson/lnk
brew install lnk
# Manual download
# Download the appropriate archive for your platform from the assets below
# Extract and move to your PATH:
# tar -xzf lnk_*.tar.gz && sudo mv lnk /usr/local/bin/Changelog
Bug fixes
Others
- 0f74723: docs(README): update examples for host-specific configurations and usage patterns (@yarlson)
Full Changelog: v0.2.0...v0.2.1