udara_cli 1.2.0
udara_cli: ^1.2.0 copied to clipboard
A CLI tool for managing whitelabel Flutter projects with multi-client support
1.2.0 #
- FIXES:
.envparsing now handles inline# comments, single quotes andexport KEY=VALUE. Previously a value such asDEVELOPMENT_TEAM="ABCD1234" #comment(the templatesetupgenerated) was read asABCD1234" #commentand patched into the Xcode project verbatim.- An existing root
.envis backed up before a build stages the client env there, and restored afterwards; when no root.envexisted the staged copy is removed on cleanup instead of leaving client secrets behind. - Built-in ignore patterns such as
*.jksand*.pemnow also match files in sub-folders of the client assets directory, so nested keystores and keys are no longer copied into the app bundle. clients/default/.env(the runtime fallback registered bysetup) is no longer stripped fromflutter.assetswhen a client is applied.whitelabelnow stages the env the same way asbuild(root.env, registered as an asset), honours--testandDEVELOPMENT_TEAM, and restores the staged project files afterwards (the iOS project file is left as patched). New--keepflag leaves them in place so the app can be run as the client withflutter run --dart-define=CLIENT_ENV=.env.- Unknown options (e.g.
udara_cli build --bogus) are reported as usage errors with the command's help instead of an "Unexpected Error" asking to file a bug. - iOS builds record
ipaas the artifact type (instead of the Android defaultaab) and the built.ipais renamed to<client>_v<version>.ipalike Android artifacts. - The Slack build summary is now actually posted for every build; previously only APK uploads happened and AAB/iOS/failed builds produced no summary message.
- The splash screen image now uses
APP_LOGO_PATH(falling back toAPP_ICON_PATH) as documented, instead of always using the app icon. - Client fonts are looked up in
clients/<client>/fontsfirst (whatdoctorvalidates) and then<ASSETS_PATH>/fonts. - The default client's branding folder is preserved consistently: the pre-sync cleanup no longer deletes it while the post-build cleanup kept it.
- Removed the stray
.udara_build_history.jsonfrom the repository and ignored it.
- IMPROVEMENTS:
- Global
--verboseflag: prints stack traces on failures and enables Slack debug output. doctorvalidates icon/logo paths again by resolving them to the client folder, flags images that are still the generated placeholder, checksfonts.yamlreferences against the font files present, validatesBUNDLE_IDformat, warns about leftover.udarastate from interrupted builds and about.udara_build_history.jsonmissing from.gitignore.setup --clientsgenerates valid solid-colour placeholder PNGs (so icon/splash tooling runs before real artwork exists), a per-clientREADME.md, a cleaner.envtemplate, addsflutter_dotenvwhen missing, and appends.udara/,.udara_build_history.jsonand/.envto.gitignore.buildfails fast with a pointed message when the client folder, its env file, orflutter_launcher_icons.yamlis missing (listing the available clients), and prints a build summary with duration and artifact path.list-clientsshows each client's app name, bundle id and whether a.env_testexists.historyprints the artifact path of successful builds and rejects a non-numeric--limit.cleanrestores any files left backed up by an interrupted build before runningflutter clean.- Shared step/validation/Slack helpers moved into the base command; dead code removed.
- Added a unit test suite (
dart test) covering env parsing, pubspec asset editing, backup/restore, asset sync ignore rules and artifact renaming. list-clients --jsonandhistory --jsonemit machine-readable output (human log lines move to stderr) for editor integrations and scripts.- New IDE extensions under
extensions/: a VS Code extension and an Android Studio / IntelliJ plugin that list clients and env files and trigger run, build, whitelabel, doctor, clean and diff through the CLI.
1.1.3 #
- FIXES (published to pub.dev on 2026-08-06; notes copied from that release):
- Improved
cleancommand logging by reporting the project cleanup phase before cleanup completes. - Added temporary
.envremoval during cleanup so stale environment files do not persist between builds. - Refined cleanup behavior to ensure project state is restored cleanly after asset refreshes.
1.1.2 #
- FIXES:
- Cleaned up the
doctorcommand diagnostics and kept the asset-path validation comments aligned with the actual client asset layout. - Ensured local project metadata is excluded from version control by ignoring
.udara/workspace artifacts. - Prepared the package for a clean publish by keeping the repo state release-ready.
1.1.1 #
- FIXES:
- Hardened backup/restore behavior by storing backups in a project-local
.udara/backupsdirectory instead of side-by-side.bakfiles, making restore operations more reliable and less likely to clobber unrelated files. - Protected managed branding folders from accidental deletion by refusing to remove non-managed asset directories and cleaning up only inactive client branding folders marked by
udara_cli. - Improved asset sync validation so builds fail early when no branding assets are copied for the selected client, with clearer remediation guidance.
- Corrected the client
.envasset path wiring during white-label setup to ensure the proper env file is tracked for each client.
1.1.0 #
- NEW:
doctorcommand: Validates project & client setup before building — checks required project files, pubspec dependencies (includingflutter_dotenv), and per-client.env/.env_testpresence, required keys, referenced asset paths, and font configuration. Run withudara_cli doctororudara_cli doctor --client <name>.historycommand: Every build (success or failure) is now recorded to a project-local.udara_build_history.json. View recent builds withudara_cli history, filter with--client/--limit, or clear with--clear.diffcommand: Compare environment configuration between two clients withudara_cli diff --client-a <NAME> --client-b <NAME>. Add--testto compare.env_testfiles, or--allto show every key instead of only the ones that differ.- Added an
example/folder demonstrating a full setup → build workflow.
- IMPROVEMENTS:
- Colored terminal output: Success, warning, and error messages are now color-coded (green/yellow/red) instead of emoji-only, with automatic fallback to plain text when the terminal doesn't support ANSI escapes (e.g. output piped to a file or CI log).
- Added
topicsand refined metadata inpubspec.yamlfor improved pub.dev discoverability. - Expanded dartdoc comments across the public API.
1.0.6 #
- FIXES:
- Dynamic iOS Development Team: Added support for reading client-specific DEVELOPMENT_TEAM IDs from environment variables during iOS builds.
- Centralized Structured Logging: Replaced ad-hoc print() statements with a dedicated Logger class (phase, info, success, warning, error) to produce clean, scannable terminal output.
- Enhanced Exception Tracking: Replaced generic throws with contextual BuildException instances that include actionable remediation suggestions (fix) to easily pinpoint and resolve failure root causes.
- Built-in default ignore rules to prevent accidental copying of sensitive files such as:
service_account.json*.pem,*.key,*.p12,*.jks,*.keystore
- Resilient Pipeline Execution: Improved file I/O checks, pre-flight configuration validation, and build step notifications across all commands.
- Support for user-defined ignore patterns via
.udaraignorefile.