ktsu.BlastMerge
1.1.0
Prefix Reserved
dotnet add package ktsu.BlastMerge --version 1.1.0
NuGet\Install-Package ktsu.BlastMerge -Version 1.1.0
<PackageReference Include="ktsu.BlastMerge" Version="1.1.0" />
<PackageVersion Include="ktsu.BlastMerge" Version="1.1.0" />
<PackageReference Include="ktsu.BlastMerge" />
paket add ktsu.BlastMerge --version 1.1.0
#r "nuget: ktsu.BlastMerge, 1.1.0"
#:package ktsu.BlastMerge@1.1.0
#addin nuget:?package=ktsu.BlastMerge&version=1.1.0
#tool nuget:?package=ktsu.BlastMerge&version=1.1.0
ktsu.BlastMerge
Cross-repository file synchronization through intelligent iterative merging
Overview
BlastMerge is a revolutionary file synchronization tool that uses intelligent iterative merging to unify multiple versions of files across repositories, directories, and codebases. Unlike traditional diff tools, BlastMerge progressively merges file versions by finding the most similar pairs and resolving conflicts interactively, ultimately synchronizing entire file ecosystems into a single, unified version.
đ Iterative File Synchronization
The Problem
When working across multiple repositories, branches, or environments, the same files often diverge into multiple versions with overlapping changes. Traditional merge tools handle two-way merges, but when you have 3, 5, or 10+ versions of the same file scattered across different locations, manual synchronization becomes a nightmare.
The Solution: Iterative Merging
BlastMerge solves this by:
- Smart Discovery: Automatically finds all versions of a file across directories/repositories
- Hash-Based Grouping: Groups identical files and identifies unique versions
- Similarity Analysis: Calculates similarity scores between all version pairs
- Optimal Merge Order: Progressively merges the most similar versions first to minimize conflicts
- Interactive Resolution: Visual TUI for resolving conflicts block-by-block
- Cross-Repository Sync: Updates all file locations with the final merged result
Real-World Use Cases
- Multi-Repository Synchronization: Sync the same configuration files across microservices
- Branch Consolidation: Merge scattered feature branch changes before cleanup
- Environment Alignment: Unify deployment scripts across dev/staging/prod environments
- Code Migration: Consolidate similar files when merging codebases
- Documentation Sync: Align README files across related projects
Features
đ Iterative Merging Engine
- Smart File Detection: Automatically finds and groups identical file versions by hash
- Similarity-Based Progression: Uses advanced algorithms to find the most similar files and merge them in optimal order
- Cross-Repository Updates: Synchronizes all file locations with the merged result
- Progressive Conflict Reduction: Each merge reduces complexity for subsequent merges
- Interactive Conflict Resolution: Visual TUI for resolving merge conflicts block-by-block
- Version Tracking: Maintains awareness of which files need updating across all locations
đ Advanced File Analysis
- Hash-Based Comparison: Fast file comparison using FNV-1a content hashing for instant duplicate detection
- Content Similarity Scoring: Sophisticated algorithms to determine merge order
- Multiple Diff Formats:
- Change Summary (added/removed lines only)
- Git-style diff (full context)
- Rich colored diff (visual formatting)
- Side-by-Side Display: Context-aware diff visualization with intelligent file ordering
đ§ Repository & Directory Operations
- Directory Comparison: Compare entire directories with customizable file patterns
- Recursive Search: Deep directory traversal to find all file versions
- Batch Synchronization: Update multiple file locations simultaneously
- Safe Operations: Built-in error handling and rollback capabilities
⥠Performance & Optimization
- Parallel Processing: Multi-threaded file hashing and discovery for improved performance
- Async Operations: Non-blocking file operations with progress reporting
- Optimized Hashing: Fast FNV-1a algorithm with 4KB buffers for efficient file comparison
- Memory Management: Smart buffering and resource management for large file sets
- Throttled Parallelism: Configurable concurrency limits to prevent system overload
đ¯ Batch Operations & Automation
- Batch Configurations: Save and reuse complex file processing setups
- Custom Search Paths: Define multiple directories to search across repositories
- Path Exclusion Patterns: Skip unwanted directories (node_modules, bin, obj, .git, etc.)
- Pre-defined Templates: Ready-made configurations for common repository synchronization tasks
- Discrete Processing Phases: Separate gathering, hashing, grouping, and resolution phases for better UX
- Pattern-based Processing: Support for wildcards and complex file matching
đģ Interactive Experience
- Rich Terminal Interface: Colored output and intuitive navigation with Spectre.Console
- Command History: Arrow key navigation through previous inputs with persistent history across sessions
- Smart Defaults: Intelligent defaults based on most recently used inputs
- Progress Indicators: Real-time feedback for long-running operations with detailed phase reporting
- Block-Level Control: Choose how to handle each difference (keep, remove, use version 1/2, use both)
- Keyboard Shortcuts: Comprehensive keyboard navigation for all operations
Installation
Add the NuGet package:
dotnet add package ktsu.BlastMerge
Usage
Primary Workflow: Iterative File Synchronization
# Launch interactive mode for iterative merging
BlastMerge.ConsoleApp
# Select "đ Iterative Merge"
# 1. Specify the directory containing your repositories/projects
# 2. Enter the filename pattern (e.g., "README.md", "config.json", "*.yml")
# 3. Watch as BlastMerge finds all versions and merges them optimally
# 4. Resolve conflicts interactively when needed
# 5. All file locations are automatically updated with the unified result
Command Line Mode
# Quick comparison for files with the same name across directories
BlastMerge.ConsoleApp <directory> <filename>
# Run a saved batch configuration
BlastMerge.ConsoleApp <directory> -b <batch-name>
# List available batch configurations
BlastMerge.ConsoleApp -l
# Show version information
BlastMerge.ConsoleApp -v
# Display help
BlastMerge.ConsoleApp -h
Interactive Mode Options
- đ Iterative Merge - Cross-repository file synchronization
- đ Compare files with same name across directories - Find and compare files with identical names
- đ Compare two directories - Full directory comparison with file patterns
- đ Compare two specific files - Direct file-to-file comparison
- đĻ Batch Operations - Create, edit, and run batch configurations for complex workflows
- đ Find Files - Advanced file discovery with pattern matching
- âī¸ Settings - Configure application preferences and view system information
- âšī¸ Help - Comprehensive feature overview and keyboard shortcuts
Advanced: Batch Configurations
Create reusable batch configurations for complex synchronization tasks:
# Interactive batch creation
1. Select "đĻ Batch Operations" â "Create New Batch"
2. Define file patterns: *.yml, .gitignore, LICENSE.md
3. Set search paths: /path/to/repo1, /path/to/repo2, /path/to/repo3
4. Add exclusions: */node_modules/*, */bin/*, .git/*
5. Save as "Repository Sync Batch"
# Run the batch across all configured paths
BlastMerge.ConsoleApp . -b "Repository Sync Batch"
Pre-built Templates:
- Common Repository Files: .gitignore, .editorconfig, LICENSE files
- Repository Sync Batch: Comprehensive configuration for multi-repo synchronization
Iterative Merge Deep Dive
- File Discovery: Parallel scanning across multiple search paths for matching files
- Version Analysis: Groups identical files by hash, identifies unique versions
- Similarity Calculation: Determines optimal merge sequence using content analysis
- Progressive Merging: Merges most similar pairs first to minimize conflicts
- Conflict Resolution: Interactive TUI for each conflict block with multiple resolution options
- Cross-Repository Update: Writes merged result to all original locations
- Verification: Confirms all locations now contain identical, unified content
Performance Features
- Parallel File Discovery: Multiple search paths processed simultaneously
- Concurrent Hashing: Configurable parallelism for optimal CPU utilization
- Progress Tracking: Real-time updates on file discovery, hashing, and processing phases
- Memory Optimization: Efficient handling of large file sets with controlled resource usage
Why Iterative Merging?
Traditional tools merge two files at a time, requiring manual orchestration for multiple versions. BlastMerge's iterative approach:
- Minimizes Conflicts: By merging similar versions first, later merges have fewer conflicts
- Optimizes Decision Making: Present easier decisions first, complex conflicts last
- Maintains Context: Each merge builds on previous decisions
- Scales Naturally: Works equally well with 3 files or 30 files
- Preserves Intent: Interactive resolution ensures human judgment guides the process
Technical Features
- Fast Hashing: FNV-1a algorithm with optimized 4KB buffer processing
- Smart Memory Management: Controlled resource usage with configurable parallelism
- Persistent History: Command history saved across sessions with intelligent organization
- Async Operations: Non-blocking operations with comprehensive progress reporting
- Cross-Platform: Works on Windows, macOS, and Linux
License
MIT License. Copyright (c) ktsu.dev
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DiffPlex (>= 1.8.0)
- ktsu.AppDataStorage (>= 1.15.6)
- Polyfill (>= 10.11.0)
- Spectre.Console (>= 0.50.0)
- TestableIO.System.IO.Abstractions (>= 22.0.14)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.14)
- Testably.Abstractions.FileSystem.Interface (>= 9.0.0)
-
net9.0
- DiffPlex (>= 1.8.0)
- ktsu.AppDataStorage (>= 1.15.6)
- Polyfill (>= 10.11.0)
- Spectre.Console (>= 0.50.0)
- TestableIO.System.IO.Abstractions (>= 22.0.14)
- TestableIO.System.IO.Abstractions.Wrappers (>= 22.0.14)
- Testably.Abstractions.FileSystem.Interface (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 111 | 6/28/2026 |
| 1.0.22-pre.6 | 192 | 11/24/2025 |
| 1.0.22-pre.5 | 156 | 11/23/2025 |
| 1.0.22-pre.4 | 136 | 11/23/2025 |
| 1.0.22-pre.3 | 147 | 11/23/2025 |
| 1.0.22-pre.2 | 201 | 11/15/2025 |
| 1.0.22-pre.1 | 214 | 11/14/2025 |
| 1.0.21 | 292 | 6/18/2025 |
## v1.1.0 (minor)
Changes since v1.0.0:
- chore: switch null guards and tests to Ensure/ThrowsExactly ([@matt-edmondson](https://github.com/matt-edmondson))
- refactor: modernize SDK targets and null validation ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove serena/cursor files ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove legacy build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance test assertions and naming for clarity and robustness ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project configuration and workflows ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor file handling and improve test coverage for file operations ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement GenerateUnifiedDiffFromContent method and enhance DiffPlexDiffer functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix failing tests and improve coverage for file processing and diffing functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new tests for FileHasher and IterativeMergeOrchestrator, improve coverage ([@matt-edmondson](https://github.com/matt-edmondson))
- Add code coverage analysis report for new code ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in Invoke-DotNetTest function and update CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in Invoke-DotNetTest function ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in Invoke-DotNetTest function and update CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Invoke-DotNetTest function to streamline command execution ([@matt-edmondson](https://github.com/matt-edmondson))
- Update ktsu.AppDataStorage package version to 1.15.6 in Directory.Packages.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage handling and update test project configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage output handling in Invoke-DotNetTest function ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Invoke-DotNetTest function for improved command execution ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage report path in CI workflow for improved file handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage handling in CI workflow and PSBuild.psm1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance test coverage execution in CI workflow and PSBuild.psm1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor test coverage execution in CI workflow to enhance reliability and usability ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement AsyncLocal-based FileSystemProvider for improved test isolation and concurrency handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor IterativeMergeOrchestrator to enforce non-nullable file system parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance test coverage configuration and execution in .NET CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage command execution in .NET CI workflow for improved reliability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in .NET CI workflow to enhance reliability and diagnostics ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in .NET CI workflow to use dotnet-coverage tool ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor logging messages in .NET CI workflow for clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance .NET CI workflow with improved diagnostics and coverage reporting ([@matt-edmondson](https://github.com/matt-edmondson))
- Update file similarity calculation in IterativeMergeOrchestrator to use file system parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage reporting and CI workflow for SonarQube integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage settings and enhance CI workflow for SonarQube integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix indentation issue in coverage report generation step of CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Update SonarQube configuration and coverage report generation in CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix escaping in `Invoke-DotNetTest` for coverage report command ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage reporting and SonarQube integration in CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `Invoke-DotNetTest` to streamline test execution and update SonarQube configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix SonarQube configuration in `dotnet.yml` by adding missing quotation marks for the host URL ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in `Invoke-DotNetTest` and update SonarQube configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update test command in `Invoke-DotNetTest` to use simplified coverage collection name ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix nullable integer bug in LineDifference by adding null checks ([@matt-edmondson](https://github.com/matt-edmondson))
- This sonar config is incompatible with the sonar CI integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project dependencies and enhance CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `BlastMergeAppData.cs` to remove conditional compilation for `System.Reflection` and `ResetForTesting` method ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix hardcoded similarity value in merge status calculation ([@matt-edmondson](https://github.com/matt-edmondson))
- Update `BlastMergeAppData.cs` to conditionally include `System.Reflection` directive in debug mode ([@matt-edmondson](https://github.com/matt-edmondson))
- Add troubleshooting documentation for CI build error related to unused using directives ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance winget manifest updater script with MSBuild integration and project agnosticism ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor project structure and update dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix validation for empty batch names in AppDataBatchManager ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix test failures and improve test isolation in BatchProcessor and AppDataBatchManager ([@matt-edmondson](https://github.com/matt-edmondson))
- Add SonarQube configuration and improve CI workflow for .NET project ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor file grouping logic in FileDisplayService for improved clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor loop in BatchOperationsMenuHandler for improved readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor loop patterns in BatchOperationsMenuHandler and AsyncFileDiffer for improved clarity and performance ([@matt-edmondson](https://github.com/matt-edmondson))
- Update using directives in CompareFilesMenuHandler and BatchProcessor for consistency ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor derived cursor rules and console application service for clarity and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix empty case clauses in switch statements to comply with SonarQube rule S3458 ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix TOCTOU race condition in CreateTempDirectory method ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor MenuNames and related display classes for improved organization and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Add analysis report on file organization between Console App and Core projects ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService methods to be static and pass instance as parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService and CLI components for improved organization and functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix build errors in FileDiffer by removing tuple deconstruction for ColorCodePair ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BlockContext and DiffPlexHelper for improved clarity and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor to reduce nested types and improve code organization ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService to enhance readability and reduce cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService to reduce cognitive complexity and improve readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor methods in BlockMerger and CharacterLevelDiffer to reduce cognitive complexity and improve readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BlockMerger and DiffPlexDiffer for improved readability and reduced cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor FileFinder and WhitespaceVisualizer for improved readability and reduced cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor error handling in ConsoleApplicationService and FileComparisonDisplayService for improved maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BatchProcessor to streamline parameter handling and enhance user feedback ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BatchProcessor for improved readability and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor code for improved maintainability and reduced complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance security in FileFinder and improve error handling in DiffPlexDiffer ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix regex timeout vulnerability in FileFinder service ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix bugs in CompareDirectoriesAsync method to improve file comparison efficiency ([@matt-edmondson](https://github.com/matt-edmondson))
- Update authors and copyright information, enhance project descriptions, and refine package dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix duplicate menu item and message display in batch processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance batch processing with search paths and exclusion patterns ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix null initialization for collection properties in BlockContext ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor code to reduce duplication and improve validation ([@matt-edmondson](https://github.com/matt-edmondson))
- Add "Run Recent Batch" option to main menu and implement tracking functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance file merge logic and improve user messaging ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor batch processing output for improved clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix unreachable code in whitespace condition and enhance batch processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance file comparison functionality and improve documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement safer file grouping in diff processing to prevent unrelated file merges ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with explosive ASCII art and improve whitespace visualization ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with explosive visuals and improve whitespace handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with epic visuals and whitespace visualization ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance diff display with whitespace visualization and improve goodbye screen functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance whitespace visualization and improve diff display functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge functionality and improve diff processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing to enhance accuracy and context display ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing for improved accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing to enhance accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing for improved accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge display and improve diff line processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix side-by-side diff alignment and improve file path labeling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge file path display for clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix navigation issues and enhance menu display ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix navigation stack functionality and improve menu handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance navigation stack and refactor menu handling for improved user experience ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor exception handling and reduce cognitive complexity in batch operations ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement comprehensive batch management system with CRUD operations ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement navigation stack for improved user experience in menu handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor memory statistics display and reduce cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor file comparison handling and reduce cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance security measures for temporary file handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance security and improve side-by-side diff functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor file comparison and UI handling for improved maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService and improve code quality ([@matt-edmondson](https://github.com/matt-edmondson))
- Extract nested class `InputState` into its own file to improve code organization and maintainability. Updated derived cursor rules to prohibit nested classes, enhancing adherence to best practices. Cleaned up `HistoryInput.cs` by removing the nested class definition. ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance console application structure and functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService and introduce new services for improved functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Add SonarQube integration to CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance console application structure and functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Code Cleanup ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor exception handling in ShowDetailedFileList method ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance console application with TUI menu and improve file processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance console application encoding settings ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor and restructure core application components ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor project structure and enhance functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project rules ([@matt-edmondson](https://github.com/matt-edmondson))
- Add batch processing functionality and command line options ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor variable declarations to use explicit types in multiple files ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance error handling in changelog generation ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance error handling in PSBuild.psm1 for changelog generation ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance error handling in PSBuild.psm1 and update derived cursor rules ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance derived cursor rules and update test structures ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix build errors and improve code quality ([@matt-edmondson](https://github.com/matt-edmondson))
- Split classes into their own files and convert to records ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor command line handling to use CommandLineParser library ([@matt-edmondson](https://github.com/matt-edmondson))
- Update YAML schema references in Winget manifests for consistency ([@matt-edmondson](https://github.com/matt-edmondson))
- Add YAML schema references to Winget manifests ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Winget manifests to version 1.10.0 and add .NET Desktop Runtime dependency ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix winget installer executable name in manifests and update PowerShell script for future compatibility ([@matt-edmondson](https://github.com/matt-edmondson))
- Add release upload command for Winget manifests ([@matt-edmondson](https://github.com/matt-edmondson))
- Adjust publishing settings in Invoke-DotNetPublish function by disabling trimming for output files. This change aims to improve compatibility for self-contained applications. ([@matt-edmondson](https://github.com/matt-edmondson))
- Optimize publishing settings in Invoke-DotNetPublish function by enabling trimming for smaller output files. This change enhances the build process for self-contained applications. ([@matt-edmondson](https://github.com/matt-edmondson))
- Update SDK versions in global.json to 1.38.0 ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix issue trying to submit release twice ([@matt-edmondson](https://github.com/matt-edmondson))
- Update ktsu SDK versions in global.json from 1.35.0 to 1.36.0 for all components. ([@matt-edmondson](https://github.com/matt-edmondson))
- Prepare BlastMerge for winget distribution by enhancing project configuration, consolidating publish functionality, and integrating winget manifest updates. Update the `Invoke-DotNetPublish` function to streamline publishing for all platforms and architectures, ensuring SHA256 hashes are generated for integrity verification. Create scripts for automating winget manifest updates and include necessary files for distribution. ([@matt-edmondson](https://github.com/matt-edmondson))
- Rename to BlastMerge ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor tests to utilize mock file system and improve file handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor test suite to utilize Testable.IO.Abstractions for improved file access testing ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.22-pre.6 (prerelease)
Changes since v1.0.22-pre.5:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.22-pre.5 (prerelease)
Changes since v1.0.22-pre.4:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.22-pre.4 (prerelease)
Changes since v1.0.22-pre.3:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.22-pre.3 (prerelease)
Changes since v1.0.22-pre.2:
- Sync .specstory\.gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.22-pre.2 (prerelease)
Changes since v1.0.22-pre.1:
- Add GitHub Copilot custom instructions ([@copilot-swe-agent[bot]](https://github.com/copilot-swe-agent[bot]))
- Initial plan for Copilot onboarding ([@copilot-swe-agent[bot]](https://github.com/copilot-swe-agent[bot]))
- Initial plan ([@copilot-swe-agent[bot]](https://github.com/copilot-swe-agent[bot]))
## v1.0.22-pre.1 (prerelease)
Changes since v1.0.21:
- Update project configuration and workflows ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.21 (patch)
Changes since v1.0.20:
- Refactor file handling and improve test coverage for file operations ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement GenerateUnifiedDiffFromContent method and enhance DiffPlexDiffer functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix failing tests and improve coverage for file processing and diffing functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new tests for FileHasher and IterativeMergeOrchestrator, improve coverage ([@matt-edmondson](https://github.com/matt-edmondson))
- Add code coverage analysis report for new code ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in Invoke-DotNetTest function and update CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in Invoke-DotNetTest function ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in Invoke-DotNetTest function and update CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Invoke-DotNetTest function to streamline command execution ([@matt-edmondson](https://github.com/matt-edmondson))
- Update ktsu.AppDataStorage package version to 1.15.6 in Directory.Packages.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage handling and update test project configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage output handling in Invoke-DotNetTest function ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor Invoke-DotNetTest function for improved command execution ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage report path in CI workflow for improved file handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage handling in CI workflow and PSBuild.psm1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance test coverage execution in CI workflow and PSBuild.psm1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor test coverage execution in CI workflow to enhance reliability and usability ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement AsyncLocal-based FileSystemProvider for improved test isolation and concurrency handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor IterativeMergeOrchestrator to enforce non-nullable file system parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance test coverage configuration and execution in .NET CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage command execution in .NET CI workflow for improved reliability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in .NET CI workflow to enhance reliability and diagnostics ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor coverage collection in .NET CI workflow to use dotnet-coverage tool ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor logging messages in .NET CI workflow for clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance .NET CI workflow with improved diagnostics and coverage reporting ([@matt-edmondson](https://github.com/matt-edmondson))
- Update file similarity calculation in IterativeMergeOrchestrator to use file system parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage reporting and CI workflow for SonarQube integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage settings and enhance CI workflow for SonarQube integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix indentation issue in coverage report generation step of CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Update SonarQube configuration and coverage report generation in CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix escaping in `Invoke-DotNetTest` for coverage report command ([@matt-edmondson](https://github.com/matt-edmondson))
- Update coverage reporting and SonarQube integration in CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `Invoke-DotNetTest` to streamline test execution and update SonarQube configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix SonarQube configuration in `dotnet.yml` by adding missing quotation marks for the host URL ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance coverage collection in `Invoke-DotNetTest` and update SonarQube configuration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update test command in `Invoke-DotNetTest` to use simplified coverage collection name ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix nullable integer bug in LineDifference by adding null checks ([@matt-edmondson](https://github.com/matt-edmondson))
- This sonar config is incompatible with the sonar CI integration ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project dependencies and enhance CI workflow ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `BlastMergeAppData.cs` to remove conditional compilation for `System.Reflection` and `ResetForTesting` method ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix hardcoded similarity value in merge status calculation ([@matt-edmondson](https://github.com/matt-edmondson))
- Update `BlastMergeAppData.cs` to conditionally include `System.Reflection` directive in debug mode ([@matt-edmondson](https://github.com/matt-edmondson))
- Add troubleshooting documentation for CI build error related to unused using directives ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance winget manifest updater script with MSBuild integration and project agnosticism ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor project structure and update dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix validation for empty batch names in AppDataBatchManager ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix test failures and improve test isolation in BatchProcessor and AppDataBatchManager ([@matt-edmondson](https://github.com/matt-edmondson))
- Add SonarQube configuration and improve CI workflow for .NET project ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor file grouping logic in FileDisplayService for improved clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor loop in BatchOperationsMenuHandler for improved readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor loop patterns in BatchOperationsMenuHandler and AsyncFileDiffer for improved clarity and performance ([@matt-edmondson](https://github.com/matt-edmondson))
- Update using directives in CompareFilesMenuHandler and BatchProcessor for consistency ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor derived cursor rules and console application service for clarity and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix empty case clauses in switch statements to comply with SonarQube rule S3458 ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix TOCTOU race condition in CreateTempDirectory method ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor MenuNames and related display classes for improved organization and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Add analysis report on file organization between Console App and Core projects ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService methods to be static and pass instance as parameter ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService and CLI components for improved organization and functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix build errors in FileDiffer by removing tuple deconstruction for ColorCodePair ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BlockContext and DiffPlexHelper for improved clarity and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor to reduce nested types and improve code organization ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService to enhance readability and reduce cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor ConsoleApplicationService to reduce cognitive complexity and improve readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor methods in BlockMerger and CharacterLevelDiffer to reduce cognitive complexity and improve readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BlockMerger and DiffPlexDiffer for improved readability and reduced cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor FileFinder and WhitespaceVisualizer for improved readability and reduced cognitive complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor error handling in ConsoleApplicationService and FileComparisonDisplayService for improved maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BatchProcessor to streamline parameter handling and enhance user feedback ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor BatchProcessor for improved readability and maintainability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor code for improved maintainability and reduced complexity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance security in FileFinder and improve error handling in DiffPlexDiffer ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix regex timeout vulnerability in FileFinder service ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix bugs in CompareDirectoriesAsync method to improve file comparison efficiency ([@matt-edmondson](https://github.com/matt-edmondson))
- Update authors and copyright information, enhance project descriptions, and refine package dependencies ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix duplicate menu item and message display in batch processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance batch processing with search paths and exclusion patterns ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix null initialization for collection properties in BlockContext ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor code to reduce duplication and improve validation ([@matt-edmondson](https://github.com/matt-edmondson))
- Add "Run Recent Batch" option to main menu and implement tracking functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance file merge logic and improve user messaging ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor batch processing output for improved clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix unreachable code in whitespace condition and enhance batch processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance file comparison functionality and improve documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement safer file grouping in diff processing to prevent unrelated file merges ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with explosive ASCII art and improve whitespace visualization ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with explosive visuals and improve whitespace handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance welcome and goodbye screens with epic visuals and whitespace visualization ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance diff display with whitespace visualization and improve goodbye screen functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance whitespace visualization and improve diff display functionality ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge functionality and improve diff processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing to enhance accuracy and context display ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing for improved accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing to enhance accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor side-by-side diff processing for improved accuracy and clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge display and improve diff line processing ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix side-by-side diff alignment and improve file path labeling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance iterative merge file path display for clarity ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix navigation issues and enhance menu display ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix navigation stack functionality and improve menu handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance navigation stack and refactor menu handling for improved user experience ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor exception handling and reduce cognitive complexity in batch operations ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement comprehensive bat... (truncated due to NuGet length limits)