fastlane/fastlane
53.7
Adequate · 22 September 2026
103.7k
lines of production code
Ruby
primary language
4
measurements over time
What this system is
This system is a comprehensive DevOps automation platform for mobile application development, specifically designed to streamline the build, test, and release workflows for iOS, macOS, tvOS, and Android. It provides a suite of specialized tools that handle the entire software delivery lifecycle, including code signing, provisioning, binary compilation, screenshot generation, and submission to app stores and beta testing platforms. The system also includes infrastructure for managing developer credentials, validating app metadata against store guidelines, and publishing to the Google Play Store.
How it got here
2014–2016 — Mono-repo consolidation and API migration
89 changes.
This period focused on migrating individual fastlane tools into a unified mono-repository structure, standardizing CLI interfaces with the Commander gem, and introducing Swift configuration templates. It also involved significant backend updates to replace legacy iTunes Connect and Developer Portal APIs with modern App Store Connect and Google Play APIs, alongside core infrastructure improvements like Ruby version upgrades and dependency management.
2017–2020 — App Store Connect API migration and precheck tooling
34 changes.
This period focused on migrating core infrastructure from legacy iTunes Connect interfaces to the modern App Store Connect API, including the introduction of Spaceship::ConnectAPI and updated TestFlight and provisioning clients. It also saw the launch of the Precheck tool for validating app metadata against App Store review rules, alongside significant enhancements to Match's encryption and storage backend support.
2022–2026 — CI integration and storage expansion
6 changes.
This period focused on enhancing CI compatibility by introducing native JUnit report generation for Xcode 16+ and expanding Match's storage backends to support GitLab Secure Files. The work was underpinned by significant improvements in internal tooling, including new rake tasks for parallel testing and code quality enforcement, alongside comprehensive test coverage for the new features.
Features
Add AndroidX-based locale tester example app
The screengrab example application has been updated to use AndroidX libraries (e.g., androidx.appcompat, com.google.android.material) and now includes a complete demo app with multiple activities, layouts, and localized string resources (French, Japanese) to test locale handling.
screengrab/example/src/main · high confidence
Add Mac and WatchKit example projects
New example projects for Mac and WatchKit are now included in gym/examples, providing ready-to-use Xcode project structures, source files, and configuration for building macOS applications and WatchKit apps/extensions.
gym/examples · high confidence
Add Swift Matchfile template and update documentation assets
The match tool now provides a Swift-based configuration template (MatchfileTemplate.swift) alongside the existing Ruby template, enabling users to initialize match configurations using Swift syntax. Additionally, the README template has been updated to reflect current installation instructions, including the switch from 'brew cask install' to 'brew install' for fastlane, and improved documentation links.
match/lib/assets · high confidence
Add Swift configuration template for Screengrab
Users can now generate a Swift-based configuration file (Screengrabfile.swift) to configure screenshot tests. This new template provides a class-based structure with properties for specifying app package names, test packages, APK paths, target locales, and options to clear previous screenshots, offering a native Swift alternative to the existing Ruby template.
screengrab/lib/assets · high confidence
Add example projects for macOS, iOS, and Swift Package Manager
Added example Xcode projects for macOS and iOS applications, along with a Swift Package Manager example, to the scan examples directory. These new projects provide reference implementations for users to understand how to structure and configure their apps for scanning.
scan/examples · high confidence
Add user and invitation management via App Store Connect API v1
This change introduces the \Spaceship::ConnectAPI::Users\ module, enabling programmatic management of App Store Connect team members and invitations. Users can now retrieve, update, and delete existing team users, as well as invite new users, remove pending invitations, and manage app-specific permissions (visible apps) for both existing users and invitees. The implementation targets the App Store Connect API v1 endpoints under the \/iris/\ path and includes the necessary \x-csrf-itc\ header for compatibility with the API.
_spaceship/lib/spaceship/connect\api/users · high confidence
Added Precheckfile configuration templates for Ruby and Swift
Users can now generate a \Precheckfile\ configuration using \fastlane precheck init\ to customize metadata validation rules. The new templates (Ruby and Swift) document the available rule levels (\:skip\, \:warn\, \:error\) and provide examples for configuring checks such as \curse\_words\, \placeholder\_text\, and \custom\_text\, allowing users to tailor the precheck behavior to their project's needs.
precheck/lib/assets · high confidence
Added Swift Gymfile template for configuration
Users can now initialize a Gymfile using Swift syntax via the new \fastlane gym init swift\ command. This change introduces \GymfileTemplate.swift\ in the assets, providing a Swift-based configuration structure that mirrors the existing Ruby template, allowing Swift users to define options like \outputDirectory\, \scheme\, and \sdk\ directly in their Gymfile.
gym/lib/assets · high confidence
Added example project with fastlane and Gradle wrapper
The screengrab/example directory now includes a complete example setup for Android screenshot testing, featuring a fastlane configuration (Appfile, Fastfile, Screengrabfile) and a Gradle wrapper. The Fastfile defines lanes for building debug/test APKs and running screenshots via \capture\_android\_screenshots\, while the Screengrabfile specifies locales (en-US, fr-FR, ja-JP) and APK paths. The Gradle wrapper is configured to use Gradle 6.8.
screengrab/example · high confidence
Added pilot logo asset
A new PDF asset file named pilot.ai has been added to the pilot/assets directory. This file contains the vector graphic and metadata for the pilot logo, originally created in Adobe Illustrator CC 2014.
pilot/assets · high confidence
Added xcbuild-safe.sh wrapper to isolate Xcode build environment
A new shell script, xcbuild-safe.sh, has been added to wrap xcodebuild calls. This wrapper detects and handles RVM and rbenv environments by forcing the use of the system Ruby and unsetting various Ruby-related environment variables (such as RUBYLIB, BUNDLE\_GEMFILE, GEM\_HOME, and GEM\_PATH). This ensures that xcodebuild runs in a stable environment, avoiding issues caused by external Ruby version managers or bundler configurations, which is particularly useful for CI systems like CircleCI.
_gym/lib/assets/wrap\xcodebuild · high confidence
Initial library structure for gym
The gym library is introduced with a new entry point file that loads the core components, including the manager, build and package command generators, runner, error handler, options, detect values, Xcode integration, and code signing mapping.
gym/lib · high confidence
Initialize precheck library with core dependencies
The precheck library is initialized by requiring the runner and options modules, along with the spaceship gem, establishing the foundational dependencies for the precheck functionality.
precheck/lib · high confidence
Introduce App Store Connect API client for provisioning resources
Adds a new \Spaceship::ConnectAPI::Provisioning::Client\ and its associated API module to manage provisioning-related resources (bundle IDs, capabilities, certificates, and devices) via the App Store Connect API. The client handles HTTP method overrides for web sessions and exposes methods to fetch, create, update, and delete provisioning entities, enabling tools like \produce\, \sigh\, and \match\ to interact with Apple's provisioning infrastructure through the modern API.
_spaceship/lib/spaceship/connect\api/provisioning · high confidence
Introduce CredentialsManager CLI for Keychain management
Users can now manage Apple Developer credentials directly from the command line using the new \fastlane-credentials\ subcommands. The \add\ command allows storing a username and password in the macOS Keychain, while the \remove\ command deletes an existing entry. This functionality is implemented via the new \CredentialsManager::CLI\ class, which leverages the \AccountManager\ to interact with the system keychain, providing a programmatic way to handle authentication data without relying solely on interactive prompts or environment variables.
_credentials\_manager/lib/credentials\manager · high confidence
Introduce Spaceship::ConnectAPI for App Store Connect API integration
Adds a new \Spaceship::ConnectAPI\ module that provides a dedicated HTTP client for interacting with the App Store Connect API. This includes JWT token management with automatic expiration handling, a Faraday-based API client with retry logic for 429 and 5xx errors, and model parsing for API responses. The implementation supports both JWT key-based authentication and web session cookies, enabling tools like Pilot, Deliver, and Match to use the modern App Store Connect API endpoints.
_spaceship/lib/spaceship/connect\api · high confidence
Introduce native JUnit report generation for Xcode 16+ xcresult files
The \trainer\ tool now includes a dedicated parser for the modern \xcresulttool\ JSON output (introduced in Xcode 16) and a new JUnit XML generator. This adds support for parsing test results from Swift Testing and correctly identifies skipped tests, while also providing an option to exclude retry attempts from the final report. The output now includes test plan configuration details and ensures accurate failure counts by excluding retries, improving compatibility with CI systems that consume JUnit reports.
trainer/lib · high confidence
Introduce precheck action for App Store review rule validation
Adds the \precheck\ tool to fastlane, allowing users to validate app metadata against a configurable set of App Store review rules (such as checking for negative sentiment, placeholder text, or copyright dates) before submission. The action supports authentication via App Store Connect API keys or legacy Apple ID credentials, enables checking both live and edit app versions, and allows customization of rule severity levels (warn, error, skip) through a generated Precheckfile.
precheck/lib/precheck · high confidence
Introduce produce library entry point
The produce library now exposes a central entry point that loads its core components, including the manager, options parser, developer center, iTunes Connect integration, available default languages, and module definitions.
produce/lib · high confidence
Introduces a feature flag system for conditional behavior
A new \Feature\ class has been added to \fastlane\_core\ to manage feature flags. This system allows specific behaviors to be enabled or disabled based on environment variables, providing a mechanism to toggle functionality without code changes. It includes methods to register features, check their status, and dynamically wrap class or instance methods to switch between enabled and disabled implementations depending on the flag's state.
_fastlane\_core/lib/fastlane\core/feature · high confidence
Introduction of fastlane\_core as a central library
The fastlane\_core library is now available as a central module, providing a unified entry point that requires and exposes a wide range of core functionalities including analytics, build watching, certificate checking, command execution, configuration management, device management, environment handling, feature flags, IPA/PKG analysis and upload, iTunes transporter, keychain importing, project introspection, provisioning profiles, queue workers, and UI components. This change consolidates previously scattered utilities into a single, loadable gem, simplifying dependency management and ensuring consistent access to essential fastlane infrastructure across the ecosystem.
_fastlane\core/lib · high confidence
Introduction of resign.sh script for re-signing iOS applications
The \sigh/lib/assets/resign.sh\ script is added to the codebase, providing a command-line tool to re-sign iOS applications, embedded frameworks, nested apps, and app extensions. It supports updating bundle identifiers, version numbers, display names, and entitlements, while handling provisioning profiles and keychain paths. The script includes logic to manage entitlements merging, On-Demand Resources, and compatibility with different Xcode versions (specifically regarding \archived-expanded-entitlements.xcent\ and DER encoded entitlements).
sigh/lib/assets · high confidence
New ConnectAPI model classes for App Store metadata and privacy declarations
The Spaceship ConnectAPI now includes a comprehensive set of new model classes for managing App Store metadata and privacy compliance. This adds support for Age Rating Declarations (including legacy mapping for deprecated fields), App Clips (default experiences, review details, and header images), App Data Usage (categories, purposes, and publishing states), and App Info (localizations and categories). These models enable programmatic management of age ratings, privacy data collection disclosures, and App Clip metadata via the App Store Connect API.
_spaceship/lib/spaceship/connect\api/models · high confidence
New Spaceship Tunes models for App Store Connect data
This change introduces a comprehensive set of new Ruby classes within \spaceship/lib/spaceship/tunes\ to model and interact with App Store Connect data. Key additions include \AppAnalytics\ for retrieving metrics like impressions, views, and sales; \AppDetails\ for managing localized metadata and categories; \AppRatings\ and \AppReview\ for accessing user reviews and ratings; \AppSubmission\ for handling export compliance and ad ID info during submission; and \Availability\ for managing B2B users, territories, and preorder settings. These models provide a structured API for developers to programmatically access and update app information, analytics, and submission states.
spaceship/lib/spaceship/tunes · high confidence
New TestFlight Connect API client and API module
This change introduces the \Spaceship::ConnectAPI::TestFlight\ module, providing a dedicated client and API interface for interacting with the App Store Connect TestFlight endpoints. The new client automatically includes the \x-csrf-itc\ header required by the Iris API and exposes methods for managing apps, beta app localizations, beta app review details, beta build localizations, beta groups, and other TestFlight resources via the v1 API.
_spaceship/lib/spaceship/connect\api/testflight · high confidence
New internal rake tasks and RuboCop cops for testing and code quality
This change introduces several new internal tooling components. The \internal/rakelib\ directory now includes \isolated.rake\, which runs the spec suite against throwaway HOME and TMPDIR directories to detect state-leakage bugs, and \parallel.rake\, which splits the spec suite across multiple processes for faster execution while reporting the slowest files and examples. Additionally, \issue\_stats.rake\ was added to display GitHub issue opening and closing statistics. The \internal/rubocop\ directory now contains three new cops: \fork\_usage.rb\ to flag non-portable \fork\ calls, \is\_string\_usage.rb\ to enforce modern \type:\ syntax in \FastlaneCore::ConfigItem\, and \missing\_keys\_on\_shared\_area.rb\ to ensure consistency between \SharedValues\ constants and \output\ methods.
internal/rakelib · high confidence
New screenshot strategies and configurable timestamp suffixes in screengrab-lib
The screengrab library now supports two new screenshot capture strategies: DecorViewScreenshotStrategy, which captures the window's decor view and works on API level 8+, and FalconScreenshotStrategy, which delegates to the Falcon library and requires API level 10 or higher. Additionally, users can now control whether a timestamp is appended to screenshot filenames by configuring the 'appendTimestamp' argument; if disabled, filenames will no longer include the timestamp suffix. The library also introduces LocaleTestRule for easier locale testing in JUnit.
screengrab-lib · high confidence
Precheck introduces new metadata validation rules and URL checking
The precheck tool now includes a suite of new validation rules to enforce App Store guidelines before submission. These include checks for copyright dates, curse words, placeholder text, test content, and mentions of competitors or negative sentiment. It also adds specific rules to prevent promising future functionality or indicating in-app purchases are free. Additionally, a new rule validates that URLs in app metadata are reachable, utilizing the Addressable and Faraday libraries to handle normalization and HTTP status checks.
precheck/lib/precheck/rules · high confidence
Produce now supports creating apps on multiple platforms and managing new App Store Connect capabilities
The Produce tool has been updated to support creating apps for multiple platforms (iOS, macOS, tvOS) simultaneously via the new \--platforms\ option, and it now integrates with the App Store Connect API for app creation and service management. This change introduces support for a wider range of capabilities, including DriverKit, MusicKit, ShazamKit, and NFC Tag Reading, and adds the ability to create and associate iCloud Containers and App Groups directly through the CLI.
produce/lib/produce · high confidence
Snapshot now supports Swift-based Snapfile configuration
Users can now configure fastlane snapshot using a native Swift file (SnapfileTemplate.swift) in addition to the existing Ruby-based Snapfile. This new Swift template exposes configuration options such as devices, languages, scheme, output directory, and launch arguments as Swift properties, allowing Swift-native projects to define their snapshot settings without relying on Ruby syntax. The release also includes updated helper files (SnapshotHelper.swift and SnapshotHelperXcode8.swift) to support this configuration method.
snapshot/lib/assets · high confidence
Spaceship portal client restructured with new resource models and expanded service support
The Spaceship portal client has been reorganized into a modular structure with dedicated classes for managing Developer Portal resources, including App, AppGroup, CloudContainer, Device, Invite, Key, Merchant, Passbook, and Person. This change introduces support for managing Apple Pay merchant IDs and their associated domains, JWT-based API keys (APNS, DeviceCheck, MusicKit), iCloud containers, and app groups. Device management now supports listing and enabling/disabling devices, while the App model exposes detailed service configurations (e.g., Push, Game Center, SiriKit) and allows updating individual services. The provisioning profile client defaults to using the Xcode API for performance optimization, with an option to fall back to the Developer Portal API. Legacy wrapper classes maintain backward compatibility for existing code.
spaceship/lib/spaceship/portal · high confidence
Support for GitLab Secure Files as a Match storage backend
Users can now use GitLab Secure Files as a storage backend for Match. This change introduces a new client implementation that handles authentication via either a Job Token or a Private Token, manages file uploads and retrieval within a specific GitLab project, and prompts for access tokens when necessary. It also includes error handling for connection issues and duplicate file names.
match/lib/match/storage/gitlab · high confidence
Support for multiple storage backends in fastlane match
fastlane match now supports storing code signing identities in Google Cloud Storage, GitLab Secure Files, and Amazon S3, in addition to the existing Git repository backend. This allows users to choose the storage provider that best fits their infrastructure, with each backend handling authentication, file upload, download, and deletion according to its specific requirements.
match/lib/match/storage · high confidence
Support for uploading digital assets via the DU service
Spaceship now includes a new \DUClient\ and supporting utilities to upload digital assets (such as screenshots, trailers, merchandising icons, and review attachments) to the Apple 'du-itc' service. This change introduces specific upload methods for iMessage screenshots, in-app purchase merchandising icons, and app review attachments, while also handling file validation, resolution detection, and alpha-channel removal for PNGs.
spaceship/lib/spaceship/du · high confidence
Architecture
Supply library restructured as a standalone module within the Fastlane mono-repo
The supply library has been reorganized into a new file structure (\supply/lib/supply.rb\) as part of the migration to the Fastlane mono-repo. This change consolidates core configuration, available metadata fields, image and screenshot type definitions, and track/release status constants into a single entry point, while explicitly defining the ROOT path for the project. Users will benefit from a cleaner module organization that aligns with the broader Fastlane architecture, ensuring consistent access to Google Play publishing capabilities through the updated \Supply\ module interface.
supply/lib · high confidence
Behavioural changes
Add ROOT constant to CredentialsManager
The CredentialsManager module now exposes a ROOT constant that resolves to the directory containing the credentials\_manager library. This provides a reliable path reference for projects that need to locate resources relative to the library's installation location without performing additional path conversions.
_credentials\manager/lib · high confidence
Add simulator workarounds for hardware keyboard, pasteboard, and zoom scaling
Snapshot now automatically applies three simulator patches before test runs to prevent known UI test failures: it disables the hardware keyboard to fix secure text field input issues, disables automatic pasteboard sync to prevent simulator stalls or crashes, and forces the simulator window scale to 100% to ensure valid screenshots are captured.
snapshot/lib/snapshot/fixes · high confidence
Analytics system migrated to Google Analytics 4 with Swift support
The analytics infrastructure has been rewritten to use the Google Analytics 4 (GA4) protocol, sending events to the GA4 collection endpoint with session-based tracking and engagement time metrics. This change introduces the ability to distinguish between Ruby and Swift Fastfiles via a new \fastlane\_client\_language\ field in analytics events, allowing users to see usage breakdowns by language. The implementation includes new context classes for action launches and completions, an app identifier guesser for platform detection, and respects the existing \FASTLANE\_OPT\_OUT\_USAGE\ environment variable to skip analytics when opted out.
_fastlane\_core/lib/fastlane\core/analytics · high confidence
Cert library entry point initialization
The cert library now initializes by loading its core components (runner, options, and module) through the main cert.rb entry point, establishing the necessary dependencies for the certificate management functionality.
cert/lib, sigh/lib · high confidence
Cert tool now uses App Store Connect API and Commander-based CLI
The cert tool has been refactored to use the App Store Connect API for authentication and certificate management, allowing users to authenticate via API keys (api\_key\_path or api\_key) in addition to traditional Apple ID credentials. The command-line interface has been migrated to use the Commander gem, introducing a structured sub-command layout (create, revoke\_expired) and standardizing option handling through FastlaneCore::CommanderGenerator. This change also updates the tool to support Xcode 11+ certificate types (Apple Development/Distribution) by default on macOS and adds support for tvos platform certificates.
cert/lib/cert · high confidence
Core infrastructure migration and certificate management updates
This change migrates core utilities into the fastlane\_core library, introducing new classes for command execution (CommandExecutor), pseudo-terminal handling (FastlanePty), and device management (DeviceManager). It also adds new guessers for Android package names and iOS app identifiers to improve configuration detection, and significantly updates the certificate checker (CertChecker) to install and verify multiple Apple WWDR and Developer ID intermediate certificates (G2–G6) to prevent signing failures.
_fastlane\_core/lib/fastlane\core · high confidence
Default skip\_build enabled in Scanfile templates
The Scanfile templates (both Ruby and Swift variants) now include \skip\_build(true)\ by default. This change means that when users initialize a new scan configuration, debug builds will be skipped to improve test performance, unless they explicitly uncomment or modify the setting.
scan/lib/assets · high confidence
Deliver restructured into modular components with new App Clip and screenshot validation support
The deliver tool has been refactored from a monolithic structure into a modular architecture, introducing dedicated classes for handling specific tasks such as App Clip header images, screenshot validation, and parallelized screenshot iteration. This change adds support for downloading and uploading App Clip header images, introduces a new \AppScreenshotValidator\ to enforce file extension and resolution rules, and implements a parallelized \AppScreenshotIterator\ to improve performance when processing screenshots across multiple localizations. The core logic is now split across specialized files like \download\_app\_clip\_header\_images.rb\, \app\_screenshot\_validator.rb\, and \app\_screenshot\_iterator.rb\, while maintaining backward compatibility for existing metadata and binary upload workflows.
deliver/lib/deliver · high confidence
Frameit re-architecture and new device support
Frameit has been rewritten to support new device frames, including iPhone 16 and iPhone 17, with improved layout handling and Android support. The tool now uses a new commands generator pattern, supports resuming interrupted downloads, and includes better error messages and configuration parsing.
frameit/lib · high confidence
Improved provisioning profile detection and mapping for Xcode projects
Gym now automatically detects and merges provisioning profiles from your Xcode project with any explicit mappings provided via \export\_options\ or \match\. This change introduces a new \CodeSigningMapping\ class that intelligently resolves conflicts between user-defined and project-detected profiles, ensuring the correct profile is used for each bundle identifier based on the \export\_method\. It also improves detection of selected provisioning profiles for Xcode 9+ projects, handling complex scenarios like Catalyst apps and multi-platform builds, and provides clearer error messages when automatic detection fails or when multiple profiles are found for a single bundle identifier.
gym/lib/gym · high confidence
Improved shell escaping on Windows and resolved plist method conflicts
This update introduces monkey patches to \String.shellescape\ and \Array.shelljoin\ to ensure correct command-line argument escaping on Windows, addressing previous compatibility issues. Additionally, it resolves a conflict between the \CFPropertyList\ and \plist\ gems by restoring the original \to\_plist\ method from \Plist::Emit\ and aliasing the CFPropertyList version to \to\_binary\_plist\, preventing unexpected behavior when generating property lists.
_fastlane\_core/lib/fastlane\_core/core\ext · high confidence
Improved team selection logic and error messaging in non-interactive environments
The \select\_team\ UI component now provides clearer error messages when a specified team ID or name is not found, guiding users to verify their App Store Connect credentials. Additionally, the logic explicitly detects non-interactive terminals (such as CI environments) and raises a descriptive error listing available teams if multiple teams are present and no specific team ID or name is configured via environment variables, preventing silent failures during automated runs.
spaceship/lib/spaceship/portal/ui · high confidence
Introduce Tunes API client with CSRF header and territory management
Adds a new \Spaceship::ConnectAPI::Tunes::Client\ that initializes with an \x-csrf-itc\ header for Iris requests and extends the Tunes API module. This client enables updating app attributes, including price tiers and, notably, managing app availability by allowing users to remove an app from sale by passing an empty array to \territory\_ids\ with \allow\_removing\_from\_sale\ enabled.
_spaceship/lib/spaceship/connect\api/tunes · high confidence
Introduces modern AES-256-GCM encryption with legacy V1 support for Match
The Match tool now uses a new encryption backend that defaults to AES-256-GCM (V2) for improved security, while maintaining backward compatibility with the legacy AES-256-CBC (V1) algorithm for existing repositories. This change is implemented in the new \match/lib/match/encryption\ module, which includes \EncryptionV1\ and \EncryptionV2\ classes, a unified \MatchDataEncryption\ handler, and an \OpenSSL\ provider that manages file encryption/decryption and integrates with the macOS Keychain for password storage. Users can force the legacy V1 mode via the \force\_legacy\_encryption\ flag if needed, ensuring smooth migration for existing setups.
match/lib/match/encryption · high confidence
Match CLI commands are restructured into a new CommandsGenerator
The match tool's command-line interface is reorganized into a dedicated \CommandsGenerator\ class, introducing explicit subcommands for \change\_password\, \decrypt\, \import\, \migrate\, and \nuke\ (with type-specific variants like \nuke development\). This change centralizes the CLI entry point, ensuring that commands like \change\_password\ are restricted to git-based storage modes and that \migrate\ specifically supports moving from git to Google Cloud Storage, while maintaining existing functionality for \init\, \run\, and \import\.
match/lib/match · high confidence
Migrate pem to the fastlane mono repo
The pem library has been migrated into the fastlane mono repository. The entry point pem/lib/pem.rb now explicitly requires the manager, options, and module components, establishing the internal structure for the library within the new mono-repo layout.
pem/lib · high confidence
Migrate screengrab to the fastlane mono repo
The screengrab tool has been migrated to the fastlane mono repository. This change introduces a new Fastfile that imports the main fastlane configuration and defines lanes for deploying the AAR library locally and to Maven, streamlining the build and release process for screengrab components.
screengrab/fastlane · high confidence
New CLI entry points and deprecation warning for legacy tool names
The fastlane binary distribution now includes dedicated entry-point scripts for the main CLI (\bin/fastlane\), an interactive console (\bin/console\), and file encryption (\bin/match\_file\). The main \fastlane\ script enforces a minimum Ruby version of 3.1.0 and routes commands through the CLI tools distributor. Additionally, a new \bin/bin-proxy\ script has been added to handle legacy tool invocations (e.g., \spaceauth\); it prints a deprecation warning urging users to prefix commands with \fastlane\ (e.g., \fastlane spaceauth\) before executing the command via the main CLI.
bin · high confidence
New configuration system with Commander integration and scoped overrides
The configuration subsystem has been refactored to use the Commander library for generating CLI help and parsing options, introducing a new \CommanderGenerator\ that handles type coercion (including Hash, Symbol, and Boolean) and validates short option uniqueness. The \ConfigItem\ class now supports \env\_names\ for multiple environment variable aliases, \sensitive\ flags to mask secrets in output, and \code\_gen\_sensitive\ to exclude dynamic defaults from Swift API generation. Additionally, \ConfigurationFile\ now supports \for\_lane\ and \for\_platform\ blocks, allowing users to apply configuration overrides conditionally based on the current lane or platform context.
_fastlane\_core/lib/fastlane\core/configuration · high confidence
New shell-based UI implementation with configurable timestamps and formatting
The terminal output layer in fastlane\_core now uses a new Shell class that replaces previous helper methods, introducing support for environment-controlled timestamp visibility (via FASTLANE\_SHOW\_TIMEZONE and FASTLANE\_HIDE\_TIMESTAMP) and output formatting toggles (FASTLANE\_DISABLE\_OUTPUT\_FORMAT). User-facing prompts and questions are now prefixed with timestamps and displayed in yellow, while command outputs use a magenta prefix. The implementation also adds UTF-8 encoding handling for non-UTF-8 outputs and prevents negative argument errors in header formatting by clamping available width.
_fastlane\_core/lib/fastlane\core/ui/implementations · high confidence
Pilot library initialization and module loading
The pilot library entry point (pilot.rb) has been created to explicitly require its core components, including options, manager, build manager, tester manager, tester importer, and tester exporter, along with the pilot module. This establishes the foundational structure for the pilot tool's functionality within the fastlane mono-repo.
pilot/lib · high confidence
Pilot refactored to use Spaceship::ConnectAPI and new build management logic
The \pilot\ tool has been refactored to use the \Spaceship::ConnectAPI\ for interacting with App Store Connect, replacing older iTunes Connect endpoints. This change introduces a new \BuildManager\ class that handles build uploads and distribution, including support for both \.ipa\ and \.pkg\ files, and updates the beta app metadata (such as demo account requirements and changelogs) via the new API. Tester management commands (\add\, \remove\, \list\, \find\, \import\, \export\) now rely on \TesterManager\ and \TesterExporter\/\TesterImporter\ classes that query the Connect API for beta testers and groups. The command-line interface in \CommandsGenerator\ remains largely the same but delegates to these new internal managers. Configuration options in \Options\ have been updated to reflect the new API requirements and deprecate older settings like \update\_build\_info\_on\_upload\.
pilot/lib/pilot · high confidence
Refactor HTTP handling with Faraday 2 and new middleware
Spaceship now uses Faraday 2 for HTTP requests, introducing a PlistMiddleware to automatically parse XML plist responses and a RelsMiddleware to extract link relations from response headers. Additionally, a monkey-patch on Net::HTTPGenericRequest prevents the automatic addition of Content-Type headers for requests to Apple domains, resolving 415 errors caused by default Net::HTTP behavior.
spaceship/lib/spaceship/helper · high confidence
Refactor gym command generation into dedicated generator classes
The internal logic for constructing xcodebuild and export commands has been reorganized into specific generator classes (BuildCommandGenerator and PackageCommandGenerator). This change centralizes how build and packaging commands are assembled, ensuring that options like toolchains, export arguments, and code signing settings are handled consistently within these new components. Users benefit from more robust command construction, which supports features like build timing analysis, custom formatters (xcpretty/xcbeautify), and proper handling of archive paths and export options.
gym/lib/gym/generators · high confidence
Refactor simulator launchers into a modular configuration and base class structure
The simulator launching logic has been reorganized into a new \simulator\_launchers\ directory, introducing \SimulatorLauncherConfiguration\ to centralize launch settings (such as \add\_photos\, \add\_videos\, \override\_status\_bar\, and \concurrent\_simulators\) and \SimulatorLauncherBase\ to provide shared implementation for simulator preparation, media injection, and status bar overrides. This change separates the Xcode 8-specific sequential launcher (\SimulatorLauncherXcode8\) from the new concurrent launcher (\SimulatorLauncher\), ensuring that simulator state (like erase and localization) is only applied when explicitly required and that media is added using \xcrun simctl addmedia\ with a fallback to legacy commands for older Xcode versions.
_snapshot/lib/snapshot/simulator\launchers · high confidence
Refactored UI error handling and output formatting
The UI layer has been restructured to improve error reporting and command-line output. A new \disable\_colors.rb\ module ensures that colored output is safely suppressed when the \FASTLANE\_DISABLE\_COLORS\ environment variable is set, preventing crashes in non-TTY environments. The \fastlane\_runner.rb\ now implements a custom \parse\_global\_options\ method to resolve a Ruby 2.6+ \optparse\ regression where short flags like \-e\ were incorrectly interpreted as long options (e.g., \--env\), fixing command-line argument parsing. Additionally, the \Interface\ class now exposes explicit methods for different error types (\user\_error!\, \shell\_error!\, \build\_failure!\, \test\_failure!\), allowing the runner to distinguish between user mistakes, shell failures, and build/test errors for more accurate feedback and metrics. A new \HelpFormatter\ and \help.erb\ template provide a customized, compact view of available commands and options.
_fastlane\_core/lib/fastlane\core/ui · high confidence
Refactored error hierarchy to separate common failures from crashes
The error handling structure in fastlane\_core has been reorganized to distinguish between expected operational failures and actual crashes. A new base class, FastlaneException, now serves as the root for all custom errors, introducing a method to detect if an error originated from a UI method call. A new subclass, FastlaneCommonException, groups non-crash failures such as build failures, test failures, and third-party dependency issues, ensuring these are not recorded as crashes. Conversely, FastlaneCrash is defined for critical failures that should be logged as crashes, providing a clearer separation in how different error types are reported and handled.
_fastlane\_core/lib/fastlane\core/ui/errors · high confidence
Ruby 3.1 is now the minimum supported version
The project has dropped support for Ruby 3.0 and lower, requiring Ruby 3.1 or newer to run. This change ensures compatibility with the latest Ruby features and performance improvements but will break installations on older Ruby versions.
(repo-wide), fastlane · high confidence
Scan action restructured into modular components with xcbeautify support and Swift Scanfile generation
The scan action has been refactored into a modular architecture, splitting logic into dedicated classes for command generation, value detection, execution, error handling, and result parsing. This change introduces support for the xcbeautify formatter as a preferred alternative to xcpretty, adds a command to generate a Swift-based Scanfile, and improves simulator detection and test result reporting. Users will benefit from more robust error handling, better integration with modern Xcode versions, and clearer output formatting.
scan/lib/scan · high confidence
Screengrab library restructured with pluggable screenshot strategies and clean status bar controls
The screengrab library has been refactored to support multiple screenshot capture methods via a new \ScreenshotStrategy\ interface, with \UiAutomatorScreenshotStrategy\ added as the default for API 18+ devices to improve compatibility with Android N and Material UI depth. Additionally, a new \CleanStatusBar\ feature allows users to customize the status bar appearance during tests, controlling elements like battery, network, and icons via a fluent API, while locale handling has been updated to support device-wide locale changes across different Android versions.
screengrab/screengrab-lib · high confidence
Screengrab restructured into a standalone mono gem with new CLI and reporting features
Screengrab has been migrated to the fastlane mono repository and reorganized into a standalone gem, introducing a dedicated CLI via \CommandsGenerator\ that supports \run\ and \init\ commands (including Swift Fastlane support). The tool now includes a \ReportsGenerator\ that creates an interactive HTML summary of screenshots, and adds configuration options such as \use\_timestamp\_suffix\ to control filename formatting, \adb\_host\ for remote device farms, and \exit\_on\_test\_failure\ to manage behavior on test errors. The internal architecture has been refactored to use \AdbHelper\ and \AndroidEnvironment\ for better device and SDK management, while deprecating older options like \ending\_locale\ and \use\_adb\_root\.
screengrab/lib/screengrab · high confidence
Screengrab version updated to 2.1.1
The screengrab tool has been updated to version 2.1.1, as reflected in the new version.properties file. This change accompanies the addition of the Gradle wrapper scripts (gradlew and gradlew.bat) to the screengrab directory, ensuring consistent build environment setup, and updates the README to direct users to the centralized documentation at docs.fastlane.tools.
screengrab · high confidence
Sigh CLI migrated to Commander-based subcommands
The \sigh\ tool has been refactored to use the \commander\ gem, replacing the previous command structure with explicit subcommands (\renew\, \download\_all\, \repair\, \resign\, \manage\). This change introduces a new CLI syntax where actions are invoked as \fastlane sigh \<subcommand\>\ (e.g., \fastlane sigh renew\ instead of just \sigh\), and adds a dedicated \manage\ command for listing, cleaning up, and forcing the removal of local provisioning profiles. The \resign\ subcommand now supports additional options such as \--page\_size\ for codesign page size control and \--use\_app\_entitlements\ to extract and combine app bundle entitlements.
sigh/lib/sigh · high confidence
Snapshot library structure reorganization
The snapshot library has been restructured to explicitly require its internal components, including new modules for simulator launchers, fixes (simulator zoom and hardware keyboard), and updated test command generators. This change consolidates the library's entry point and ensures all necessary sub-modules are loaded, supporting the migration to a mono-repo structure and enabling features like concurrent simulator support.
snapshot/lib · medium confidence
Snapshot tool restructured into a mono-repo with new CLI commands and simulator management
The snapshot tool has been migrated to the fastlane mono-repo, introducing a new Commander-based CLI with dedicated commands for \init\, \update\, \reset\_simulators\, and \clear\_derived\_data\. The core screenshot collection logic now distinguishes between Xcode 9+ (using a direct API to save screenshots to a known location) and older versions (parsing plist attachments), while the HTML report generator has been updated to support a wider range of modern devices including iPhone 11-17 series, various iPad Pro generations, Apple Watch models, and Apple TV. Additionally, the tool now supports macOS screenshots, allows configuring the derived data path, and includes improved simulator reset behavior that handles phone-watch pairing and specific OS version filtering.
snapshot/lib/snapshot · high confidence
Spaceship library initialization and module structure
The spaceship library now initializes by loading its core components, including the client, provider, launcher, and hashcash authentication support, along with middleware for statistics. It exposes interfaces for both the Developer Portal (portal) and App Store Connect (tunes, test\_flight, connect\_api), while maintaining backward compatibility through legacy wrappers for older portal and tunes implementations. The library also integrates highline for user input handling and colored for output styling.
match/lib, spaceship/lib · high confidence
Spaceship library restructured with new ConnectAPI and authentication flows
The spaceship library has been reorganized to support the modern App Store Connect API alongside the legacy Developer Portal. A new \Spaceship::ConnectAPI\ module now provides access to App Store Connect resources (such as apps, builds, and TestFlight) via dedicated models and endpoints, while the legacy \Portal\ client remains for older services. Authentication has been updated to handle Apple's new security requirements, including support for the SIRP protocol, hashcash challenge-response headers, and improved Two-Factor Authentication flows with SMS fallback options. The \spaceauth\ command-line tool has also been enhanced with a \--copy\_to\_clipboard\ flag to simplify session storage for CI environments.
spaceship/lib/spaceship · high confidence
Supply command rewritten to use Google API v3 with modern authentication
The supply tool has been completely rewritten to use the Google Play Developer API v3 (AndroidpublisherV3) instead of the legacy v2, introducing support for modern authentication methods including Application Default Credentials, Workload Identity, and authorized\_user/external\_account credential types alongside traditional service accounts. The command-line interface now uses the Commander gem for argument parsing, and the upload process enforces an edit lifecycle (begin\_edit/abort\_current\_edit) to prevent concurrent modification conflicts. New capabilities include downloading metadata and images via the \supply init\ command, querying track metadata and release summaries, and uploading Android App Bundles (AAB) in addition to APKs. The rollout percentage validation has been updated to the API's 0.0–1.0 range, and the 'rollout' track name is deprecated in favor of 'production'.
supply/lib/supply · high confidence
TestFlight API integration migrated to App Store Connect
The TestFlight module has been rewritten to use the new App Store Connect API endpoints (appstoreconnect.apple.com) instead of the legacy iTunes Connect interface. This update introduces new model classes for managing application-level test information (AppTestInfo), beta review details (BetaReviewInfo), and export compliance, while also adding support for internal testers, pagination for large tester lists, and retry logic for build retrieval. Users benefit from more reliable API interactions, support for new App Store Connect features like internal testing groups, and corrected date formatting for tester installation records.
_spaceship/lib/spaceship/test\flight · high confidence
Update checker now displays changelog and adapts update commands to the user's environment
The update checker has been refactored to provide more context and guidance when a new version is available. It now fetches and displays the latest release notes from GitHub (limiting output to the most recent changes) and dynamically suggests the correct update command based on how fastlane was installed—supporting Bundler, Homebrew, the Mac App, or standard gem installations. Additionally, it verifies that RubyGems is configured as a gem source and warns users if it is missing, ensuring updates can be installed successfully.
_fastlane\_core/lib/fastlane\_core/update\checker · high confidence
Updated deliver assets for App Store Connect and Swift configuration
The deliver tool's default configuration files and documentation assets have been updated to reflect the migration from iTunes Connect to App Store Connect. A new Swift-based Deliverfile template (DeliverfileDefault.swift) is now provided alongside the existing Ruby version, allowing users to configure metadata using Swift syntax. Documentation has been refreshed to include specific naming rules for iPad Pro (3rd Gen) 12.9" screenshots and support for iMessage and Apple TV screenshot directories. Additionally, the summary HTML preview has been updated to correctly render app icons and handle keyword splitting, ensuring the local preview accurately reflects the metadata being submitted.
deliver/lib/assets · high confidence
Updated plugin template to require Ruby 3.1 and include modern development dependencies
The fastlane plugin template has been updated to enforce Ruby 3.1 as the minimum required version, ensuring generated plugins are compatible with current Ruby standards. The template now includes a Gemfile with development dependencies for RuboCop (pinned to the main repo's version), SimpleCov for code coverage, and RSpec, alongside a Rakefile that automates running both tests and style checks. Additionally, the gemspec now explicitly sets the Ruby version requirement and includes metadata for multi-factor authentication on RubyGems.
fastlane/lib/fastlane/plugins/template · high confidence
Updated snapshot example project with macOS and Apple TV targets
The snapshot example project has been updated to include Xcode schemes and build configurations for macOS and Apple TV platforms, in addition to the existing iOS targets. This allows users to run snapshot tests on these additional platforms directly from the example project.
snapshot/example · high confidence
pem tool refactored to use Commander and supports macOS, VoIP, and Website Push certificates
The pem tool has been migrated to use the Commander CLI framework, replacing the previous command structure. This update adds support for generating push certificates for macOS (in addition to iOS), as well as Website Push and VoIP Services certificates. The tool now includes an active\_days\_limit configuration to control when certificates are renewed based on their remaining validity, and it hides the :new\_profile key from the summary table output. Additionally, the p12\_password option is now marked as sensitive to prevent accidental logging.
pem/lib/pem · high confidence
Fixes
Configure Bundler to install gems in vendor/bundle
A new .bundle/config file has been added to the project, setting the BUNDLE\_PATH to 'vendor/bundle'. This ensures that Ruby gem dependencies are installed locally within the project directory rather than the system-wide default, which helps maintain consistent environments across different development and CI setups.
.bundle · high confidence
Test coverage
Added RSpec test suite for sigh command-line interface and core logic; Added comprehensive test coverage for Spaceship Tunes models; Added comprehensive test coverage for deliver screenshot handling and configuration logic; Added comprehensive test coverage for match commands and internal logic; Added comprehensive test suite for Gym's build and packaging logic; Added comprehensive test suite for Supply client, uploader, and reader components; Added comprehensive test suite for frameit; Added test coverage for Match storage backends; Added test coverage for Produce command-line options and App Store Connect API authentication; Added test coverage for Scan command-line argument parsing and simulator runtime detection; Added test coverage for Spaceship ConnectAPI models; Added test coverage for Spaceship DU client uploads and utilities; Added test coverage for Spaceship Portal resource management; Added test coverage for Spaceship::ConnectAPI client and token handling; Added test coverage for TestFlight API client and data models; Added test coverage for fastlane\_core spec components; Added test fixture for invalid IPA files; Added test fixtures for Android title string resolution and apostrophe handling; Added test fixtures for App Store Connect API key formats; Added test fixtures for OCLint integration; Added test fixtures for Spaceship Tunes app analytics and metadata; Added test fixtures for complex Xcode project configurations; Added test fixtures for iOS and watchOS app Info.plist files; Added test fixtures for iOS app bundles and code signatures; Added test fixtures for trainer spec suite; Added test templates for new Fastlane plugins; Added tests for Android environment detection and runner configuration; Added tests for CFPropertyList and Shellwords core extensions; Added tests for GitLab Secure Files storage client and file handling; Added tests for Match encryption logic and legacy mode support; Added tests for PEM certificate generation and command-line option handling; Added tests for Spaceship ConnectAPI provisioning client; Added tests for Tunes API client endpoints; Added tests for WatchKit app detection logic; Added tests for credentials\_manager account and Appfile configuration; Added tests for team selection logic; Added unit tests and stubs for the TestFlight Connect API client; Added unit tests for Pilot build manager, tester management, and CLI options; Added unit tests for Spaceship ConnectAPI Users client; Added unit tests for cert command-line argument parsing and certificate lifecycle management; Added unit tests for precheck validation rules; Added unit tests for the Precheck rule processor; Added unit tests for the new GA4 analytics implementation; Added xcarchive fixture files for testing; Expanded test fixtures for Apple Developer Portal API responses; New example tests demonstrate Falcon and UiAutomator screenshot strategies with clean status bar support; Snapshot test suite coverage for simulator and configuration logic; Spaceship test suite restructured with isolated specs and integration tasks.
Dependencies
Fastlane 2.240.1 dependency manifest and Swift Package Manager support
This release updates the fastlane gem to version 2.240.1, introducing a comprehensive set of dependency changes including upgrades to Faraday (2.7), rubyzip (3.4), and xcodeproj (1.13+), alongside the addition of several new dependencies required for Ruby 3.4 compatibility (abbrev, base64, csv, mutex\_m, nkf, irb, logger, cgi, benchmark, ostruct). It also adds initial support for using fastlane as a Swift Package Manager dependency via the new Package.swift and Package.resolved files, which depend on SwiftShell 5.1.0.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 54 → 54 (+0.1)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 78 → 87 (+9.1)
- Architecture 99 → 99 (+0.9)
- Maturity 63 → 62 (-0.6)
- Readiness 72 → 69 (-3.6)
- Security 35 → 47 (+11.9)
- Accessibility 48 (new)
Resolved (153)
- ActionsList.parse_options (cognitive 16) (fastlane/lib/fastlane/documentation/actions_list.rb)
- Change coupling: options.rb ↔ test_command_generator_base.rb (snapshot/lib/snapshot/options.rb)
- Change coupling: options.rb ↔ uploader.rb (supply/lib/supply/options.rb)
- Change coupling: version.rb ↔ DeliverfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ Fastlane.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ GymfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ MatchfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ PrecheckfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ ScanfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ ScreengrabfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Change coupling: version.rb ↔ SnapshotfileProtocol.swift (fastlane/lib/fastlane/version.rb)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (cert/lib/cert/options.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/automatic_code_signing.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/automatic_code_signing.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/download_app_privacy_details_from_app_store.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/hockey.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/modify_services.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/setup/setup_ios.rb)
- …and 133 more
New (338)
- Abstract vs Concrete inconsistency: Fastlane.Action defines run(params), but there is a placeholder type Fastlane.Actions.? also defining run(params). This suggests an incomplete or placeholder interface that duplicates the base Action interface without adding value.
- Actions.sh_control_output (cognitive 35) (fastlane/lib/fastlane/helper/sh_helper.rb)
- Actions.sh_control_output (cyclomatic 20) (fastlane/lib/fastlane/helper/sh_helper.rb)
- Ambiguous execution methods: Cert.Runner has both run() and launch(). Similarly, Deliver.Runner has run() and login(). While login is distinct, the coexistence of run and launch in Cert.Runner suggests duplicate intent for starting the main process.
- CLIToolsDistributor.take_off (cognitive 18) (fastlane/lib/fastlane/cli_tools_distributor.rb)
- CLIToolsDistributor.take_off (cyclomatic 16) (fastlane/lib/fastlane/cli_tools_distributor.rb)
- Change coupling: build_manager.rb ↔ options.rb (pilot/lib/pilot/build_manager.rb)
- Change coupling: options.rb ↔ test_command_generator.rb (scan/lib/scan/options.rb)
- Change coupling: register_device.rb ↔ register_devices.rb (fastlane/lib/fastlane/actions/register_device.rb)
- CommandExecutor.execute (cognitive 27) (fastlane_core/lib/fastlane_core/command_executor.rb)
- CommandExecutor.execute (cyclomatic 20) (fastlane_core/lib/fastlane_core/command_executor.rb)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (cert/lib/cert/options.rb)
- Duplicated block (10 lines × 2) (deliver/lib/deliver/options.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/register_device.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/setup_ci.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/version_bump_podspec.rb)
- Duplicated block (10 lines × 2) (fastlane/lib/fastlane/actions/xcode_install.rb)
- Duplicated block (10 lines × 2) (fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb)
- …and 318 more
Changes since last survey
- 82 commits — 76 feature/other, 6 fixes
By area
- (root) — 15 commits
- fastlane/spec — 10 commits
- .github/workflows — 9 commits
- fastlane/lib — 5 commits
- spaceship/spec — 5 commits
- fastlane/swift — 4 commits
- fastlane_core/spec — 4 commits
- match/lib — 4 commits
- spaceship/lib — 4 commits
- deliver/lib — 3 commits
- fastlane_core/lib — 3 commits
- fastlane/Fastfile — 2 commits
- internal/rakelib — 2 commits
- .github/PULL_REQUEST_TEMPLATE.md — 1 commit
- deliver/spec — 1 commit
- fastlane/helper — 1 commit
- frameit/lib — 1 commit
- frameit/spec — 1 commit
- internal/spec_timings.linux.json — 1 commit
- pem/lib — 1 commit
Notable commits
- fix: [fastlane_core] Fix for upload_to_testflight and altool reporting failure, but upload succeeds (#30196)
- fix: [fastlane_core] Fix video resolution parsing when audio track precedes video track (#30143)
- fix: [sh_helper] fix output stripping - invalid byte sequence in UTF-8 (ArgumentError) (#20539)
- fix: [sigh] Fix duplicate prefix in application-identifier entitlement during resign (#30169)
- fix: [tests] Remove the fixed paths under /tmp from the test suite (#30220)
- fix: fix: stop fastlane_pty_spec flaking on a command that exits immediately (#30180)
- change: Define only the trainer fixture groups that apply to the current xcresulttool (#30183)
- change: Report the environment variables that escape the example that set them (#30194)
- change: Run the CI suite as several processes (#30202)
- change: Run the spec suite as several processes (#30191)
- change: Stop nine specs depending on what ran before them (#30193)
- change: Stop spaceship specs sharing clients and cached state (#30192)
- change: Stop specs depending on module level configuration another example left behind (#30190)
- change: Stop two specs depending on files an earlier run left behind (#30195)
- change: Stop two specs depending on process wide state another example populated (#30200)
- change: Surface xcresulttool version detection failures instead of hiding them (#30182)
- change: Version bump to 2.238.0 (#30151)
- change: Version bump to 2.239.0 (#30173)
- change: Version bump to 2.240.0 (#30219)
- change: Version bump to 2.240.1 (#30233)
- …and 62 more
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 1 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- screengrab-lib
Removed bounded contexts (1)
- .
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
fastlane/fastlane was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 22 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d9b3f6bbe01de3db12d3052e3415ab38ff43d0bb — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-be726e82e277.