Skip to content

Releases: appcircleio/appcircle-cli

v2.8.0

Choose a tag to compare

@BrkYld BrkYld released this 30 Jun 07:11

Release Notes for v2.8.0

💪 Improvements

Manage Build Workflows as YAML

Build profile workflows can now be downloaded as a YAML file, edited locally, and uploaded back — either to create a new workflow or to update an existing one. The uploaded file is validated (component existence, step names, YAML format) before the workflow is saved.

# List the workflows of a build profile
appcircle build profile workflow list --profileId <uuid>

# Download a workflow as a YAML file
appcircle build profile workflow download --profileId <uuid> --workflowId <uuid> --path ./

# Create a new workflow from a YAML file
appcircle build profile workflow create --profileId <uuid> --workflowName "Release Workflow" --filePath ./workflow.yaml

# Update an existing workflow from a YAML file
appcircle build profile workflow update --profileId <uuid> --workflowId <uuid> --filePath ./workflow.yaml

Manage Publish Flows as YAML

Publish profile flows support the same download/update experience for both iOS and Android profiles.

# List the publish flows of a publish profile
appcircle publish profile publish-flow list --platform ios --publishProfileId <uuid>

# Download a publish flow as a YAML file
appcircle publish profile publish-flow download --platform ios --publishProfileId <uuid> --publishFlowId <uuid> --path ./

# Update an existing publish flow from a YAML file
appcircle publish profile publish-flow update --platform ios --publishProfileId <uuid> --publishFlowId <uuid> --filePath ./flow.yaml

Interactive Mode Support

The new build profile workflow and publish profile publish-flow commands are fully available in interactive mode, with guided selection of profiles, workflows, and flows.

Build Profile Workflow Command Grouping (Deprecation)

Build profile workflow commands are now grouped under build profile workflow. The previous build profile workflows command is deprecated and will be removed in a future release.

# Deprecated (still works)
appcircle build profile workflows --profileId <uuid>

# Use instead
appcircle build profile workflow list --profileId <uuid>

🔒 Security

Dependency Vulnerability Fixes

Updated vulnerable runtime dependencies (including axios, form-data, follow-redirects, and fast-uri) to their patched versions. This resolves all known vulnerabilities in the CLI's runtime dependencies (no functional changes).

v2.7.8

Choose a tag to compare

@fuatguzel fuatguzel released this 08 Feb 19:24

Release Notes for v2.7.8

Based on v2.7.7

💪 Improvements

Simplified Release Notes Handling for Testing Distribution

  • Release notes (--message parameter) are now sent directly to the API during upload commit
  • Removed complex release notes update logic that required waiting for task completion and version ID retrieval
  • Improved upload performance and reliability
# Release notes are now sent directly during upload
appcircle testing-distribution upload --distProfileId <uuid> --app <path> --message "Release notes"

Consistent Release Notes Support Across All Upload Commands

  • Added --message parameter support to Enterprise App Store upload commands
  • Added --message parameter support to Publish upload command
# Enterprise App Store with release notes
appcircle enterprise-app-store version upload-for-profile --entProfileId <uuid> --app <path> --message "Bug fixes"

# Publish with release notes
appcircle publish profile version upload --platform ios --publishProfileId <uuid> --app <path> --message "Bug fixes"

v2.7.7

Choose a tag to compare

@fuatguzel fuatguzel released this 17 Nov 21:28

Release Notes for v2.7.7

Based on v2.7.6

💪 Improvements

Testing Distribution: Enhanced Release Notes Input Experience

  • Improved the user experience when entering multi-line release notes in interactive mode
  • Added clear on-screen guidance specific to Testing Distribution workflows
  • Users are now informed to leave two blank lines to complete the input
# In interactive mode, when entering release notes:
? Release Notes
(Leave two blank lines to finish)

Better Error Messages for Missing Parameters

  • Upload Commands: More descriptive error messages when required --app parameter is missing
  • Error messages now clearly indicate which parameter is required and provide helpful context
  • Prevents cryptic TypeError messages and guides users to provide the correct parameters
# ❌ Before: TypeError: Cannot read properties of undefined
# ✅ The --app parameter is required. Please provide the path to your app file (.ipa for iOS, .apk/.aab for Android). (exit code: 1)

🐛 Bug Fixes

AAB File Release Notes Update

  • Testing Distribution: Fixed issue where --message parameter did not update release notes for AAB files
  • Release notes now correctly update for both APK and AAB file uploads
# Now works correctly for both APK and AAB files:
appcircle testing-distribution upload --distProfileId xxx --app ./app.aab --message "Release notes"
appcircle testing-distribution upload --distProfileId xxx --app ./app.apk --message "Release notes"

v2.7.6

Choose a tag to compare

@fuatguzel fuatguzel released this 27 Oct 07:17

Release Notes for v2.7.6

Based on v2.7.5

🆕 New Features

Commit Hash Support for Build View

The build view command now accepts --commitHash parameter to view build details by commit hash instead of build ID.

appcircle build view --profileId xxx --commitHash abc123def

💪 Improvements

API Authorization and Error Messages

  • API Authorization Errors: Clearer permission-denied messages with actionable guidance
  • Error Message Structure: Numbered reasons for incompatibility errors for easier troubleshooting

Enhanced Parameter Validation for Build Start Command

  • --monitor flag now requires a valid value (none, summary, steps, or verbose)
  • Incompatible parameter combinations are now detected and prevented with clear error messages
  • --no-wait cannot be used with monitoring modes
  • Download options (--download-artifacts, --download-logs) cannot be used with --no-wait or --monitor none

🐛 Bug Fixes

  • Build Start with --no-wait: No longer shows misleading "Failed to start build" message when build is successfully queued
  • Tilde Path Expansion: Paths like ~/Desktop/ now correctly expand to user's home directory instead of creating literal folders
  • Certificate Upload: --password parameter is now optional for certificates without password protection
  • Build Failure Exit Code: CLI now exits with code 1 when monitored builds fail (previously exited with code 0)

ℹ️ Breaking Changes

  • Invalid parameter combinations now result in errors instead of warnings
  • The --monitor flag requires a valid value when specified

Migration examples:

# ❌ No longer works
appcircle build start --profileId xxx --no-wait --download-artifacts
appcircle build start --profileId xxx --monitor

# ✅ Correct usage
appcircle build start --profileId xxx --download-artifacts
appcircle build start --profileId xxx --monitor summary

v2.7.5

Choose a tag to compare

@fuatguzel fuatguzel released this 26 Sep 07:42

Release Notes for v2.7.5

Based on v2.7.4

🆕 New Features

Monitor Mode Selection

A new --monitor flag has been introduced to control how build progress is displayed. Available options:

  • none: No monitoring. Just return Task/Build ID and exit immediately.
  • summary (default): Wait until completion, show final status + total duration in one line.
  • steps: Wait until completion, show step-by-step progress (started/finished) minimally.
  • verbose: Wait until completion, stream detailed logs line by line in real time.

💪 Improvements

  • Unit Tests with Vite/Vitest: Added unit tests across core modules to boost reliability and guard against regressions.
  • Refactors for Testability: Restructured selected code paths (no functional changes) to make modules more modular and easier to test.
  • Authentication Command Update (Backward Compatible):
    • New preferred syntax:
      appcircle login personal-access-key --secret="<SECRET>"
    • Legacy syntax (still supported, deprecated):
      appcircle login pat --token="<TOKEN>"
    • The legacy form continues to work and is mapped internally to the new command. A deprecation notice is shown to encourage migration. No breaking changes introduced.

🐛 Bug Fixes

  • Testing Distribution: Fixed an issue where release notes were not updated after upload. Post-upload release note updates now persist correctly.

v2.7.4

Choose a tag to compare

@BrkYld BrkYld released this 05 Sep 09:37

Release Notes for v2.7.4

Based on v2.7.3

💪 Improvements

  • Reliability Improvements:
    • Upload Retry Policy: Implemented an automatic retry mechanism with exponential backoff for file uploads to Google Cloud Storage. This ensures more reliable artifact delivery by handling transient 503 Service Unavailable responses gracefully.
    • Resilience to Network Fluctuations: Temporary network or service disruptions during upload will now trigger retries instead of immediate failure, reducing the likelihood of failed build artifact uploads.

v2.7.3

Choose a tag to compare

@fuatguzel fuatguzel released this 15 Aug 09:41

Release Notes for v2.7.3

Based on v2.7.2


🆕 New Features

  • Authentication System:
    • Login with API Key: Added API key login.
    • Local Logout Optimization: Refactored logout functionality to clear authentication tokens locally without making unnecessary API calls, improving performance and reliability.

💪 Improvements

  • User Experience Improvements:

    • Login Protection: Added automatic detection for already logged-in users. When attempting to login while already authenticated, users now receive a clear "You are already logged in" message, preventing duplicate authentication attempts.
    • Interactive Mode Authentication Grouping: Login and Logout options are now grouped under a unified "Authentication (Login/Logout)" menu in interactive mode for better organization.
  • Command Structure Improvements:

    • PAT Login Command Update: Changed Personal Access Token login command from appcircle login --pat... to appcircle login pat --token... for better command structure and clarity.

v2.7.2

Choose a tag to compare

@fuatguzel fuatguzel released this 07 Aug 14:54

Based on v2.7.1


Features

  • Automatic Download Options in Build Start:

    Previously, download options and paths were only prompted after the build was completed. With this update, users can now configure these options before the build starts using the following flags:

    • --download-artifacts: Automatically download build artifacts after the build completes.
    • --download-logs: Automatically download build logs after the build completes.
    • --path: Specify a custom download directory for better file organization.

    These options streamline the post-build experience and allow full control over output management without manual prompts.


Fixes

  • Interactive Mode Improvements:

    • Fixed issue where interactive mode would display help text instead of proper error messages when no builds, commits, or branches were found.
    • Interactive mode now shows context-specific error messages and gracefully handles empty API responses.
    • Removed duplicate success messages during build log downloads for cleaner output.
  • Path and File Handling:

    • Fixed issue where branch names containing forward slashes (e.g., feature/publish, refactor/cleanup) would be incorrectly interpreted as file paths
    • Added comprehensive directory existence checks to prevent ENOENT errors during downloads
    • Implemented cross-platform file name sanitization for unsafe characters (/, \, <, >, :, ", |, ?, *)
  • Error Message Clarity:

    • Enhanced download path validation with automatic directory creation and user-friendly error messages.
    • Enhanced error messages to clearly distinguish between build failures and download issues.

Enhancements

  • Smart User Feedback:
    • Added positive feedback when directories are successfully created
    • Provides clear guidance and examples when paths are invalid or permissions are insufficient.
    • Shows detailed file paths in success messages for better traceability.

Documentation

  • Improved Command Examples:
    The documentation for the build start command has been updated with additional explanations and usage details for available options.

v2.7.1

Choose a tag to compare

@fuatguzel fuatguzel released this 01 Aug 05:06

Based on v2.7.0


Improvements

  • Added the --no-wait parameter to the build start command, allowing builds to be triggered without waiting for completion.

v2.7.0

Choose a tag to compare

@fuatguzel fuatguzel released this 25 Jun 11:39

Based on v2.6.0


Improvements

  • Alternative String Parameters for All Modules:
    All CLI modules now support using human-readable names as alternatives to UUIDs, making commands more intuitive and user-friendly. The following parameters now support both UUID and string name alternatives across all applicable commands:

    • --profileId / --profile (Build profiles)
    • --branchId / --branch (Build branches)
    • --configurationId / --configuration (Build configurations)
    • --workflowId / --workflow (Build workflows)
    • --certificateId / --certificate (iOS certificates)
    • --keystoreId / --keystore (Android keystores)
    • --provisioningProfileId / --provisioningProfile (iOS provisioning profiles)
    • --testingGroupIds / --testingGroups
    • --distProfileId / --distProfile
    • --entProfileId / --entProfile
    • --entVersionId / --entVersion
    • --organizationId / --organization
    • --userId / --user
    • --publishProfileId / --publishProfile

    Build Module:

    # Instead of UUID: --profileId "123456-789a-bcde-f012-345678901234"
    appcircle build start --profile "My iOS Project" --branch "main" --workflow "Default Push Workflow"
    
    # Instead of UUID: --branchId "123456-789a-bcde-f012-345678901234"
    appcircle build profile branch commits --profile "My iOS Project" --branch "develop"
    
    # Instead of UUID: --workflowId "123456-789a-bcde-f012-345678901234"
    appcircle build start --profile "My iOS Project" --branch "develop" --workflow "Default Push Workflow"
    
    # Instead of UUID: --configurationId "123456-789a-bcde-f012-345678901234"
    appcircle build start --profile "My iOS Project" --branch "develop" --workflow "Default Push Workflow" --configuration "Default Configuration"

    Signing Identity:

    # Instead of UUID: --certificateId "123456-789a-bcde-f012-345678901234"
    appcircle signing-identity certificate view --certificate "My Certificate"
    
    # Instead of UUID: --keystoreId "123456-789a-bcde-f012-345678901234"
    appcircle signing-identity keystore view --keystore "My Keystore"
    
    # Instead of UUID: --provisioningProfileId "123456-789a-bcde-f012-345678901234"
    appcircle signing-identity provisioning-profile view --provisioningProfile "My Provisioning Profile"

    Testing Distribution:

    # Instead of UUID: --testingGroupIds "123456-789a-bcde-f012-345678901234"
    appcircle testing-distribution profile settings auto-send --testingGroups "My Testers,QA Team"
    
    # Instead of UUID: --distProfileId "123456-789a-bcde-f012-345678901234"  
    appcircle testing-distribution upload --distProfile "DistributionProfile"

    Publish Module:

    # Instead of UUID: --publishProfileId "123456-789a-bcde-f012-345678901234"
    appcircle publish profile view --publishProfile "My Profile"

    Enterprise App Store:

    # Instead of UUID: --entProfileId "123456-789a-bcde-f012-345678901234"
    appcircle enterprise-app-store version publish --entProfile "MyApp (Android)"
    
    # Instead of UUID: --entVersionId "123456-789a-bcde-f012-345678901234"
    appcircle enterprise-app-store version publish --entProfile "MyApp (Android)" --entVersion "1.0.14" summary "June Release" --releaseNotes "Updates for June" --publishType 2

    Organization Management:

    # Instead of UUID: --organizationId "123456-789a-bcde-f012-345678901234"
    appcircle organization view --organization "My Organization"
    
    # Instead of UUID: --userId "123456-789a-bcde-f012-345678901234"
    organization role view --organization 'My Organization' --user "user@example.com"
  • Enhanced Boolean Parameter Handling:
    String boolean values are now automatically converted to proper boolean types for API compatibility.


Fixes

  • JSON Output Format:
    Fixed -o json output format that was not working correctly after the 2.6.0 update. JSON responses now maintain proper structure and formatting.

  • Build and Publish Start with JSON Output:
    When starting a build with -o json format, the download step is now automatically skipped to prevent interference with JSON output formatting.


Documentation

  • Updated Command Examples:
    All documentation now includes examples using both UUID and string name parameters for better user guidance.

  • Parameter Reference Updates:
    Help documentation updated to clearly show alternative parameter options and usage examples.