Skip to content

Releases: yarlson/lnk

v0.9.0

09 Feb 19:16
8185b9d

Choose a tag to compare

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

  • f7163f8: feat: add doctor command to diagnose and fix repository health issues (@yarlson)

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

09 Feb 18:12
31ad671

Choose a tag to compare

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

  • 31ad671: feat: add diff command to view uncommitted changes in repository (@yarlson)

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

25 Nov 05:23
v0.7.0
8f71c32

Choose a tag to compare

Lnk v0.7.0

Git-native dotfiles management that doesn't suck.

New Features

  • lnk rm --force flag - Remove files from tracking even when the symlink is missing. Useful for cleaning up orphaned entries when you accidentally delete a managed file without using lnk 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

03 Aug 11:40
v0.6.0
30ab78d

Choose a tag to compare

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

  • 7f10e1c: feat(output): implement configurable color and emoji output (@yarlson)

Others


Full Changelog: v0.5.1...v0.6.0

v0.5.1

01 Aug 03:52
57839c7

Choose a tag to compare

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

  • dc52460: fix: remove hardcoded branch names from push/pull operations (@yarlson)

Others


Full Changelog: v0.5.0...v0.5.1

v0.5.0

30 Jul 07:46
65db5fe

Choose a tag to compare

[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 --force flag to lnk init command 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 pull instead of lnk 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 using lnk pull instead
  • 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 --force flag 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 (use lnk pull instead)
  • Advanced Users: Use --force flag if you need to override safety checks (not recommended for normal use)

Changelog

Bug fixes

  • 43b68bc: fix(init): prevent data loss when reinitializing with existing content (@yarlson)

Others


Full Changelog: v0.4.0...v0.5.0

v0.4.0

29 Jul 07:59

Choose a tag to compare

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 ~/.gitconfig now 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 --recursive flag: Process directory contents individually instead of as a whole
  • Directory traversal: lnk add --recursive ~/.config/nvim adds 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-run flag: Preview operations without making changes
  • Safety first: lnk add --dry-run ~/.ssh/config shows exactly what would happen
  • Recursive preview: lnk add --dry-run --recursive ~/.config previews 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 --recursive and --dry-run behavior
  • 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


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

v0.3.0

03 Jun 05:35

Choose a tag to compare

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

  • ae9cc17: feat(bootstrap): add automatic environment setup with bootstrap scripts (@yarlson)

Full Changelog: v0.2.2...v0.3.0

v0.2.2

03 Jun 05:00

Choose a tag to compare

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

26 May 06:25
v0.2.1
92f2575

Choose a tag to compare

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

  • 92f2575: fix: preserve directory structure for common files and fix display paths (@yarlson)

Others

  • 0f74723: docs(README): update examples for host-specific configurations and usage patterns (@yarlson)

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