Skip to content

4.0.0

Compare
Choose a tag to compare
@fortmarek fortmarek released this 07 Feb 17:53

These release notes are longer than usual because it's a major release and we include migration guidelines. Breaking changes are prefixed with Breaking.

Tuist

Improved

Removed

  • Breaking: Remove the signing capabilities #5716 by @pepicrft. Signing is already solved by community tooling like Fastlane and Xcode itself, which do a much better job at that. If you were using Tuist signing capabilities, which consisted of encrypting the certificates and profiles in the repository and installing them in the right places at generation time, you might want to replicate that logic in your own scripts that run before project generation. In particular:
    • A script that decrypts the certificates and profiles using a key either stored in the file-system or in a environment variable, and installs certificates in the keychain, and the provisioning profiles in the directory ~/Library/MobileDevice/Provisioning\ Profiles.
    • A script that can take an existing profiles and certificates and encrypt them.
  • Breaking: Remove Carthage integration via Dependencies.swift. You'll have to use Carthage directly to pull the pre-compiled frameworks and XCFrameworks into Carthage's standard directory, and then reference those binaries from your tagets using the TargetDependency.xcframework and TargetDependency.framework cases.
  • Breaking: Remove the TargetDependency.packagePlugin API in favour TargetDependency.package which takes an additional argument where you can specify the type of package.
  • Breaking: Remove the APIs that were marked as deprecated #5560 by @danyf90

Changed

  • Breaking: Remove tuistenv in favor of Mise as default installer with Homebrew as an alternative. You'll have to uninstall the current version of Tuist by running curl -Ls https://uninstall.tuist.io | bash and then install it using the installation method of your choice. You'll have to propagate this installation method across CI environments and developers' local environment. We strongly recommend the usage of Mise because it's able to install and activate versions deterministically across environments. #5724 by @pepicrft
  • Breaking: Remove the init from all the ProjectDescription models to improve the readability and expressiveness of the APIs. Every model provides now a static constructor. We commend checking out the new APIs in our documentation site
  • Breaking: Add --no-selective-testing flag, rename --no-cache to --no-binary-cache by @fortmarek
  • Breaking: Rename tuist fetch for tuist install to align with the industry convention. You might need to adjust your CI pipelines and communicate the new command name to your team #5857 by @pepicrft
  • Breaking: Change the Package.swift directory from /Tuist to root. You'll have to move the content from your Tuist/Dependencies.swift to a Package.swift at the root, and use the #if TUIST directive to configure the integration. You can use the tuist Package.swift as a reference #5862 by @fortmarek
  • Rename the builds cache directory from builds to BinaryCache to better reflect its purpose #5842 by @fortmarek
  • Make all ProjectDescription models attributes mutable for better ergonomics #5843 by @fortmarek
  • Align the cache directories with the UNIX XDG Base Directory Specification #5855 @pepicrft
  • Improve scaffold feature's default parameter type for stencil file #5845 by @haeseoklee
  • Throw an error when focusing on a non-existent target #5874 by @fortmarek

Fixed

  • Fix error when running tuist generate and dependencies have not been previously fetch with tuist install #5875 by @fortmarek
  • Fix tuist clean dependencies #5872 by @fortmarek
  • Fix running tuist clean without a specific category #5868 by @fortmarek

Tuist Cloud

Fixed

  • Fix an issue that caused binary-caching of targets for macOS to fail due to missing destinations for targetted architectures.

Changed

  • Rename cache directories from builds to BinaryCache and from tests to SelectiveTests to better reflect its purpose #5842 by @fortmarek
  • Rename tuist cache warm to tuist cache to shorten the command execution.
  • Move the tuist cache print-hashes option into tuist cache --print-hashes.

Removed

  • Breaking: Remove the cache configuration and the concept of profiles in favor of passing the configuration to use via the --configuration flag when warming the cache with tuist cache. We plan to add the same option to the other commands and just the generation so that the only configuration generated is the one that has been passed via the flag.
  • Breaking: Remove the --skip-cache flag from the generate command in favor of controlling for which targets the binary cache should be skipped by using the arguments.
    • Before
      tuist generate --skip-cache Foo
    • After
      tuist generate Foo