Skip to content

release_2.4.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 24 May 02:10
· 35 commits to master since this release

Encrypted Archive Detection

Password-protected archives (ZIP, RAR, 7z) are now automatically detected. Instead of cryptic "bad state" or "end of stream" errors, you'll see a clear message explaining the file is encrypted and guidance on how to extract it manually. This prevents confusion when processing archives downloaded from sites that password-protect their downloads.

File Lock Detection

If an archive is currently open in another program (file explorer preview, antivirus scan, download manager, etc.), the application now detects this before attempting extraction and provides a clear error message asking you to close the locking program.

Retry Logic with Exponential Backoff

Archive analysis and extraction now include automatic retry on transient I/O errors (up to 3 attempts with increasing delays), reducing failures caused by temporary file locks or brief network interruptions.

Drive Readiness Check

Before processing files, the application verifies the target drive is actually ready — preventing confusing errors when working with disconnected external drives or network shares that have gone offline.

Improved Shutdown Handling

  • The application now properly cancels and disposes background operations when closing
  • Added a safety net that force-terminates the process if the UI becomes unresponsive during shutdown (prevents the app from lingering in the background)
  • Closing the window while an operation is running is now smoother and more reliable

Code Quality & Maintainability

  • Extracted GetXgdType method for cleaner Redump ISO type detection
  • BuildFullMessage made testable (now internal static)
  • UpdateChecker now uses injected version string instead of runtime assembly reflection
  • Removed unused ApplicationSettings model and orphaned methods (GetUncompressedArchiveSizeAsync, RobustMoveFileAsync)
  • Added 4 new unit test files, bringing the test suite to 173 passing tests
  • Async methods now follow the Async suffix naming convention
  • NuGet dependencies updated: SharpCompress 0.48.1, Microsoft.Extensions.DependencyInjection 10.0.8

Full Changelog: release_2.3.1...release_2.4.0