arcle 3.0.0
arcle: ^3.0.0 copied to clipboard
Agentic Flutter Development Platform — scaffold Clean Architecture projects with BLoC, GetX, or Riverpod, and configure AI agent support.
3.0.0 #
Network Ecosystem (Dio & Http) #
- Interactive Network Selection: During project creation (
arcle create/arcle init), developers are prompted to select their preferred network ecosystem across all state management choices (BLoC, GetX, Riverpod):1. Dio (recommended)2. Http(powered byhttp: ^1.6.0)
- Added
--network/-nflag (dioorhttp) toarcle createandarcle initfor non-interactive / CI automation. - Full
package:http1.6.0 client integration (ApiHttpClient):- GET, POST, PUT, PATCH, DELETE operations.
- Native request cancellation via
AbortableRequestandAbortableMultipartRequest. - Multipart file upload support.
- File download with real-time download progress tracking.
- Unified
ApiResponsewrapper matching status code and response payloads.
- State-aware dependency injection configuration for both
DioClientandApiHttpClient(BLoC get_it, GetX bindings, Riverpod providers).
Unified Error & Response Handling #
- Actively wired
BaseResponseandResponseHandlerinto project generation for both Dio and Http networking pipelines. - Error messages are surfaced through
AppDialogs(lib/core/utils/dialogs.dart) directly fromAppFailure:- Error messages and retry prompts display clean dialogs (
AppDialogs.showErrorandAppDialogs.showRetry). - Success actions display a 2-second snackbar notification (
AppDialogs.showSuccess). - Technical error messages and raw traces are intercepted and mapped into user-friendly messages via
AppFailure.
- Error messages and retry prompts display clean dialogs (
Application Branding & Versioning #
- ARCLE version banner: The CLI intro banner now displays
ARCLE Version : 3.0.0instead ofARCLE-FLUTTER CLEAN ARCHITECTURE. - Project naming in constants: Generated
lib/core/utils/constants.dartnow includesstatic const String appName = '<project_name>';inAppConstants. MaterialAppwidget now consumestitle: AppConstants.appNamewithimport 'package:<project_name>/core/utils/constants.dart';across BLoC, GetX, and Riverpod templates.
Breaking Changes — Clean Architecture & Core Restructure #
This release replaces the unpublished 2.4.0 line entirely because it changes generated project structure and import paths; anyone who already generated a project against the unpublished 2.4.0 templates needs to regenerate or manually migrate.
- Data sources no longer parse response bodies. Previously,
${Feature}RemoteSource/${Feature}RemoteDataSourceclasses (inarcle feature <name>output) calledModel.fromJson(...)directly on the raw API response, which put domain-shape knowledge in the transport layer and bypassedBaseResponseentirely. Data sources now only call the API and wrap the raw response inBaseResponse(Future<BaseResponse<dynamic>> fetchData()); the repository impl class is the only place that callsModel.fromJsononBaseResponse.dataand maps to an entity. This matches the clean-architecture rule that transport and domain-model parsing are separate responsibilities. BaseResponseandResponseHandlermerged into one file (lib/core/network/base_response.dart).ResponseHandlerpreviously reimplemented its own ad-hoc envelope detection (checkingdata/result/payloadkeys, manualsuccesschecks) instead of usingBaseResponse.fromJson, so two independent, partially-overlapping response-shape parsers existed in the same project.ResponseHandlernow builds aBaseResponsefirst and derives success/failure/data from it — response-shape normalization lives in exactly one place.- Removed the unused
ErrorHandlerclass andcore/error_handler/folder. It was generated into every project but never referenced anywhere outside its own definition file; presentation code already callsAppDialogsdirectly off theAppFailurereturned byresult.fold(...). core/folder consolidation — new projects now generate:core/network/—api_service.dart,http_client.dart/dio_client.dart,base_response.dart(incl. mergedResponseHandler),api_failure.dart,result.dart(replacescore/api_client/,core/response_handler/, andcore/utils/result.dart)core/services/—session_manager.dart,pref_manager.dart,notification_service.dart,permission_service.dart(replacescore/session_manager/,core/notifications/,core/permissions/)core/theme_manager/—app_theme.dart,app_colors.dart,dimensions.dart(renamed fromcore/theme_handler/, now also owns colors and spacing since they're one "how things look" concern)core/di/,core/env/,core/localization/,core/route_handler/,core/common_widgets/,core/utils/are unchanged.
2.3.2 #
Documentation & Work Tracking #
arcle create,arcle init, andarcle configure-ainow seed a rootdocs/PLAN.mdanddocs/HISTORY.mdfor whole-project planning and a chronological work log.arcle feature <name>now generateslib/features/<name>/docs/<name>_plan.mdandlib/features/<name>/docs/<name>_history.md— keeping each feature's docs grouped in adocs/folder while still naming the files after the feature, so it stays obvious which feature a file belongs to.- Added
arcle history add --summary "<text>" [--feature <name>] [--agent claude|codex|gemini|human]to append work-tracking rows to rootdocs/HISTORY.mdand, when--featureis given, to that feature'sdocs/HISTORY.mdtoo. arcle configure-ainow writes the work-tracking rule intoCLAUDE.md,.codex/instructions.md, andGEMINI.md, instructing agents to runarcle history addafter finishing a unit of work, and allow-listsarcle history addin the generated Claude Codesettings.json.- Generating a feature now automatically logs a "Feature scaffolded" entry to root
docs/HISTORY.mdso project history stays accurate even without AI involvement.
2.3.1 #
Theme System Improvements #
- Generated
AppThemenow coverscheckboxTheme,radioTheme,switchTheme,textButtonTheme,dialogTheme,bottomSheetTheme,floatingActionButtonTheme,progressIndicatorTheme,tabBarTheme,tooltipTheme, andtextSelectionThemefor both light and dark modes, all driven fromAppColors. - Button styles now define
disabledBackgroundColor/disabledForegroundColorso disabled states are theme-driven instead of hardcoded per widget. CommonButton,CommonTextField,CommonDropdown,CommonCheckbox,CommonSnackbar,CommonAppBar, andCommonBottomSheetno longer hardcode fallback colors (Colors.blue/grey/white/red/green) — they now inherit fromAppTheme/AppColorsby default while still accepting optional per-call overrides.CommonDropdownis now built onDropdownButtonFormField, so it automatically shares the sameinputDecorationThemestyling asCommonTextFieldinstead of rendering unstyled.- Result: editing
lib/core/utils/app_colors.dartnow cascades consistently through every common widget, in both light and dark mode, without further per-widget edits.
CLI Cleanup #
- Removed a large block of dead, unreferenced template code from
core_templates.dart, including a duplicate/outdatedAppThemeimplementation that used deprecatedMaterialStatePropertyAllAPIs and was never wired into project generation.
2.3.0 #
Improvements #
- Feature generation now creates only
<feature>_plan.mdand<feature>_history.mdinside each feature module. arcle build apknow supports debug/staging, release/production, or both builds with interactive version selection and environment-aware APK names.- Added
arcle organize importsto convert project-relative imports to fullpackage:imports, remove duplicates, and sort imports. Use--checkto preview changes. arcle reviewnow runs the complete review workflow by default: analyze, format, missing-test scan, tests with coverage, and AI review when configured.arcle verifynow runs all verification checks by default, including feature structure, assets, localization, code generation, and 16 KB APK validation.- Added automatic command reports at
docs/report.md; thedocsdirectory is created when necessary, with separate review and verify report content. - API logging now prints one focused request record containing only the full URL, endpoint, request body, and response body with highlighted labels.
- Updated generated Dio API signatures to use explicit generic types such as
Response<dynamic>, preventingstrict-raw-typeswarnings.
CLI Cleanup #
- Removed the
arcle brandarcle bdAPK shortcut commands in favor of the interactivearcle build apkworkflow. - Simplified README and CLI help examples so the main review and verification commands are easier to remember.
2.2.0 #
New Features #
- New
arcle cicommand — generate CI/CD pipelines for GitHub Actions (arcle ci add github) or GitLab CI (arcle ci add gitlab). Runsdart analyze+dart formaton every push, with opt-influtter test/--coverage, and optional--build apk|appbundleartifact upload. Also supportsarcle ci listandarcle ci remove <provider>.
Fixes #
- Wired up
arcle add localeandarcle delete locale— these commands existed in the codebase and were documented in the README but were never registered with the CLI's argument parser, so running them returned "Unknown command." They now work as documented, including thearcle del localealias.
Release #
- Formal release consolidating the 2.1.5 changeset —
CardThemeDatatheme fix and updated Codex/Gemini AI templates — with a full README and toolchain documentation pass.
2.1.5 #
Fixes #
- Updated generated theme templates for current Flutter APIs — replaced
CardThemewithCardThemeDatain the light and darkAppThemetemplates so newly generated projects use the correct material theme type. - Refreshed AI agent config templates — updated Codex and Gemini settings templates to use the newer model object shape; Codex now defaults to
gpt-5.6and Gemini togemini-3.5-flash.
2.1.4 #
Improvements #
- Expanded
AppColors— replaced the minimal 5-constant class with a full design-system palette: brand (light + dark), accent (light + dark), backgrounds, surfaces, borders, text (primary/secondary for each mode), semantic (error, success, warning, info), and neutral utilities (divider, disabled, overlay).AppColors._()private constructor prevents instantiation. - Reworked
AppTheme—AppTheme._()private constructor;light()/dark()renamed tolightTheme/darkThemegetters; all hardcodedColor(...)values replaced withAppColors.*references; added full component theme coverage:cardTheme,elevatedButtonTheme,outlinedButtonTheme,inputDecorationTheme,bottomNavigationBarTheme,navigationBarTheme,drawerTheme,dividerTheme,chipTheme,snackBarTheme; importsapp_colors.dart. - New
PaginatedListView<T>widget — generated tolib/core/common_widgets/paginated_list_view.dart; pure stateless widget that handles scroll-threshold triggering, separated/normal list modes, loading indicator, empty state, and end-of-list widget. All state (items, isLoading, hasReachedMax) is owned by the caller's state management layer.
2.1.3 #
Changes #
- Removed arrow-key TUI menu — state management selection reverts to the simple numbered prompt (
1. BLoC / 2. GetX / 3. Riverpod). The ANSI raw-mode approach causedStdinExceptionon Windows terminals and added unnecessary complexity. The--stateflag continues to work as before for non-interactive use. interactive_menu.dartremoved.configure-aiagent selection also uses a numbered prompt.
2.1.2 #
Documentation #
- Updated README to reflect v2.1.x commands — removed unreachable commands, added
arcle configure-aiandarcle reviewsections, updated "What's New" from 2.0.0 to 2.1.x.
2.1.1 #
Bug Fixes #
- Fixed crash on Windows when launching the arrow-key state selection menu —
StdinException: Error setting terminal echo modewas thrown on certain Windows terminals (cmd.exe, some PowerShell hosts) that reportstdin.hasTerminal = truebut do not support raw mode. Raw-mode setup now happens before any rendering;StdinExceptionis caught inselect()and silently falls back to the numbered list (1. BLoC / 2. Riverpod / 3. GetX).
2.1.0 #
Improvements #
- Decoupled AI scaffolding from
arcle create— default project creation now generates only the Flutter Clean Architecture structure. AI agent config (.ai/,.claude/,.codex/,.gemini/,scripts/) is no longer generated automatically. - New command:
arcle configure-ai(alias:arcle agent-init) — interactive one-question wizard to scaffold AI agent context files for an existing project. Detects state management fromarcle.yaml; prompts if not found. Supports Claude Code, OpenAI Codex, Google Gemini, or all three. - Arrow-key TUI menu for state management selection — replaced the text-based prompt (typing
bloc/getx/riverpod) with an ANSI arrow-key navigable menu. Falls back to a numbered list automatically in CI/CD and non-TTY environments. The--stateflag still bypasses the menu for scripted use. - New command:
arcle review(aliases:arcle audit,arcle -r) — pre-commit quality gate that runs:dart analyze— static analysisdart format --output=none --set-exit-if-changed— format check- Missing-tests scan — checks only files changed in the current git diff; warns on any
lib/file with notest/counterpart flutter test(opt-in via--test)flutter test --coveragewith percentage report (opt-in via--coverage)- AI-assisted diff review via configured agent binary (opt-in via
--ai)
2.0.0 #
ARCLE Agentic Flutter Development Platform
New Commands #
arcle agent add <claude|codex|gemini|custom>— scaffold agent-specific config files (.claude/,.codex/,.gemini/,.custom-agent/)arcle agent remove <agent>— remove an agent configuration directoryarcle agent switch <agent>— setactive_agentin.ai/settings.yamlarcle agent list— list all configured AI agents in the projectarcle agent validate— validate that all required.ai/files existarcle ai init [--state]— generate.ai/project context & rules directoryarcle ai sync— sync.ai/settings.yamlstate fromarcle.yamlarcle ai validate— check all required.ai/config filesarcle ai doctor— diagnose AI configuration healtharcle upgrade [--force]— upgrade an existing ARCLE project to v2.0.0 (SDK, analysis, dimensions,.ai/, scripts)
Project Scaffolding #
- New projects now include
.ai/directory with 6 AI agent context files:settings.yaml,project-context.md,architecture-rules.md,coding-rules.md,security-rules.md,permissions.yaml - New projects now include Claude Code integration (
.claude/CLAUDE.md,.claude/settings.json) - New projects now include OpenAI Codex integration (
.codex/instructions.md,.codex/settings.json) - New projects now include Gemini integration (
.gemini/GEMINI.md,.gemini/settings.json) - New projects now include
scripts/setup.sh,scripts/setup.ps1,scripts/doctor.sh,scripts/doctor.ps1
Breaking Changes #
- Replaced
DimensionsTemplates.dimensions(state)with universalDimensionsTemplates.dimensions()— new implementation usesdart:uiPlatformDispatcher directly (works for all state management, no GetX dependency) - Updated
analysis_options.yamltemplate: replacedprefer_relative_importswithalways_use_package_imports, addedavoid_unnecessary_containers,prefer_single_quotes,unnecessary_const,unnecessary_new - Minimum Dart SDK raised from
^3.5.4to>=3.7.0 <4.0.0
Improvements #
- Generated project
pubspec.yamlSDK constraint is now automatically set to>=3.7.0 <4.0.0 buildCommonProjectFilesnow acceptsprojectNameparameter for proper AI context generation
1.0.4 #
- Reworked localization management around dedicated top-level commands:
arcle add locale <code>adds a single locale to the project; on first use it creates the localization infrastructure, and on later calls it appends the locale to the existing setup.arcle delete locale <code>removes a single locale's JSON file, updatessupportedLocales/isSupportedinapp_strings.dart, removes the GetX locale section when applicable, and cleans theassets/langs/pubspec entry when the last locale is removed.
- Added localization command aliases:
arcle add loc <code>,arcle delete loc <code>,arcle del locale <code>, andarcle del loc --<code>. - Added
--<code>flag shorthand for locale commands such asarcle add loc --myandarcle del loc --my. add localenow supports any ISO 639-1 locale code, with built-in country-code mappings for 60+ languages; unknown locales receive English-value placeholder JSON so the app stays runnable while translations are filled in.- Updated localization injection so feature keys are added to every JSON file under
assets/langs/and every// arcle:keys_*marker ingetx_localization.dart. - Added
arcle verify --check-featuresto scan every module underlib/features/and report missing data, domain, or presentation layer files for the project's state management. - Added
arcle verify --check-assetsto verify that every asset path declared inpubspec.yamlexists on disk. - Added
arcle verify --check-l10nto verify that each feature has its{feature}_titletranslation key present inassets/langs/en.json(BLoC/Riverpod) orlib/core/localization/getx_localization.dart(GetX). - Added
arcle verify --fullto run--check-features,--check-assets, and--check-l10nin a single pass.
1.0.3 #
Platform Configuration Improvements:
- [CRITICAL FIX] Added automatic iOS Podfile configuration with minimum deployment target of iOS 13.0.
- [CRITICAL FIX] Added automatic iOS Info.plist generation with essential permission descriptions (camera, photos, microphone, location, contacts, calendar).
- [CRITICAL FIX] Added post-install hooks to Podfile to ensure consistent iOS build settings across all targets.
- [CRITICAL FIX] Fixed iOS builds that would previously fail due to missing Info.plist permission descriptions.
- Added automatic iOS deployment target enforcement to prevent compatibility issues.
- Updated iOS configuration to match Android's rigorous platform setup standard.
- Both Android and iOS are now configured equally during project creation for production-ready apps.
- Created comprehensive
PLATFORM_CONFIGURATION_GUIDE.mdwith setup details, checklists, and troubleshooting.
Build & DI Improvements:
- Added persistent build version updates in
arcle build apkwith--version-nameand--version-code, which rewrite the target project'spubspec.yaml. - Added persistent environment updates in
arcle build apk --env prod|stag|local, which rewrite the target project'slib/core/env/env_factory.dart. - Added static 16 KB Android APK compatibility checks with
arcle verify --check-16kb. - Added separated
gen-diandauto-gen-dicommands with clear documentation on when/why to use each. - Added comprehensive DI_COMMANDS_GUIDE.md explaining command differences and use cases.
Developer Experience:
- Added optional short command aliases such as
new,feat,health,autodi,di,docs,ver,b,br, andbdwhile keeping all existing commands unchanged. - Platform configuration status now shown during project creation (Android & iOS setup feedback).
1.0.2 #
- Added
doctorcommand for ARCLE project health checks. - Added
doctor --fixfor safe ARCLE-owned repairs. - Added
verifycommand to run analyze, test, and BLoC codegen verification. - Added generated
core/utils/date_formatter.dartwith UTC/local conversion and UX-friendly date helpers. - Added automatic
intldependency injection to generated projects. - Updated generated notification service to be platform-safe across Android, iOS, macOS, and unsupported platforms.
- Updated generated permission service to use platform-aware permission handling and safe fallbacks.
- Updated README with platform notes for Android, iOS, macOS, and web behavior.
- Removed generated
lib/features/README.mdfrom new projects across all state management options.
1.0.1 #
- Fixed pubspec description length.
- Added usage example.