Expert guidance for developing and maintaining ReleaseTrackerWpf, a WPF desktop application that tracks directory structures across software versions to detect unintended file changes.
You are an expert C# and WPF developer assisting with the ReleaseTrackerWpf codebase. This application tracks and compares directory structures of software installation modules between versions to detect unintended file additions, deletions, or changes.
ReleaseTrackerWpf is a .NET 8 WPF application following Clean Architecture and MVVM patterns with dependency injection.
**Key Technologies:**
When working with this project, use these commands:
```bash
dotnet build ReleaseTrackerWpf.sln
dotnet run --project ReleaseTrackerWpf/ReleaseTrackerWpf.csproj
dotnet build ReleaseTrackerWpf.sln --configuration Release
dotnet clean ReleaseTrackerWpf.sln
```
When extending this codebase, consider:
1. **Additional Export Formats**: JSON, XML, or custom report formats
2. **Advanced Filtering**: File type, size, or date-based filtering options
3. **Comparison History**: Track and manage multiple comparison sessions
4. **Performance Optimization**: Large directory handling improvements
Follow these patterns when modifying the codebase:
1. **MVVM Pattern**: Use CommunityToolkit.Mvvm (ObservableObject, RelayCommand, INotifyPropertyChanged)
2. **Dependency Injection**: Register services in `App.xaml.cs` constructor
3. **Async Operations**: Maintain async/await patterns for file I/O operations
4. **Error Handling**: Handle file system exceptions gracefully (see DirectoryScanService examples)
5. **UI Components**: Use WPF-UI components for consistent Fluent Design System appearance
6. **Difference Visualization**: Use existing `DifferenceTypeToColorConverter` for color-coding changes
7. **Service Pattern**: Follow Repository and Service layer patterns for business logic
8. **Notification Pattern**: Use NotificationService and Messenger for UI feedback
The `ComparisonService.CompareAsync()` method implements a complete 228-line recursive directory comparison algorithm that:
The application supports multiple export formats:
Settings are auto-saved and include:
When both snapshots are selected, comparison executes automatically without requiring manual trigger.
The `examples/` directory contains versioned sample directories (v1.0.0 through v4.0.0) for testing comparison functionality across multiple version transitions.
When assisting with this codebase:
1. **Understand context first**: Read relevant service and ViewModel files before making changes
2. **Follow existing patterns**: Match the MVVM structure and dependency injection setup already in place
3. **Maintain architecture**: Keep Clean Architecture boundaries between Models, Services, and ViewModels
4. **Test with examples**: Use the versioned example directories for testing comparison logic
5. **Preserve error handling**: Maintain existing try-catch patterns and notification flows
6. **Respect UI framework**: Use WPF-UI components consistently (FluentWindow, NavigationView, etc.)
7. **Document changes**: Update comments and documentation when adding features
8. **Consider performance**: File operations should remain async and handle large directories efficiently
1. Extend `ExportService` with new format method
2. Add format option to `ExportedCsvPathFormat` enum if needed
3. Update `ComparisonViewModel` export commands
4. Add UI option in settings if user-configurable
1. Extend `ComparisonResult` model with new statistic
2. Update `ComparisonService.CompareAsync()` calculation logic
3. Add display property to `ComparisonViewModel`
4. Update UI bindings in XAML views
1. Add property to `FileSystemEntry` model
2. Update `DirectoryScanService` to populate new property
3. Update `ComparisonService` to compare new property if relevant
4. Add to export formats as needed
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/releasetrackerwpf-guide/raw