Skip to content

release_3.0.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 23 Jul 14:54
· 45 commits to master since this release

What's New in v3.0.0

Major Changes

CHDSharp Integration — No More chdman for Extraction & Verification

CHD verification and extraction now use the CHDSharp library instead of spawning external chdman.exe processes. This means:

  • Faster verification — in-process checksum validation (SHA1/MD5) without process overhead
  • Faster extraction — direct sector reads via CHDSharp instead of subprocess I/O
  • Fewer dependencieschdman.exe is now only needed for conversion (creating new CHD files)
  • Better error messages — precise CHD error codes instead of parsing console output

WPF-UI Modern Theme

The entire UI has been migrated to WPF-UI v4.3.0:

  • Mica backdrop — native Windows 11 acrylic effect on the main window and About dialog
  • Rounded corners — modern window chrome on Windows 11
  • Consistent button styling — Primary, Success, Danger, Info appearances replace hand-rolled templates
  • Symbol icons — vector icons replace bitmap PNG images for toolbar buttons
  • Dark theme — enforced at startup for a consistent look
  • Title bar integration — custom content drawn in the window title bar area

New Features

  • Logs button — Opens the AppData logs folder directly from the title bar
  • SSL certificate tolerance — Name-mismatch errors (common with proxies/firewalls) are logged as warnings instead of blocking connections
  • 7za fallback for ZIP — If the built-in .NET ZIP extractor fails (e.g. Deflate64, LZMA, PPMd compression), the app falls back to 7za.exe
  • Per-file timeout for PBP extraction — PSXPackager now respects the same timeout limit as CHD conversion
  • PSXPackager error capture — stdout/stderr are captured and shown on extraction failure
  • Access keys — All buttons now have keyboard shortcuts (Alt+underlined letter)

Improvements

  • Thread safety — Stat counters now use volatile and Interlocked.Increment; SafeFireAndForget wrapper logs task failures
  • Bug report sink — Fires on Warning level (was Error-only); uses interlocked flag to prevent API flood
  • Path sanitization — Two additional mojibake ellipsis variants detected (Shift-JIS, Windows-1251); names that become all-underscores fall back to a GUID
  • Archive error messages — Unsupported compression methods (Deflate64, LZMA, PPMd) now produce clear guidance
  • GDI resource cleanup — ScreenshotService properly releases GDI handles in a finally block
  • File operation retriesTryDeleteFileAsync and TryDeleteDirectoryAsync now retry up to 3 times
  • CRC error detectionIsCrcErrorException checks both HRESULT and message content
  • Cancellation awareness — Operation summary uses "canceled" vs "completed" based on actual outcome
  • Release notes rendering\r\n sequences in GitHub release bodies are now properly converted to newlines
  • Log directory — Moved from app folder to %LocalAppData%\BatchConvertToCHD\logs
  • Mutex ownership — Handles AbandonedMutexException from crashed previous instances
  • GitHub rate limit detection — Also handles HTTP 429 (Too Many Requests) in addition to 403

Internals & Refactoring

  • HttpClient injection — UpdateService, StatsService, and BugReportService accept HttpClient via constructor for testability
  • PbpExtractionResult — Sealed class with init-only property
  • BugReportService.SendBugReportAsync — Made virtual for test mocking
  • ArchiveServiceExtractZipWith7ZaFallbackAsync extracted as a dedicated method
  • MainWindow.xaml.cs — Monolithic ProcessSingleFileForConversionAsync refactored into specialized helpers (ProcessCsoFileForConversionAsync, ProcessArchiveFileForConversionAsync, ProcessPbpFileForConversionAsync, ValidateDependentFilesAsync, TryDirectConversionAsync, TryRetryConversionViaTempCopyAsync, HandleConversionResultAsync)
  • XML documentation added across service classes and models

Updated Dependencies

Package Old New
CHDSharp 1.2.0 (new)
WPF-UI 4.3.0 (new)
Microsoft.NET.Test.Sdk 18.7.0 18.8.1

SharpCompress 0.50.0, Serilog 4.4.0, xUnit 2.9.3 unchanged.

Breaking Changes

  • The DropShadowEffect glow on the terminal log has been removed.

Full Changelog

Full Changelog: release_2.11.0...release_3.0.0