First off, thank you for considering contributing to CzkawkaWin! It's people like you that make this tool better for everyone.
This project and everyone participating in it is governed by respect and professionalism. Please be kind and courteous to others.
Before creating bug reports, please check existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (sample JSON files if possible)
- Describe the behavior you observed and what you expected
- Include screenshots if applicable
- Mention your environment: Windows version, .NET version
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- Provide examples of how it would work
-
Fork the repository and create your branch from
main -
Follow the coding style used throughout the project:
- Use meaningful variable and method names
- Add comments for complex logic
- Follow C# naming conventions
- Keep methods focused and concise
-
Test your changes:
- Ensure the application builds without errors
- Test with various JSON files
- Verify video/image preview works
- Check for memory leaks with large datasets
-
Update documentation if needed
-
Write a clear commit message:
Add feature: Video playback speed control - Added speed control slider to video player - Supported speeds: 0.5x, 1x, 1.5x, 2x - Updated UI to accommodate new control -
Submit the pull request
- Visual Studio 2022 or later
- .NET 10 SDK
- FFmpeg binaries (place in
ffmpeg/folder)
git clone https://github.com/yourusername/CzkawkaWin.git
cd CzkawkaWin
dotnet restore
dotnet builddotnet run --project CzkawkaWinCzkawkaWin/
??? MainWindow.xaml # UI layout
??? MainWindow.xaml.cs # Business logic
??? FileItem.cs # Data model for files
??? DuplicateGroup.cs # Data model for groups
??? App.xaml # Application resources
- Use
varfor local variables when type is obvious - Prefer
async/awaitoverTask.ContinueWith - Use
null-coalescingoperators (??,?.) - Follow Microsoft's C# coding conventions
- Use data binding over code-behind when possible
- Keep XAML clean and organized
- Use resources for reusable styles
- Comment complex layouts
- Use virtualization for large lists (
VirtualizingPanel.IsVirtualizing="True") - Dispose of large resources (images, video streams)
- Use
asyncfor file I/O operations - Cache thumbnails when possible
Before submitting a PR, ensure:
- Application builds without warnings
- UI is responsive (no freezing)
- Video playback works smoothly
- Image preview loads correctly
- File double-click opens Explorer
- Large JSON files (1000+ groups) load efficiently
- No memory leaks during extended use
Feel free to open an issue with your question. We're here to help!
Thank you for contributing! ??