Skip to content
This repository was archived by the owner on Jul 6, 2026. It is now read-only.

release_1.6.0

Choose a tag to compare

@drpetersonfernandes drpetersonfernandes released this 10 May 03:26
· 41 commits to master since this release

🧪 Unit Tests

  • Added a new test project (GameCoverScraper.Tests) with unit tests for SettingsManager, ImageData, AppLogger, ImageSaveService, ObjectToBoolConverter, and WebSearchService.

🔒 Thread Safety

  • SettingsManager properties are now fully thread-safe with lock synchronization.
  • PlaySound service uses thread-safe locking for MediaPlayer creation and cleanup.

🛡️ Improved Error Handling & Reporting

  • Bug Report Service now sends detailed environment information with each report: OS version, architecture, bitness, processor count, base directory, and temp path.
  • Structured exception details including inner exceptions, source, and stack traces.
  • Added a fallback local logging mechanism when the BugReport service is not yet initialized (e.g., crash during startup).
  • ApplicationStatsService now handles HttpRequestException for network errors.
  • Added global exception handlers (AppDomain.UnhandledException and DispatcherUnhandledException) to catch and log any unhandled bugs.

🌐 WebView2 Improvements

  • WebView2 initialization now includes automatic retry logic (up to 2 retries) for E_ABORT errors.
  • Better error messages and download prompts when WebView2 Runtime is missing or fails to initialize.
  • Extracted PromptWebView2Download helper for cleaner error dialog handling.

♿ Accessibility

  • Added ToolTips to virtually all UI elements — menus, buttons, text fields, image previews, status bar, and more — improving discoverability and usability.

🖱️ UI Stability

  • Added a 300ms debounce for item removal from the missing covers list to prevent accidental double-deletes.
  • Delete key now ignores key repeats (IsRepeat: false).
  • Proper cleanup of all resources (timers, FileSystemWatcher, CancellationTokenSource) on window closing.

🧹 Clean Shutdown

  • WebView2 is now properly disposed (stops navigation, navigates to about:blank, then disposes) to prevent the process from staying alive after closing.
  • PlaySound.Shutdown() cleans up the MediaPlayer on exit.
  • All open windows are explicitly closed on application exit.
  • Environment.Exit(0) is called as a safety net to ensure the process terminates even if background threads are running.

📝 Code Quality

  • Renamed numerous async methods to follow the *Async naming convention (e.g., MainWindow_LoadedAsync, BtnCheckForMissingImages_ClickAsync, ConvertImageToPngAsync, HandleApiSearchAsync, FetchImagesWithRetryAsync, etc.).
  • Removed unused WebSearchService static property from App.
  • Cleaned up null-check patterns and simplified disposal code.

🔐 Security

  • Improved path traversal prevention in filename sanitization — iteratively removes .. sequences to block crafted inputs like "....".

Full Changelog: release_1.5.0...release_1.6.0