Thanks for your interest in improving Squish!
- Fork and clone the repo
- Open
Squish.xcodeprojin Xcode 16+ (macOS 14+) - Build & run with ⌘R
Swift Package dependencies (libwebp) resolve automatically on first build.
Squish/
├── App/ # Entry point, scenes, commands
├── Models/ # ImageItem, CompressionPreset, CompressionResult
├── ViewModels/ # MainViewModel, PresetViewModel
├── Views/ # SwiftUI views
├── Services/ # ImageProcessor, WebPEncoder, PresetManager, Metadata, Localization
└── Resources/ # Assets.xcassets
Architecture is MVVM. Views observe view models; view models own the state and call services.
- Match the surrounding code style (naming, spacing, comment density).
- Keep changes focused and small where possible.
- User-facing strings must be added to
Services/Localization.swift(RU + EN). - Build in Swift 6 language mode — no concurrency warnings.
- Test your change by actually running the app, not just compiling.
- One logical change per PR with a clear description.
- Reference any related issue.
- Make sure the app builds and runs before submitting.
By contributing, you agree that your contributions are licensed under the GPL v3.