dartdosh 0.9.2
dartdosh: ^0.9.2 copied to clipboard
Flutter build and release CLI. Bumps the version, names artifacts, and uploads to Firebase, Telegram, App Store and Google Play.
0.9.2 #
Bug Fixes #
-
π Builds with a custom flavor name are no longer lost. Output files were located by matching against a hardcoded list of exact paths, which only covered flavors literally named
production,staginganddevelopment. A project usingprod,stg,dev,qaor any other flavor producedapp-prod-release.aabatbundle/prodRelease/, which was not in the list β so the artifact was never renamed, never copied tooutput_path, and never uploaded to the Play Store.dartdosh now finds artifacts by scanning
build/app/outputs/for files written by the build that just ran, so any flavor name works, including ones invented later. When several are present, the one matching the requested environment wins; otherwise the most recent one does. -
π Failures are no longer silent. The file-moving step swallowed every exception, so a build that moved nothing still reported success. Errors are now logged, and a missing artifact prints which directories were searched.
-
π
output_pathstarting with~now works. It was treated as a relative path and pasted under the project directory (<project>/~/Desktop/builds). Windows drive paths (C:\...) and UNC paths were misread the same way and are now recognised as absolute. -
π Split APKs: with
--split-per-abi, every architecture is now moved, each keeping its ABI suffix. Previously the scan could stop after the first match. Duplicate copies that Flutter writes to bothflutter-apk/andapk/<flavor>/<type>/are deduplicated, and*-unsigned.apkintermediates are ignored.
Documentation #
- π Rewrote the README for the pub.dev landing page: badges, a real terminal transcript of
dartdosh build aab -p, a comparison against fastlane, a three-line quick start, and a scannable feature list. Previously the page opened with a video thumbnail and a table of 14 off-site links, with no example of what running the tool looks like. - π Sharper
descriptionand addedtopics(cli,build,deployment,ci-cd,automation) inpubspec.yaml, so the package surfaces in pub.dev topic browsing. The old description omitted uploading and Play Store support entirely.
0.9.1 #
New Features #
- βοΈ Telegram credentials can now live in
dartdosh_config/settings.json, undertelegram.api_id/api_hash/bot_token, for keeping everything about one project in a single file.dartdosh initfills the keys in empty and keeps the file gitignored.
Resolution order is now: environment variables β project settings.json β ~/.dartdosh/credentials.json. A source with any field blank is skipped entirely, so a half-filled settings.json cannot shadow a working credentials.json.
~/.dartdosh/credentials.json remains the recommended location β it sits outside the project tree and is shared by every project on the machine. dartdosh telegram status prints a reminder when credentials are read from inside the project.
0.9.0 #
β οΈ Security β action required #
The shared dartdosh Telegram bot has been revoked and removed. Its token, api_id and api_hash were hardcoded in telegram_uploader.dart, which ships in the published package and the public repo β meaning anyone who installed dartdosh 0.8.1β0.8.5 could read them, and at least one third party did. Published pub.dev versions are immutable, so revocation was the only effective remedy.
If you use Telegram upload, you must now bring your own bot:
dartdosh telegram setup
Nothing else changes β telegram.enabled and telegram.<env>.chat_id work exactly as before.
Breaking Changes #
- π Telegram upload now requires your own credentials. dartdosh no longer ships any bot. Register an app at my.telegram.org, create a bot with @BotFather, then run
dartdosh telegram setup. Builds withtelegram.enabled: truebut no credentials now log a clear error and skip the upload instead of using a shared bot.
New Features #
- β¨
dartdosh telegram setup: interactive wizard that collectsapi_id,api_hashandbot_token, verifies the token against the Telegram Bot API, and stores it in~/.dartdosh/credentials.jsonwith owner-only (0600) permissions. Secrets are typed with terminal echo disabled. - β¨
dartdosh telegram status: shows which credentials are in effect and where they came from, with the bot token masked, and re-checks the token against Telegram. - π€ CI support:
DARTDOSH_TG_API_ID,DARTDOSH_TG_API_HASHandDARTDOSH_TG_BOT_TOKENenvironment variables take precedence over the credentials file.
Security Fixes #
- π Removed all hardcoded credentials from the published package
- π Credentials are passed to the Python uploader through the environment instead of
argvβ command-line arguments are readable by every user on the machine viaps - π The telethon session file is now created in a temp directory and deleted after each upload. Previously it was written to the working directory, dropping an auth-bearing
dartdosh_tg_session.sessionfile inside the user's repo;dartdosh initnow deletes any leftover copy - π
dartdosh initalso addsdartdosh_config/play_store_key.json(Google service account key) and*.sessionto.gitignore, and re-applies all gitignore rules on existing projects
Documentation #
- π Rewrote
doc/en/07-telegram.mdfor the bring-your-own-bot flow, with CI and troubleshooting sections - π Added a "Secrets" section to
doc/en/02-configuration.mddocumenting where each credential belongs - π Updated Telegram setup steps in the Uzbek, Russian and Turkish READMEs
0.8.5 #
New Features #
- πͺ Google Play Store upload: AAB files now auto-upload to Play Store after build
- Auth via service account JSON β no extra tools required
- Per-environment track config:
internal,beta,production google-api-python-clientauto-installed if missingdartdosh initnow generatesplay_storesection in config files
Documentation #
- π Added
doc/en/11-play-store.mdwith full setup guide and usage examples
0.8.4 #
New Features #
- π§Ή New
dartdosh cleancommand: Remove accumulated build output files with a single commanddartdosh clean allβ removes everything in the output folderdartdosh clean apk/ipa/aabβ removes files for a specific targetdartdosh clean apk -d/-p/-sβ removes only environment-specific files- Reports number of files deleted and space freed
0.8.3 #
Documentation #
- π Added numbered doc files:
doc/en/files now use numeric prefixes (01-, 02-, ...) for logical ordering in file explorers - π Updated all doc links: README.md FAQ links and internal cross-links updated to match new filenames
0.8.2 #
Documentation #
- π Restructured docs into modular files: Each feature now has its own dedicated doc page (
doc/en/) - π Added English documentation index (
doc/README.en.md) with links to all modules - βοΈ Telegram setup guide updated: Added
@dartdosh_manager_botas the official bot to add as Admin - π Simplified README landing page: Clean FAQ-style table of contents linking to GitHub docs
0.8.1 #
Bug Fixes #
- π Fixed missing telegram_uploader.dart in published package: File was incorrectly gitignored causing build failure on install
0.8.0 #
New Features #
- π Telegram Channel Upload: APK files can now be uploaded directly to Telegram channels via MTProto protocol
- Bypasses Telegram Bot API's 50MB limit β supports files up to 2GB
- Auto-installs required
telethonPython package if not present - Users only need to add the bot as admin to their channel and set
chat_id - Configure per environment in
build_config.json(telegram.<env>.chat_id) - Enable/disable in
settings.json(telegram.enabled) - Works alongside Firebase Distribution (both can be enabled simultaneously)
dartdosh initnow generatestelegramsections in config files automatically
0.7.9 #
Bug Fixes #
- π Fixed APK File Selection Bug: Fixed issue where wrong APK file was copied after build
- Now correctly selects APK based on actual build environment (dev/prod/staging)
- Supports both short (
dev,prod,stg) and full (development,production,staging) flavor names - Prevents copying old prod APK when building dev, and vice versa
0.7.8 #
Documentation #
- π Enhanced --dart-define-from-file Documentation: Added comprehensive usage guide
- Direct command line usage examples
- build_config.json configuration method (recommended for teams)
- Benefits comparison between approaches
- Example config file structure
- Positioned prominently for new user visibility
- Updated all language READMEs (English, Uzbek, Russian, Turkish)
0.7.7 #
Improvements #
- β
Smart Migration Logic: Improved
dartdosh initto preserve existing configuration- No longer overwrites existing config files
- Only adds missing fields during migration/validation
- Automatically deletes old
build_config.jsonafter successful migration - Better nested field validation for firebase_distribution
0.7.6 #
Bug Fixes #
- π Fixed Missing Firebase Upload Translation: Fixed "Missing translation: firebase_upload_starting" error
- Regenerated embedded translations from JSON source files
- All Firebase upload messages now display correctly in all languages
New Features #
- π Real-time Firebase Upload Progress: Added live progress monitoring for Firebase Distribution uploads
- Shows progress percentage (50%, 75%, 100%)
- Displays status messages during upload process
- Real-time feedback for uploading and processing stages
- Better user experience with visual progress indicators
0.7.5 #
Bug Fixes #
- π Critical Firebase Upload Fixes: Fixed three major issues preventing Firebase Distribution from working
- Release Notes Prompt: Now correctly prompts for release notes on APK builds with environment-specific enabled check
- Upload Logs: Fixed missing upload starting log and added detailed progress logs (App ID, tester groups, command)
- Infinite Hang: Fixed async/await issue causing uploads to hang - now properly awaits upload completion
- All upload functions now properly awaited to ensure completion before proceeding
Improvements #
- π Enhanced Logging: Added detailed Firebase upload logs showing App ID, tester groups, and exact command being executed
- β‘ Better Async Handling: Properly structured async operations for file renaming and upload functions
0.7.4 #
Documentation #
- π Fixed README Links: Updated multi-language documentation links to use absolute GitHub URLs
- Links now work correctly on pub.dev
- All language switcher links point to GitHub repository
0.7.3 #
Bug Fixes #
- π Firebase Distribution Upload Fix: Fixed critical bug where Firebase couldn't upload APKs
- Was incorrectly reading from
settings.jsoninstead ofbuild_config.jsonfor app_id and tester_groups - Now properly reads team-shared config (app_id, tester_groups) from
build_config.json - Personal settings (enabled flag) still read from
settings.json - Resolves "Missing translation: firebase_upload_missing_app_id" error
- Was incorrectly reading from
0.7.2 #
New Features #
- π₯ Environment-Specific Firebase Distribution: Firebase App Distribution now supports separate configurations for production, staging, and development
- Team-shared config (app IDs, tester groups) in
build_config.json - Personal settings (enable/disable per environment) in
settings.json - Better team collaboration - no credential conflicts
- Example:
// build_config.json "firebase_distribution": { "production": { "app_id": "1:123456789:android:prodabc123", "tester_groups": "production-testers,management" } } // settings.json "firebase_distribution": { "production": { "enabled": false }, "staging": { "enabled": true } }
- Team-shared config (app IDs, tester groups) in
Improvements #
- π Automatic Migration: Existing configs automatically upgraded to new Firebase structure
- π― Smart Validation:
dartdosh initvalidates and adds missing Firebase config fields - π Donation Messages: Added friendly donation prompts after successful Firebase and IPA uploads
- π Enhanced Documentation: Updated README with prominent Turkish language support and new Firebase structure
Bug Fixes #
- β Complete Migration Logic: All new Firebase configuration fields are now properly handled in migrations
- β
Config Validation: Missing
firebase_distributionsection is automatically added when upgrading
0.7.1 #
New Features #
- πΉπ· Turkish Language Support: Added complete Turkish (tr) translation
- All log messages and progress tasks translated to Turkish
- "Patron" style messaging for Turkish users
- Usage:
dartdosh build apk --language tror-l tr
Improvements #
- π Expanded Language Support: Now supporting 4 languages (uz, en, ru, tr)
- π Better Localization: Turkish translation includes embedded fallback
0.7.0 #
Major Changes - Refactoring #
- π§ Centralized Translation System: All translations moved to JSON files
- Created separate JSON files for each language (uz.json, en.json, ru.json)
- Removed 500+ lines of hardcoded translations from logger.dart
- Removed 200+ lines of inline translations from version_manager.dart
- New TranslationLoader class with caching and fallback support
- Embedded translations as fallback for reliability
New Features #
- β¨ Easy Language Addition: Adding new languages now takes minutes instead of hours
- Copy existing JSON file
- Translate values
- Add language code to supported list
- Done!
Improvements #
- π¦ Smaller Codebase: 64% reduction in logger.dart size (646 β 230 lines)
- π¦ Smaller VersionManager: 55% reduction in size (350 β 157 lines)
- π― Better Maintainability: All translations in one place, easier to manage
- π Performance: Translation caching prevents repeated file reads
- π Separation of Concerns: Logic separated from translation data
Technical Changes #
- Added TranslationLoader class for JSON-based translation loading
- Added embedded_translations.dart as fallback
- New LogType enums for version manager and Firebase operations
- Refactored Logger to use TranslationLoader
- Refactored VersionManager to use Logger system
- Fixed hardcoded Firebase upload messages in BuildManager
0.6.5 #
Bug Fixes #
- π Fixed Upgrade Command: Changed from
dart pub global activatetopub global activate- The upgrade command now uses correct syntax for activating global packages
- Resolves upgrade failures when using
dartdosh upgrade
0.6.4 #
Bug Fixes #
- π Fixed Config Validation: dartdosh init now properly validates nested fields
- Validates nested fields in
ipa_uploadandfirebase_distributionconfig objects - Adds missing fields like
enabled,apple_id,app_id,tester_groups - Ensures complete config structure even when parent object exists but is empty
- Reports all missing nested fields properly with detailed field paths
- Validates nested fields in
0.6.3 #
Changes #
- π§ Simplified IPA Upload: Removed "What to Test" notes prompt for IPA builds
- Apple's altool doesn't support sending notes to TestFlight automatically
- Notes need to be added manually in App Store Connect
- Simplified upload process for better user experience
0.6.2 #
New Features #
- π₯ Firebase App Distribution Integration: APK builds can now auto-upload to Firebase
- Automatic upload to Firebase App Distribution after APK build
- Interactive release notes prompt before build starts
- Configure via
firebase_distributionin settings.json - Support for tester groups
- Real-time upload progress
- Requires Firebase CLI installed (
npm install -g firebase-tools)
0.6.1 #
Improvements #
- π Better Init Completion Messages: Init messages now show config location and usage examples
- Shows exactly where config files were created (
dartdosh_config/) - Instructs users to review configs before use
- Provides specific example commands (e.g.,
dartdosh build apk -p) - Updated across all languages (uz, en, ru)
- Makes initialization process clearer for first-time users
- Shows exactly where config files were created (
0.6.0 #
Major Changes - Breaking #
- π§ New Configuration Structure: Split config into 2 files for better team collaboration
dartdosh_config/build_config.json- Team shared (Git tracked) - Build commandsdartdosh_config/settings.json- Personal (Gitignored) - Credentials & preferences- No more credential conflicts in team!
- Old
build_config.jsonautomatically migrated to new structure
New Features #
- β¨
dartdosh initCommand: Initialize or validate configuration- Creates config files from scratch
- Validates existing config and adds missing fields
- Migrates old single-file config to new structure
- Auto-adds
settings.jsonto.gitignore - Smart logging for each scenario
Improvements #
- π Simplified File Names:
user_settings.jsonβsettings.json - π Updated Documentation: README with clear explanation of 2-file structure
- π Better Team Workflow: Build commands shared, credentials private
- π Auto Migration: Old config users get seamless upgrade path
Build Command Changes #
- Build commands now require
dartdosh initfirst - No auto-config creation - explicit initialization required
- Clear error message if config not found
0.5.11 #
Changes #
- π Updated Config Examples: All ipa_upload examples now show enabled state with example credentials
- Changed
enabled: falsetoenabled: truein all config examples - Updated empty credentials to example values (
developer@example.com,abcd-efgh-ijkl-mnop) - Users can see complete working example instead of empty template
- Affects: README.md, example/README.md, build_config.example.json
- Changed
Documentation #
- Configuration examples now demonstrate active IPA upload setup
- Makes it clearer how to configure IPA auto-upload feature
- Users can simply replace example values with their own credentials
0.5.10 #
Bug Fixes #
- π Fixed Incomplete Config Examples: All build_config.json examples now complete
- Added missing
developmentflavor foripasection in README.md - Added missing
developmentflavor foripaandappbundlesections in example/README.md - All three build targets (apk, ipa, appbundle) now have all three flavors (production, staging, development)
- Added missing
Changes #
- README.md configuration example now includes complete IPA section
- example/README.md configuration example now fully matches build_config.example.json
- Consistency across all documentation files
0.5.9 #
Documentation Updates #
- π± Added iOS (IPA) Build Quick Guide: Comprehensive guide for building and uploading iOS apps
- Prerequisites and setup instructions
- Basic IPA build commands with examples
- Step-by-step guide for automatic upload to App Store Connect
- How to get App-Specific Password from Apple
- Output file organization and naming format
- Important notes and troubleshooting tips
- π Updated All Documentation: README.md, example/README.md, and build_config.example.json
- Added
ipa_uploadconfiguration in all examples - Updated feature lists to include IPA auto-upload
- Enhanced example outputs showing upload process
- Improved file structure documentation
- Added
Changes #
- Updated README.md with detailed iOS build section
- Updated example/README.md with IPA upload examples
- All config examples now include complete
ipa_uploadsection - Documentation now reflects all current features (v0.5.x)
0.5.8 #
Bug Fixes #
- π Fixed Version Display Bug: Version commands now correctly show dartdosh package version instead of user's project version
- β Smart Version Detection: Automatically locates and reads dartdosh's own pubspec.yaml from installation directory
- π§ Accurate Version Info:
--version,upgrade, anddowngradecommands now display correct dartdosh version
Technical Changes #
- Changed
currentVersionfrom constant to getter that dynamically reads dartdosh package's pubspec.yaml - Uses
Platform.script.toFilePath()to locate dartdosh installation path - Navigates directory tree to find package's pubspec.yaml
- Validates package name matches 'dartdosh' before returning version
- Fallback to version 0.5.8 if reading fails
- Re-added yaml package import for version reading
0.5.7 #
Improvements #
- π¬ Even More Fun Messages: Enhanced version-related messages with more personality
--version: "Sizdahoz DartDosh X.X.X versiya ekan, Xo'jayiin!"--check-version: "Update yo'q ekan, sizda eng oxirgi versiya, Xo'jayiin!" or "Yangilash uchun mana bu commandni yozing: dartdosh upgrade"upgrade: 4 random cheerful variants including "Endi bemalol maqtanib yursangiz bo'ladi!" and "Do'stlaringizga aytib yurasiz!"- More encouraging and personalized messages throughout
0.5.6 #
Major Improvements #
- π― Dynamic Version Management: Version now read from pubspec.yaml instead of hardcoded
- No more duplicate version maintenance
dartdosh --versionshows actual installed version- Automatic version sync across all commands
- π¬ Enhanced Version Messages: More personalized and fun version-related logs
--version: "Sizda DartDosh X.X.X versiya bor ekan, Xo'jayiin!"--check-version: Shows current vs latest with upgrade hintupgrade: "Versiyangiz X.X.X dan Y.Y.Y ga yangilandi. Endi bemalol maqtanib yursangiz bo'ladi, Xo'jayiin!"- All messages support uz/en/ru languages
Technical Changes #
- Removed hardcoded
currentVersionconstant from VersionManager - Added
_getCurrentVersion()getter that reads from pubspec.yaml - Upgraded logs show version transition (old β new)
- Downgrade logs show version rollback with confirmation
0.5.5 #
Improvements #
- π§ Complete Default Config: Added development flavor to IPA builds in default config
- Now all build types (APK, IPA, AAB) have production, staging, and development flavors
- Consistent configuration across all platforms
- π Better Log Ordering: Donation message now appears at the very end after total time
- More logical flow: success β time β donation
Configuration #
Default config now includes:
"ipa": {
"production": "flutter build ipa --release --flavor production",
"staging": "flutter build ipa --release --flavor staging",
"development": "flutter build ipa --debug --flavor development"
}
0.5.4 #
Improvements #
- β±οΈ Execution Time Tracking: Now tracks and displays total time for each build command
- Shows total execution time at the end with positive motivational messages
- Displays time in seconds with one decimal precision
- Multilingual support (uz/en/ru) for time messages
- π Enhanced Upload Logging: Improved IPA upload progress visibility
- All upload output now uses the Logger system
- Removed hardcoded print statements
- Shows altool stdout/stderr as structured progress logs
- Better error messages during upload failures
- π¨ Clean Logging Architecture: Converted all print statements to Logger
- Consistent multilingual logging throughout the codebase
- Added
uploadProgressandtotalTimeLogType enums - Structured and organized log messages
Technical Changes #
- Added
Stopwatchto track build execution time - Added
progressandtimeparameters to Logger.log() - Updated switch statement to handle new LogType cases
- Upload output parsing and line-by-line progress logging
0.5.3 #
Bug Fixes #
- π§ IPA Upload Fix: Switched from iTMSTransporter to altool for IPA uploads
- altool accepts
.ipafiles directly (iTMSTransporter expected directories) - Simpler and more reliable upload process
- Fixes "is NOT a directory" error from iTMSTransporter
- altool accepts
0.5.2 #
Bug Fixes #
- π IPA Upload Fix: Fixed iTMSTransporter "Unknown transport specified: ios" error
- Removed invalid
-t iosparameter from iTMSTransporter command - Upload to App Store Connect should now work correctly
- Removed invalid
- π Upload Visibility: Added stdout output display for upload process
- Shows complete iTMSTransporter output for better visibility
- Helps users understand what's happening during upload
0.5.1 #
Bug Fixes #
- π Upload Error Details: Added detailed error messages for IPA upload failures
- Shows stderr output when upload fails
- Helps debug Xcode/Transporter issues
0.5.0 #
Features #
- π― Version Commands: New version management commands with fun, localized messages
dartdosh --versionordartdosh -v- Show current versiondartdosh --check-version- Check for updates on pub.devdartdosh upgrade- Upgrade to latest versiondartdosh downgrade- Downgrade to previous version (0.4.1)dartdosh downgrade <version>- Downgrade to specific version
- π Multilingual Support: All version commands support Uzbek, English, and Russian
- π Fun Messages: Random cheerful messages for each operation (Boss/Xo'jayiin/ΠΠΎΡΡ style)
Commands #
# Check version
dartdosh --version
dartdosh -v
# Check for updates
dartdosh --check-version
# Upgrade to latest
dartdosh upgrade
# Downgrade
dartdosh downgrade # to previous version
dartdosh downgrade 0.4.1 # to specific version
0.4.2 #
Bug Fixes #
- π Universal IPA Upload: Fixed IPA upload to work for both flavor and non-flavor builds
- Now works with
dartdosh build ipa(no environment) - Also works with
dartdosh build ipa --production(with environment) - Upload process is consistent across all build commands
- Now works with
0.4.1 #
Improvements #
- πΊ Video Tutorial: Added YouTube tutorial link at the top of README.md
- π§Ή Simplified Config: Removed
upload_after_buildfield - IPA upload now controlled only byenabledflag - π Enhanced Logging: All upload process messages now use Logger system for multilingual output
- π¨ Consistent Output: Replaced all
print()statements withLogger.log()calls throughout codebase
Breaking Changes #
- The
upload_after_buildfield has been removed fromipa_uploadconfiguration - If you have this field in your config, simply remove it - upload is now controlled only by the
enabledflag
0.4.0 #
Features #
- π IPA Auto Upload to App Store: Automatically upload IPA files to App Store Connect after build
- π€ Transporter Integration: Uses
xcrun iTMSTransporterfor reliable uploads - βοΈ Configurable Upload: Control upload behavior via
ipa_upload.enabledflag - π Secure Credentials: Store Apple ID and App-Specific Password in config
- π¨ Localized Upload Logs: Upload process messages in Uzbek, English, and Russian
- π Clean Logging: All messages use Logger system for consistent multilingual output
Configuration #
New ipa_upload section in build_config.json:
{
"ipa_upload": {
"enabled": false, // Enable/disable IPA upload
"apple_id": "your@apple.id", // Your Apple ID
"app_specific_password": "xxxx-xxxx-xxxx-xxxx" // App-specific password
}
}
How It Works #
- Build IPA with dartdosh
- If
ipa_upload.enabledis true and credentials are set - Automatically uploads to App Store Connect using Apple's Transporter
- Shows localized upload progress and results
Requirements #
- macOS with Xcode installed (for
xcrun iTMSTransporter) - Apple ID with app-specific password
- Valid iOS distribution certificate and provisioning profile
Technical Changes #
- Removed
upload_after_buildfield (simplified to justenabled) - Added 4 new LogTypes:
uploadStarting,uploadSuccess,uploadFailed,uploadCredentialsMissing - All upload messages now support uz/en/ru languages
- Replaced all
print()calls withLogger.log()for consistency
0.3.3 #
Features #
- π Type-Based Subfolders: Build files now organized by type (apk/ipa/aab) within project folder
- π§ AAB Command Support: Added support for
aabas alternative toappbundlecommand - π Git Push Confirmation: Added pre-push hook to confirm before pushing to remote
Changes #
- Output structure now:
output_path/project_name/{apk|ipa|aab}/file.ext - CLI now accepts
dartdosh build aab(normalized toappbundle) - Git hook prompts for confirmation before every push
File Structure #
~/Desktop/dartdosh-builds/
βββ my_app/
βββ apk/
β βββ prod_1.0.0_100.apk
β βββ dev_1.0.0_101.apk
βββ ipa/
β βββ prod_1.0.0_100.ipa
βββ aab/
βββ prod_1.0.0_100.aab
0.3.2 #
Changes #
- π§ Removed Auto-Open Config: Config file no longer opens automatically in IDE after creation
- β Improved Config Creation: Added async write with flush to ensure file is properly written
- π Better User Experience: User manually opens and reviews config file instead of auto-open
Technical #
- Removed
_openConfigFile()method - Made
_createDefaultConfig()async withflush: trueparameter - Added 100ms delay after write to ensure file system flush
0.3.1 #
Bug Fixes #
- π Fixed Config File Creation: Ensure build_config.json is fully written before opening in IDE
- β Improved File Write Order: File is now verified to exist before attempting to open
- π§ Prevent Empty Config Files: Added file existence check to prevent race conditions
Changes #
- Added file existence verification after config creation
- Config file is only opened if successfully written
- Prevents empty or incomplete config files from being opened
0.3.0 #
Features #
- ποΈ Multi-Project Support: Added
project_namefield for organizing builds by project - π Project-Based Folders: Each project gets its own subfolder in output directory
- π― Auto Project Detection: Reads project name from
pubspec.yamlby default - π’ Multi-Project Workflow: Use same output directory for multiple projects
Changes #
- Added
project_namefield to build config (defaults to pubspec.yaml name) - Output path now includes project subfolder:
output_path/project_name/ - All builds are organized:
~/Desktop/dartdosh-builds/my_app/prod_1.0.0_100.apk - Updated all documentation with multi-project examples
File Structure #
~/Desktop/dartdosh-builds/
βββ my_app/
β βββ prod_1.0.0_100.apk
β βββ dev_1.0.0_101.apk
βββ ecommerce_app/
βββ prod_2.0.0_50.apk
βββ stg_2.0.0_51.ipa
Configuration #
{
"project_name": "my_app", // New field
"output_path": "~/Desktop/dartdosh-builds",
...
}
0.2.9 #
Documentation #
- π Updated All Documentation: All docs, examples, and configs updated to reflect latest features
- π Updated build_config.example.json: Added language and auto_increment_build_number fields
- π Updated example/README.md: Updated all examples with new file naming format and features
- π― Consistent Examples: All examples now show correct output format (prod_1.2.3_46.apk)
Changes #
- Updated example outputs to show new short environment naming
- Updated feature descriptions to reflect current behavior
- Added multi-language support and auto-increment info to examples
- Removed outdated version increment references from examples
0.2.8 #
Features #
- π Shorter File Names: Build files now use short environment names instead of full names
- π― Clean Naming: Files are named as
{shortEnv}_{version}_{buildNumber}.{ext}(e.g.,prod_1.0.9_2155.apk) - β¨ Consistent Format: All flavor builds follow the same compact naming pattern
Changes #
- Environment name mapping:
productionβprod,developmentβdev,stagingβstg - Removed target name from flavor build file names for cleaner output
- File extension indicates the type (
.apk,.ipa,.aab)
Examples #
Before:
apk_production_1.0.9_2155.apk
ipa_staging_2.0.0_12.ipa
After:
prod_1.0.9_2155.apk
stg_2.0.0_12.ipa
Split APKs:
prod_1.0.9_2155_arm64-v8a.apk
prod_1.0.9_2155_armeabi-v7a.apk
0.2.7 #
Changes #
- π§ Default Behavior Update:
auto_increment_build_numbernow defaults tofalse - π Documentation Update: All docs updated to reflect new default behavior
- βοΈ Opt-in Version Management: Users must explicitly enable auto increment by setting config to
true
Rationale #
- Prevents unexpected version changes
- Gives users explicit control over version management
- More predictable default behavior
0.2.6 #
Features #
- π― Better Config Creation UX: When build_config.json doesn't exist, it's created and opened in IDE
- π Smart Config Workflow: Execution stops after config creation, prompting user to review and re-run
- βοΈ Optional Build Number Increment: Added
auto_increment_build_numberboolean field in config (default: false)
Changes #
- Config file now automatically opens in default IDE when created
- Added
buildConfigCreatedLogType with instructions to review config and re-run - Build number increment is now disabled by default, can be enabled by setting
auto_increment_build_number: true - Execution stops after config creation instead of continuing with build
Configuration #
{
"language": "uz",
"auto_increment_build_number": false, // New field (default: false)
"output_path": "~/Desktop/dartdosh-builds",
...
}
Examples #
# First run - creates config and stops
dartdosh build apk --production
# Output: Config created, opened in IDE, asks to re-run
# Second run - proceeds with build
dartdosh build apk --production
# Output: Normal build process (version not incremented by default)
# Enable auto increment in config
"auto_increment_build_number": true
# Build runs with version increment
0.2.5 #
Features #
- π¦ File Management for All Builds: Files are now renamed and moved to output_path even without environment flags
- π― Consistent Output: Both flavor and plain builds get organized file naming
Changes #
- Non-environment builds now rename files to
{target}_{version}_{buildNumber}format - Files are moved to output_path regardless of environment flag presence
- Only version increment is skipped for non-environment builds
- File organization works for all build types
Examples #
# With environment - increments version, renames: apk_production_1.2.3_46.apk
dartdosh build apk --production
# Without environment - no version increment, renames: apk_1.2.3_46.apk
dartdosh build apk
0.2.4 #
Features #
- π― Optional Environment: Environment flags are now optional - run plain Flutter commands without flavors
- π§ Flexible Builds: Use
dartdosh build apkfor simple builds without version management - π¦ Smart Behavior: Version increment and file renaming only happen when environment is specified
Changes #
- Environment parameter is now nullable in CLI and BuildManager
- When no environment specified, runs plain
flutter build <target>command - Build number increment only happens for flavor builds (when environment is specified)
- File renaming/moving only occurs for flavor builds
- Default environment display shows "default" in logs when no environment provided
Examples #
# With environment (flavor build) - increments version, renames files
dartdosh build apk --production
dartdosh build apk -p
# Without environment (plain Flutter build) - no version management
dartdosh build apk
dartdosh build ipa --release
0.2.3 #
Features #
- β οΈ Language Validation: Unsupported languages now show warning and fallback to English
- π Comprehensive Documentation: Updated README with detailed language support, flag variants, and examples
- π Language Configuration Guide: Clear documentation on how to set and use language preferences
Changes #
- Added language validation in
Logger.setLanguage()with user-friendly warning - Unsupported languages automatically fallback to English with informative message
- Updated README with multi-language examples in Uzbek and English
- Documented all environment flag variants (
-p,-prod,-d,-dev,-s) - Added language support notes and behavior documentation
Documentation #
- Added multi-language support section with examples
- Documented all short flag variants for environments
- Added language fallback behavior explanation
- Improved configuration examples with language field
- Added comprehensive feature descriptions
0.2.2 #
Features #
- π Localized Progress Bar: Progress bar tasks now translate according to selected language
- π Multi-Language Build Stages: All build stages (Gradle, Dependencies, Compiling, etc.) display in user's language
Changes #
- Added
Logger.getProgressTask()static method for progress task translations - Created
_progressTasksmap with translations for all build stages - Updated
_handleProcessOutput()to use localized progress messages - Progress stages now support Uzbek, English, and Russian
Technical #
- New progress task keys:
starting,gradle,dependencies_downloading,dependencies_ready,compiling,bundling,assembling,signing,finishing,ready - BuildManager now calls
Logger.getProgressTask()for all stage updates
0.2.1 #
Features #
- β‘ Short Flag Support: Added convenient shorthand flags for environments
- Production:
--production,-p,-prod - Staging:
--staging,-s - Development:
--development,-d,-dev
- Production:
Changes #
- Enhanced CLI flag parsing to accept multiple variants for each environment
- Updated environment flag filtering in extra flags extraction
- Improved documentation for flag options
Examples #
# All these commands work the same:
dartdosh build apk --production
dartdosh build apk -p
dartdosh build apk -prod
dartdosh build apk --development
dartdosh build apk -d
dartdosh build apk -dev
dartdosh build apk --staging
dartdosh build apk -s
0.2.0 #
Features #
- π Multi-Language Support: Full support for Uzbek (uz), English (en), and Russian (ru) languages
- π― Language Configuration: Added
languagefield to build_config.json (default: "uz") - π¬ Localized Messages: All log messages translated with positive, encouraging tone across all languages
- π Cultural Adaptation: Language-appropriate addressing - "Xo'jayiin" (uz), "Boss" (en), "ΠΠΎΡΡ" (ru)
Changes #
- Completely rewrote Logger class with multi-language support
- Added static language state management in Logger
- Implemented nested Map structure for translations:
Map<String, Map<LogType, List<String>>> - All LogTypes now support 3 languages with multiple message variants
- Language is read from build_config.json and applied to all log messages
- BuildManager now sets language from config before executing builds
Technical #
- Added
Logger.setLanguage(String language)static method - Language validation: only accepts 'uz', 'en', 'ru'
- Default language: 'uz' (Uzbek) if not specified in config
- Maintains random message selection within each language
0.1.12 #
Features #
- π― Clean Progress Display: Build output is now hidden, showing only clean progress bar
- β οΈ Smart Error Display: Warnings and errors are still shown when they occur
- π Enhanced Stage Detection: Added dependency resolution (30%) and "Got dependencies" (40%) stages
Changes #
- Removed verbose Flutter build output for cleaner terminal
- Only show warnings, errors, and failures from build output
- Added dependency-related progress stages
- Progress bar updates smoothly through all build stages (20% β 40% β 60% β 95%)
0.1.11 #
Bug Fixes #
- π§ Fixed Terminal Clearing: Progress bar now properly clears on macOS instead of creating new lines
- π Enhanced Progress Detection: Added more build stage patterns (bundling, signing, assembling) for accurate progress tracking
- π― Better Stage Recognition: Progress now advances beyond 20% by detecting bundle, sign, and assemble stages
Changes #
- Clear progress bar before showing stdout to prevent line duplication
- Added comprehensive lowercase pattern matching for build stages
- Added new build stages: bundling (60%), signing (80%), improved detection for assembling (70%)
- Progress bar only shows after first stdout output to avoid premature display
0.1.10 #
Features #
- β‘ Faster Progress Updates: Progress bar now updates every 1 second (improved from 2 seconds)
- π± Build Info Display: Progress bar now shows target and flavor being built (e.g.,
[apk - production]) - π macOS Terminal Fix: Improved terminal clearing for better compatibility on macOS
Changes #
- Changed progress update interval from 2 seconds to 1 second for more responsive feedback
- Added target and environment info to progress bar display
- Improved ANSI escape codes for terminal clearing on macOS
0.1.9 #
Features #
- π Live Progress Updates: Progress bar updates every 2 seconds with current task info
- π Task Indicator: Shows what's happening: "Gradle ishlayapti...", "Flutter kodi kompilyatsiya qilinyapti..."
- π― AAB Support: Full support for
aabandappbundlecommands with proper file detection - π§ Better File Detection: Improved APK/AAB path detection for all flavors
Changes #
- Progress bar now updates periodically (every 2 seconds) instead of on-demand
- Added
Timer.periodicfor continuous progress updates - Fixed appbundle/aab not being copied to output path
- Fixed flavor name duplication in Android build files
- Improved split APK architecture extraction (only arch name, no flavor duplication)
- Added more AAB path variants: productionRelease, stagingRelease, developmentDebug
- Added more APK path variants for different flavor configurations
Bug Fixes #
- Fixed:
aabcommand not recognized - Fixed: Progress bar showing only once and freezing
- Fixed: Appbundle files not moved to output directory
- Fixed: Android file names containing duplicate flavor names (e.g.,
production_production_1.0.8.apk)
0.1.8 #
Features #
- π Build Progress Bar: Real-time progress bar with percentage during builds
- β‘ Async Build Process: Non-blocking build execution with live output streaming
- π― Smart Progress Detection: Automatically detects Flutter build stages and updates progress
Changes #
- Removed auto-open config file feature (config file no longer opens automatically)
- Converted build process from sync to async for better performance
- Added
_handleProcessOutput()method for streaming build output - Added
_showProgress()method with animated progress bar - Removed
configFileOpenedLogType (no longer needed)
0.1.7 #
Features #
- π Donation Messages: After successful builds, random humorous donation messages appear (10 variants)
- π Logger System: All console output now goes through the Logger system for consistency
- π¨ Better File Naming: Build files now named as
{target}_{env}_{version}_{buildNumber}(e.g.,apk_production_1.0.8_2150.apk) - π§ Enhanced LogTypes: Added
buildNumberIncremented,fileSaved,outputDirCreatedfor detailed logging
Changes #
- Removed all
print()statements in favor ofLogger.log() - Fixed file naming bug where environment was duplicated in filename
- Added new LogType variants with random message selection
- Improved code organization and consistency
0.1.6 #
Features #
- π― Desktop Output Path: Default output path now points to
~/Desktop/dartdosh-buildsinstead ofreleases - π Auto File Open: Config file automatically opens in default editor after creation
- π¬ Improved Messages: Better user feedback when config is created for first time
- π₯οΈ Cross-Platform: Supports macOS, Linux, and Windows for auto file opening
Changes #
- Changed default
output_pathfromreleasesto~/Desktop/dartdosh-builds - Added
_openConfigFile()helper method for opening config in default editor - Enhanced console messages: "Xo'jayiin, default configlarni yaratdim, tekshirib ko'ring!"
0.1.5 #
Package Maintenance #
- β
Added Verified Publisher: Package now published under verified publisher
ahadjonovss.uz - π¦ Publisher Information: Added publisher field to pubspec.yaml for better package credibility
0.1.4 #
Bug Fixes #
- π Fixed --split Flag for IPA: The
--splitflag is now properly ignored for IPA builds (iOS doesn't support split builds) - β
Improved Flag Handling:
--splitflag now only applies to APK builds, converting to--split-per-abi - π± Better Platform Support: Different build targets now handle flags appropriately based on platform capabilities
0.1.3 #
Critical Bug Fix #
- π₯ Fixed Entry Point: Updated main entry point to use the new CLI class architecture
- π Resolved Environment Detection: Fixed critical issue where dartdosh.dart was using old ArgParser code instead of the new CLI class
- β Simplified Architecture: Main entry point now properly delegates to CLI class for cleaner code organization
0.1.2 #
Bug Fixes #
- π Fixed Environment Flag Parsing: Environment flags (--production, --staging, --development) are now correctly recognized and excluded from extra build flags
- π Resolved "Unknown" Environment Error: Fixed issue where environment was being detected as "unknown" even when flags were provided
0.1.1 #
Code Quality Improvements #
- β Added Dartdoc Comments: All public APIs now have comprehensive documentation
- β
Fixed Formatting Issues: All files formatted with
dart format - β Fixed Linting Issues: Removed unnecessary braces in string interpolation
- β Improved Pub Score: Achieved 50/50 pub points with proper documentation
Technical Changes #
- Added dartdoc comments to CLI, BuildManager, and public functions
- Fixed string interpolation warnings
- Applied Dart formatting to entire codebase
0.1.0 #
New Features #
- β Automatic Build Number Increment: Build number automatically increments by 1 before each build
- β Output Path Support: Built files can be automatically copied to specified output directory
- β
Smart File Naming: Files are renamed to
{environment}_{version}_{buildNumber}format - β Auto Directory Creation: Output directory is created automatically if it doesn't exist
- β
Auto Config Generation: If
build_config.jsondoesn't exist, it's automatically created with default settings - β Personalized Messages: All log messages address the user as "Xo'jayiin" (Boss)
Changes #
- Updated
build_config.jsonstructure to supportoutput_pathparameter - Build number is now incremented in
pubspec.yamlbefore build starts - Built files are copied to output path (if specified) instead of just being renamed
- Missing
build_config.jsonis now auto-generated instead of causing an error - All logger messages now include "Xo'jayiin" for a personalized experience
Examples #
# With output_path configured
dartdosh build apk --production
# Result: releases/production_1.2.3_46.apk
# Without output_path
dartdosh build apk --staging
# Result: build/app/outputs/flutter-apk/staging_1.2.3_46.apk
0.0.3 #
- Stable version with basic build functionality
0.0.1 #
- Initial version