Tuist v3.0.0 Release Notes

  • ๐Ÿ”„ Changed

    • ๐Ÿ’ฅ Breaking Tuist plugins 2.0 #3492 by @fortmarek
    • ๐Ÿ’ฅ Breaking tuist generate automatically opens the generated project. #3912 by @danyf90:
      • Motivation:: Most of the times you want to open the project after generating it.
      • Migration: If you need to generate the project without opening it, just pass --no-open to tuist generate.
    • ๐Ÿ’ฅ Breaking add type parameter to TargetDependency.sdk #3961 by @danyf90
      • Migration: Add the type parameter where defining sdk target dependencies and remove both the extension and the lib prefix from the name
    • ๐Ÿ’ฅ Breaking move disableBundleAccessors and disableSynthesizedResourceAccessors from Config.swift to Project.ProjectOption #3963 by @danyf90.
      • Motivation: Being able to define the option at the project level
      • Migration: Move the disableBundleAccessors and disableSynthesizedResourceAccessors from Config.swift to Project.ProjectOption
    • ๐Ÿ’ฅ Breaking replace SourceFileGlob initializer with static .glob method #3960 by @danyf90
      • Migration: Use the .glob method instead of the initializer
    • ๐Ÿ’ฅ Breaking minimum Xcode version and macOS version are Xcode 13.0 and macOS 12.0 #4030 by @adellibovi
      • Motivation: Old versions usage is less then 5%.
    • ๐Ÿ’ฅ Breaking TargetScript.Script cases .tool(_ path: String, _ args: [String]) and .scriptPath(_ path: Path, args: [String]) are now .tool(path: String, args: [String]) and .scriptPath(path: Path, args: [String]) #4030 by @adellibovi
      • Motivation: It enabled to get rid of custom Codable conformance.
    • ๐Ÿ’ฅ Breaking the used tuist version and the manifests compilation times are no longer printed at default log level. Use the --verbose flag to print them. #4052 by @danyf90
    • ๐Ÿ’ฅ Breaking rename *-Project* autogenerated schemes to *-Workspace* #4089 by @danyf90
      • Motivation: The schemes are referred to the whole workspace, not to a specific project
      • Migration: Use the *-Workspace* scheme instead
    • ๐Ÿ’ฅ Breaking move Config.GenerationOptions.autogeneratedSchemes and Config.GenerationOptions.enableCodeCoverage options to Workspace.GenerationOption.autogeneratedWorkspaceSchemes
      • Motivation: They control workspace level options, so they are better suited in the workspace manifest
    • ๐Ÿ’ฅ Breaking change automatic schemes generation to use ProjectOption.AutomaticSchemesGrouping.byName grouping
      • Motivation: Generated schemes now groups targets together better, reducing the number of generated schemes
      • Migration: If the new default don't fit your needs, manually generate your schemes or try another ProjectOption.AutomaticSchemesGrouping option
    • ๐Ÿ’ฅ Breaking refactor Project.options to be a struct instead of an enum #4104 by @danyf90
      • Motivation: A struct better represents the semantic of the type
    • ๐Ÿ’ฅ Breaking refactor Config.generationOptions to be a struct instead of an enum #4109 by @danyf90
      • Motivation: A struct better represents the semantic of the type
    • ๐Ÿ’ฅ Breaking remove xcodeProjectName, organizationName, and developmentRegion from Config.GenerationOptions #4131 by @danyf90
      • Migration: Configure them in Project instead or define helpers to share the value across projects
    • ๐Ÿ’ฅ Breaking move Config.GenerationOptions.disableShowEnvironmentVarsInScriptPhases to Project.Options #4131 by @danyf90
      • Motivation: It is related to the project generation
      • Migration: Configure it in Project.Options instead
    • ๐Ÿ’ฅ Breaking move Config.GenerationOptions.lastXcodeUpgradeCheck to Workspace.GenerationOptions #4131 by @danyf90
      • Motivation: It is related to the workspace generation
      • Migration: Configure it in Worksapace.GenerrationOptions instead
    • โž• Add support for configuring code coverage and testing options at the project level #4090 by @danyf90
    • โž• Add more detailed messaging for errors during manifest loading #4076 by @luispadron
    • ๐Ÿ“ฆ Deprecate legacy SPM support via Project.packages #4112 by @danyf90
    • ๐Ÿ‘Œ Improve performance of tuist generate when cache is used #4146 by @adellibovi

    โœ‚ Removed

    • ๐Ÿ’ฅ Breaking remove focus command and merge its functionality inside generate. #3912 by @danyf90:
      • Motivation:: The command were sharing a lot of responsibilities, and having a single one provides a cleaner CLI.
      • Migration: Instead of using focus, just use generate passing the targets to it. If you want to avoid using caching, you can pass --no-cache to tuist generate.
    • ๐Ÿ’ฅ Breaking remove the tuist lint code command #4001 by @laxmorek
    • ๐Ÿ’ฅ Breaking remove the tuist lint project command #4001 by @laxmorek
      • Motivation: tuist manifests/graphs are linted during generation (the tusit generate command), no need to keep it separately.
    • ๐Ÿ’ฅ Breaking remove deprecated initializers for FileLists, Headers, and HTTPURLResponse #3936 by @danyf90
      • Migration: Use non deprecated initializers

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix dependencies not fetching using Swift Package Manager 5.6 #4078 by mikchmie
    • ๐Ÿ›  Fix clean tuist test for project with resources #4091 by @adellibovi
    • ๐Ÿ›  Fix tuist graph --skip-external-dependencies for Dependencies.swift dependencies #4115 by @danyf90 & #4124 by @laxmorek
    • ๐Ÿ›  Fix envversion command not printing the tuist env version #4126 by @takinwande
    • ๐Ÿ›  Fix warning when importing ProjectDescription during tuist edit. It was caused by .swiftsourceinfo files being added to the release artifact #4132 by @luispadron
    • โœ‚ Remove default MacCatalyst support when framework deployment target is set to iOS and/or iPad #4134 by @TheInkedEngineer
    • ๐Ÿ›  Fix loading of external dependencies in nested projects #4157 by @alexanderwe

    โž• Added

    • โž• Add support for umbrellaHeader parameter to Headers to get list of public headers automatically. Also added new static functions in Headers for most popular cases with umbrella header #3884 by @pavel-trafimuk
    • โž• Add isExternal property to ProjectAutomation.Project and TuistGraph.Project that indicates whether a project is imported through Dependencies.swift. #4155 by @laxmorek
    • Add swiftOptimizeObjectLifetimes(_ enabled:) to SettingsDictionary extension to set SWIFT_OPTIMIZE_OBJECT_LIFETIME in Build Settings. #4171 by @kyungpyoda