Skip to content

Conversation

@Iridium-IO
Copy link
Member

@Iridium-IO Iridium-IO commented May 21, 2025

  • Switch from ModernWPF to WPFUI
  • Major UI rewrite
  • Use Dependency Injection
  • Add support for queuing multiple folders for compression at once
  • Lots of small and large refactors that I've lost track of

I'm not exactly happy with the current look of the UI, but it is more functional 🤷

image

image

image

(AI generated commit message because I made too many changes... again)
- Updated `Application.xaml`
- Improved `OnStartup` method in `Application.xaml.vb` for better multi-instance handling with mutex and named pipe server.
- Modified `ApplicationHostService` for robust window management based on command-line arguments.
- Enhanced `CustomSnackBarService` to effectively manage notifications for compression results.
- Updated `FolderViewModel` with new properties and commands for folder actions and wiki submissions.
- Improved layout and functionality in `MainWindow` and `MainWindow.xaml`.
- Redesigned `SettingsView` and `SettingsViewModel` for intuitive settings management.
- Introduced new classes: `BackgroundImageChangedMessage`, `SemVersion`, `TrayNotifierService`, `UpdaterService`, and `WikiService` for specific functionalities.
- Updated `HomeViewModel` for better folder action management and user notifications.
- Redesigned `SettingsPage` for improved usability and layout adjustments.
Iridium-IO added 14 commits May 21, 2025 17:37
- Increased idle timer duration in `IdleDetector` from 2 to 5 seconds.
- Adjusted `DecayPercentage` calculation in `WatchedFolder` to return 1 when sizes are equal and updated `SavedSpace` calculation.
- Enhanced `Watcher` to start `IdleDetector`; modified `UpdateWatched` to include `isFreshlyCompressed` parameter.
- Converted `OnSystemIdle` to an asynchronous method with re-entrance checks and logging.
- Made `Analyser` a class-level variable in `CompressableFolder`.
- Updated `FolderViewModel` to pass an additional parameter to `UpdateWatched` during uncompression.
- Changed `HomeViewModel` to call `UpdateWatched` for compressed folder notifications and refactored folder addition to `AddOrUpdateFolderWatcher`.
… expensive setter operation if it's not needed
- Fixed crash when adding an unsupported folder to the Watcher page
@Iridium-IO Iridium-IO requested a review from Copilot May 22, 2025 21:59
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR rewrites the UI layer by replacing ModernWPF with WPFUI, introduces dependency injection hosting, and adds multi‐folder queuing for compression.

  • Swapped out ModernWPF components in favor of WPFUI resources and controls
  • Integrated Microsoft.Extensions.Hosting and DI for services and view models
  • Refactored converters and core types to use new WOFCompressionAlgorithm enum and updated progress reporting

Reviewed Changes

Copilot reviewed 76 out of 76 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
CompactGUI/Components/Custom/TokenizedTextBox.vb Updated event handler registration to use base class member
CompactGUI/Components/Converters/IValueConverters.vb Replaced CompressionAlgorithm with WOFCompressionAlgorithm and added new converters
CompactGUI/Components/Converters/Converters.xaml Enabled new converters and commented out unused ones
CompactGUI/Application.xaml.vb Introduced DI host startup and replaced legacy startup logic
CompactGUI.Watcher/WatchedFolder.vb Adjusted decay and saved‐space calculations
CompactGUI.Core/SharedObjects.vb Converted fields to properties and introduced CompressionProgress
Comments suppressed due to low confidence (2)

CompactGUI/Application.xaml.vb:214

  • Event handler signature for IdleDetector.IsIdle expects a Sub(sender, args), not an Async Function with no parameters; update the signature or wrap it in a compatible delegate.
Private Async Function OnSystemIdle() As Task

CompactGUI/Components/Converters/IValueConverters.vb:258

  • ColorConverter.ConvertFromString returns an Object, not a Color; you need to cast it (e.g. CType(ColorConverter.ConvertFromString(...), Color)) before passing to SolidColorBrush.
Return New SolidColorBrush(ColorConverter.ConvertFromString("#6E9DEF"))

@Iridium-IO Iridium-IO marked this pull request as ready for review May 22, 2025 22:15
@Iridium-IO Iridium-IO merged commit ad68647 into master May 22, 2025
@Iridium-IO Iridium-IO deleted the UIRefresh branch May 22, 2025 22:17
@XTsat
Copy link

XTsat commented Jan 1, 2026

Why not change the banner of the readme to a new version of the interface, it will look better than before

image

#597

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants