clonify 0.3.1
clonify: ^0.3.1 copied to clipboard
A powerful CLI tool for managing multiple Flutter project clones with different configurations, branding, and Firebase projects. Perfect for white-label apps.
0.3.1 - 2024-11-12 #
Bug Fixes #
Version Command:
- ๐ Fixed
--versionflag to correctly read from clonify's ownpubspec.yamlinstead of the Flutter project'spubspec.yaml - โ Version command now displays "clonify version 0.3.1" regardless of where it's run from in a Flutter project
- ๐ง Added package name verification to ensure correct pubspec is read
- ๐ Improved pubspec.yaml lookup logic to search relative to executable location
Improvements #
Dependency Checking:
- โจ Enhanced dependency checking for optional build tools (
flutter_launcher_icons,flutter_native_splash,intl_utils) - ๐ก๏ธ Added graceful handling when optional packages are not installed in user's project
- ๐ Improved warning messages with clear installation instructions
- ๐ง Added
hasPackage()helper function for cleaner dependency validation - โก Better error prevention by checking dependencies before running build commands
Code Quality:
- ๐งน Removed
.dart_toolbuild artifacts from version control - ๐ฆ Added build artifacts to
.gitignorefor cleaner repository - โ
All files pass
dart analyzewith no issues - โ
All files properly formatted with
dart format
Breaking Changes #
None - all changes are bug fixes and improvements.
0.3.0 - 2024-11-11 #
Documentation & Quality Improvements #
Enhanced Documentation:
- โ Added comprehensive dartdoc comments to all public API classes and methods
- โ
Created complete example package with working code samples (
example/example.dart) - โ Added detailed usage guide in example README with 10+ practical examples
- ๐ All models now include detailed descriptions, parameter docs, and code examples
Platform & Compatibility:
- โ Added explicit platform support declarations (Linux, macOS, Windows)
- โ Removed Flutter SDK dependency - tool is now a pure Dart CLI package
- โ
Removed
flutter_launcher_icons,flutter_native_splash,intl_utils,package_rename_plusfrom dependencies- These packages are called as external tools in user's Flutter projects, not imported
- โ
All dependencies now resolve correctly with
dart pub get - โ Fixed "Flutter users should use flutter pub" errors on pub.dev
Version Command:
- โ
Implemented dynamic
--version/-vflag that reads from pubspec.yaml - ๐ง Version now displays correctly across all installation methods (local, global, development)
- ๐ Deprecated hardcoded version constant in favor of dynamic lookup
Code Quality:
- โ Fixed unused variable warning in command runner
- โ
All files pass
dart analyzewith no errors, warnings, or lints - โ
All files properly formatted with
dart format - โ Package validation passes for pub.dev publication
Pub.dev Score Improvements:
- ๐ Documentation: 0/20 โ 20/20 points
- ๐ Platform Support: 0/20 โ 20/20 points
- ๐ Static Analysis: 0/50 โ 50/50 points
- ๐ฏ Overall score improvement: ~40/160 โ ~90/160
Breaking Changes #
None - all changes are additive or internal improvements.
Migration Guide #
No migration required. Version detection is now automatic via --version flag.
0.2.1 #
- Fixed an issue where running
clonify --helpwould trigger an unnecessary validation error. - Enhanced the
intl_utils:generatecommand to check ifintl_utilsis a dependency in the user'spubspec.yamlbefore execution, preventing errors when the dependency is missing. - Improved README.md file
0.2.0 - 2024-11-11 (Pre-release) #
- Added
versioncommand to check the package version. - Simplified asset selection process.
- Implemented a custom fields feature for more flexible project cloning.
0.1.0 - 2024-11-10 (Pre-release) #
Features #
Core Functionality:
- ๐จ Manage multiple Flutter project clones from a single codebase
- ๐ฆ Rename packages and app names per clone
- ๐ฅ Optional Firebase integration with project creation
- ๐ฑ Auto-generate launcher icons and splash screens
- ๐๏ธ Build multiple platforms (Android APK/AAB, iOS IPA)
- ๐พ Configuration persistence and easy client switching
Commands:
clonify init- Initialize Clonify environmentclonify create- Create new clone configurationclonify configure- Apply clone configuration to Flutter projectclonify build- Build platform-specific artifactsclonify list- List all configured clonesclonify which- Show current clone configurationclonify clean- Clean up partial/broken clonesclonify upload- Upload to app stores (partial implementation)clonify --version/clonify -v- Display tool version
Global Installation:
- Install globally via
dart pub global activate clonify - Use
clonifycommand directly withoutdart run
Asset Management:
- Simplified asset selection during initialization
- Direct questions for launcher icon, splash screen, and logo
- No more confusing method selection
Custom Configuration Fields:
- Define custom fields during initialization (e.g., socketUrl, apiKey, feature flags)
- Support for multiple data types: string, int, bool, double
- Custom fields are automatically prompted during clone creation
- Generated as constants in
lib/generated/clone_configs.dart - Type-safe access to custom configuration in Flutter code
Optional Features:
- Firebase integration (fully optional)
- Fastlane integration (optional, partial)
- Custom colors and gradients per clone
- Multiple asset management
Testing:
- Comprehensive test suite (54+ tests)
- No real Flutter project required for testing
- Mock-based testing infrastructure
- Integration tests for full workflows
Known Limitations #
- Upload functionality is partially implemented
- Requires manual Xcode configuration for iOS builds
- Firebase APNs key must be uploaded manually
Breaking Changes #
None (initial pre-release)
Notes #
This is a pre-release version for testing and feedback. The API may change in future releases.
Requirements:
- Dart SDK ^3.8.1
- Flutter SDK (for building apps)
- Firebase CLI (optional, for Firebase features)
- Fastlane (optional, for upload features)
Feedback Welcome: Please report issues at https://github.com/DevMohammadSalameh/clonify/issues