clonify 0.4.3 copy "clonify: ^0.4.3" to clipboard
clonify: ^0.4.3 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.4.3 - 2024-11-13 #

πŸš€ Major Improvement: Internalized Package Renaming #

Package Rename Internalization:

  • ✨ Internalized package_rename_plus functionality - no external dependency required!
  • ⚑ Direct function calls instead of subprocess execution (faster performance)
  • 🎯 Added custom config path support to runRenamePackage()
  • πŸ”§ Better error handling with exception propagation
  • πŸ“¦ Reduced external dependencies for end users

Documentation Updates:

  • πŸ“ Updated README to reflect internalized package renaming
  • πŸ—‘οΈ Removed package_rename_plus from required dev dependencies
  • βœ… Added note about built-in package renaming functionality
  • πŸ™ Updated acknowledgments section to credit original package

Technical Details:

  • Copied package_rename_plus source code to lib/src/package_rename_plus/
  • Updated package_rename_plus_manager.dart to use direct function calls
  • No breaking changes - existing API remains compatible
  • Users no longer need to install package_rename_plus globally or in dev_dependencies

Benefits:

  • πŸš€ Faster execution (no subprocess overhead)
  • πŸ›‘οΈ Better error handling and debugging
  • πŸ“‰ Fewer external dependencies
  • βœ… Simplified user setup process

0.4.2 - 2024-11-13 #

πŸ”„ Improvements & Bug Fixes #

Asset Management Improvements:

  • βœ… Added file existence validation for asset files during clone creation
  • 🎯 Asset paths now include full path prefix (assets/images/)
  • πŸ› Fixed asset directory creation to properly copy specified assets
  • ✨ Improved asset validation with clear error messages

Code Quality & Cleanup:

  • πŸ—‘οΈ Removed gradient color support (simplified color management)
  • 🧹 Cleaned up commented code and unused functions
  • πŸ“¦ Removed GradientColorModel class and related functionality
  • βœ… Updated examples to reflect simplified color model

Constants & Configuration:

  • πŸ“ Added constants for config file paths (flutterLauncherIconsPath, flutterNativeSplashPath)
  • πŸ”§ Refactored config file path references to use constants
  • ✨ Improved code maintainability and consistency

Breaking Changes: ⚠️ Gradient colors removed - if you were using linearGradients:

  • GradientColorModel class has been removed
  • Config JSON no longer supports linearGradients field
  • Generated clone_configs.dart no longer includes gradient definitions
  • Migration: Use regular colors or define gradients manually in your Flutter code

Bug Fixes:

  • πŸ› Fixed asset copying to use actual asset filenames from config
  • βœ… Fixed asset validation to check file existence before clone creation
  • πŸ”§ Improved error messages for missing asset files

0.4.1 - 2024-11-12 #

πŸ”„ Improvements & Bug Fixes #

Asset Management Refactor:

  • ✨ Simplified asset configuration - assets now configured per clone instead of globally
  • πŸ“± Launcher icon, splash screen, and logo are now optional per clone
  • 🎯 Asset filenames are now specified during clone creation (more flexible)
  • πŸ—‘οΈ Removed global clone_assets list from settings
  • βœ… Each clone can have different asset filenames

Configuration Improvements:

  • 🎨 Changed default color format from #FFFFFF to 0xAARRGGBB (Flutter format)
  • 🌐 Base URL is now optional - users can enter "no" to skip
  • ✨ Better color validation with clearer error messages
  • πŸ“ Improved prompts with better default values

Settings Model Changes:

  • Replaced assets, launcherIconAsset, splashScreenAsset fields
  • Added needsLauncherIcon, needsSplashScreen, needsLogo boolean flags
  • Assets are now stored in individual clone configurations

Breaking Changes: ⚠️ Settings file format changed - if you have existing clonify_settings.yaml:

  • Old format used clone_assets, launcher_icon_asset, splash_screen_asset
  • New format uses needs_launcher_icon, needs_splash_screen, needs_logo
  • Migration: Run clonify init again to recreate settings with new format
  • Existing clone configurations will need asset fields added manually

Bug Fixes:

  • πŸ› Fixed asset manager to not copy assets globally (now per-clone)
  • βœ… Fixed color validation regex for proper hex format
  • πŸ”§ Improved asset directory creation logic

Documentation:

  • πŸ“š Added .pubignore file for cleaner pub.flutter-io.cn packages
  • πŸ“ Updated CHANGELOG format

0.4.0 - 2024-11-12 #

✨ Major Feature: Text User Interface (TUI) Enhancement #

Modern Interactive Experience:

  • 🎯 Interactive prompts with arrow-key navigation powered by mason_logger
  • 🎨 Color-coded terminal output using chalkdart for better visual feedback
  • ⚑ Real-time progress indicators for long-running operations
  • βœ… Smart validation with immediate inline feedback
  • πŸ“‹ Configuration summaries before applying changes
  • πŸ”„ Backward compatibility with automatic TTY detection and graceful fallback

Enhanced Commands #

clonify init - Interactive Wizard:

  • πŸ”₯ Firebase confirmation with styled prompts
  • πŸš€ Fastlane configuration with emoji indicators
  • 🏒 Company name input with validation feedback
  • 🎨 Color picker with hex format validation
  • πŸ“± Asset configuration with enhanced prompts
  • βš™οΈ Custom field type selection using arrow keys (String, Int, Bool, Double)
  • 🎯 Emoji indicators throughout the setup flow

clonify create - Guided Clone Creation:

  • πŸ†” Client ID input with pattern validation
  • 🌐 Base URL with URL format validation
  • 🎨 Primary color input with hex validation
  • πŸ“¦ Package name with format validation (com.company.app)
  • πŸ“± App name validation
  • πŸ”’ Version validation (semantic versioning)
  • πŸ”₯ Firebase project ID prompt (when enabled)
  • πŸ”§ Custom fields with type-specific validation
  • πŸ“‹ Configuration summary display after completion

clonify list - Enhanced Table Display:

  • 🎨 Colored table headers and borders (cyan)
  • ▢️ Active client highlighting in green with arrow indicator
  • πŸ“Š Emoji column headers (πŸ†” πŸ“± πŸ”₯ πŸ”’)
  • πŸ“ˆ Summary statistics (total clones, active clone)
  • πŸ”„ Automatic fallback to basic table with --no-tui

clonify configure - Progress Tracking:

  • πŸ“¦ Package renaming progress indicator
  • πŸ”₯ Firebase configuration progress
  • 🎨 Asset replacement progress updates
  • πŸš€ Launcher icon generation progress
  • πŸ’¦ Splash screen creation progress
  • 🌍 Internationalization file generation progress
  • βœ… Completion messages with success indicators

clonify build - Unified Build Progress:

  • πŸ› οΈ Unified progress indicator for APK/AAB/IPA builds
  • ⏱️ Build completion time tracking
  • πŸ“ Build artifact location display with info messages
  • ⚠️ Error handling with progress failure indication

Infrastructure #

New Dependencies:

  • ✨ mason_logger: ^0.3.3 - Battle-tested interactive CLI prompts from Very Good Ventures
  • 🎨 chalkdart: ^3.0.4 - Terminal string styling and coloring

New Files:

  • πŸ“„ lib/utils/tui_helpers.dart - TUI infrastructure with 484 lines
    • Core functions: promptWithTUI, confirmWithTUI, chooseOneWithTUI, chooseAnyWithTUI
    • Progress: progressWithTUI with completion and failure states
    • Messages: successMessage, errorMessage, warningMessage, infoMessage
    • Fallback implementations for non-TTY environments

Enhanced Files:

  • πŸ”§ lib/utils/clonify_helpers.dart - Added TUI-enhanced prompt wrappers
  • 🎯 lib/src/clonify_core.dart - Enhanced init command with TUI
  • πŸ“¦ lib/utils/clone_manager.dart - Enhanced create, configure, and list commands
  • πŸ—οΈ lib/utils/build_manager.dart - Enhanced build command with progress

Accessibility & Compatibility #

TTY Detection:

  • βœ… Automatically detects terminal capabilities (stdin.hasTerminal && stdout.hasTerminal)
  • πŸ”„ Graceful fallback to basic text mode in non-TTY environments
  • πŸŽ›οΈ Works in CI/CD pipelines and automation scripts

--no-tui Global Flag:

  • 🚫 Explicitly disable TUI features for basic text mode
  • βœ… Available on all commands as a global option
  • πŸ”§ Useful for automation, logging, and debugging

Color Support:

  • 🎨 Respects NO_COLOR environment variable (chalkdart default)
  • βœ… Works on terminals without color support (automatic detection)
  • β™Ώ Accessibility-friendly with fallback modes

Backward Compatibility:

  • βœ… All existing functionality preserved
  • βœ… --skipAll flag still respected by TUI functions
  • βœ… Original prompt functions remain unchanged
  • βœ… No breaking changes to command structure or flags
  • βœ… Existing workflows continue to work unchanged

Testing & Quality #

Test Results:

  • βœ… All unit tests passing (54+ tests)
  • βœ… Zero static analysis issues (dart analyze)
  • βœ… Code formatted with dart format
  • βœ… Integration test failures are pre-existing (PathNotFoundException in test setup)
  • βœ… TUI changes do not introduce new test failures

Documentation:

  • πŸ“š Comprehensive TUI test report (TUI_TEST_REPORT.md - 356 lines)
  • πŸ“– Updated README with TUI features section
  • πŸ“ Updated CHANGELOG with detailed feature descriptions
  • βœ… All public functions include dartdoc comments

Performance #

Token Efficiency:

  • ⚑ Minimal overhead: <100ms for TUI initialization
  • 🎯 Instant prompt response with cached TTY detection
  • πŸ“Š Fast table rendering: <50ms for 100 clones
  • πŸš€ No noticeable performance degradation

Binary Size:

  • πŸ“¦ Dependencies added: mason_logger (minimal), chalkdart (minimal)
  • πŸ’Ύ Code added: ~800 lines (infrastructure + enhancements)
  • βœ… Acceptable size increase for features delivered

Breaking Changes #

None - all changes are additive enhancements with backward compatibility.

Migration Guide #

No migration required. TUI features are enabled by default with automatic fallback:

  • Existing scripts and automation continue to work unchanged
  • Use --no-tui flag if you need basic text mode explicitly
  • All command flags and options remain the same

Known Limitations #

  • Compiled executables show "version unknown" (pubspec.yaml lookup limitation)
  • Integration tests have pre-existing PathNotFoundException issue (unrelated to TUI)

0.3.1 - 2024-11-12 #

Bug Fixes #

Version Command:

  • πŸ› Fixed --version flag to correctly read from clonify's own pubspec.yaml instead of the Flutter project's pubspec.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_tool build artifacts from version control
  • πŸ“¦ Added build artifacts to .gitignore for cleaner repository
  • βœ… All files pass dart analyze with 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_plus from 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.flutter-io.cn

Version Command:

  • βœ… Implemented dynamic --version / -v flag 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 analyze with no errors, warnings, or lints
  • βœ… All files properly formatted with dart format
  • βœ… Package validation passes for pub.flutter-io.cn 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 --help would trigger an unnecessary validation error.
  • Enhanced the intl_utils:generate command to check if intl_utils is a dependency in the user's pubspec.yaml before execution, preventing errors when the dependency is missing.
  • Improved README.md file

0.2.0 - 2024-11-11 (Pre-release) #

  • Added version command 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 environment
  • clonify create - Create new clone configuration
  • clonify configure - Apply clone configuration to Flutter project
  • clonify build - Build platform-specific artifacts
  • clonify list - List all configured clones
  • clonify which - Show current clone configuration
  • clonify clean - Clean up partial/broken clones
  • clonify 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 clonify command directly without dart 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

0
likes
140
points
26
downloads

Publisher

unverified uploader

Weekly Downloads

A powerful CLI tool for managing multiple Flutter project clones with different configurations, branding, and Firebase projects. Perfect for white-label apps.

Repository (GitHub)
View/report issues
Contributing

Topics

#cli #flutter #white-label #multi-tenant #clone

Documentation

API reference

License

MIT (license)

Dependencies

args, chalkdart, html, logger, mason_logger, path, process, yaml, yaml_edit

More

Packages that depend on clonify