809 Commits

Author SHA1 Message Date
Yonas Kolb 3e6e5e3878 Fix makePathRelative using wrong base path when projectDirectory differs (#1608)
* Fix makePathRelative using wrong base path when projectDirectory differs (#1606)

`makePathRelative` used `project.basePath` to compute parent paths, while
`resolveGroupPath` used `projectDirectory ?? project.basePath`. When these
differ (e.g. via --project flag), intermediate group paths become inconsistent,
causing Xcode to resolve files to the wrong location.

Regression from #1596 which added the `makePathRelative` call in the
`createIntermediateGroups` code path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Extract basePath computed property in SourceGenerator

Consolidates `projectDirectory ?? project.basePath` into a single
`basePath` property to prevent future mismatches between path resolution
call sites.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 19:06:43 +11:00
Yonas Kolb 8cfdf30a9f Fix folder source PBXFileReference path regression with createIntermediateGroups (#1605)
Skip makePathRelative for folder-type sources since they use sourceTree
.sourceRoot and need the full project-relative path preserved. The call
was inadvertently added for all source types in #1596 but only synced
folders (.syncedFolder) need it.

Fixes #1603
2026-03-11 00:44:51 +11:00
Bruno Coelho acd366f089 Fix issue 1602 - Synced folders: includes silently ignored + no deduplication across targets (#1604)
* Fix issue 1602 - Synced folders: includes silently ignored + no deduplication across targets

* Add more tests
2026-03-10 10:25:07 +11:00
Ruslan Silimir 50eb268b7d Fix missing productRefGroup in generated projects (#1591)
* Fix missing productRefGroup in generated projects

* Update CHANGELOG

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2026-03-05 17:00:21 +11:00
Yonas Kolb 3baf4337c1 Add .icon folder support for IconComposer (#1600) 2026-03-05 16:44:04 +11:00
Vasily Anisimov decc743795 Added ProjectFormat enum with specific for each version fields (#1566)
* Added ProjectFormat enum with specific for each version fields

* Added ability to specify project format version via `projectFormat` option

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2026-03-05 13:46:56 +11:00
Max Seelemann 167d11998a Various synced folder enhancements (#1596)
* Add explicitFolders support to syncedFolder

Adds an `explicitFolders` property to `TargetSource` that is expanded from Glob patterns and passed through to `PBXFileSystemSynchronizedRootGroup`.

* Fix syncedFolder sources ignoring createIntermediateGroups

When createIntermediateGroups was enabled and a syncedFolder source had a
multi-component path (e.g. SyncedParent/SyncedChild), two things went wrong:

1. The synced folder was unconditionally added to rootGroups, causing it
   to appear both at the project root and inside the correct intermediate
   parent group.

2. The synced folder kept its full project-relative path instead of being
   made relative to its parent group, so Xcode concatenated them into a
   wrong path (e.g. SyncedParent/SyncedParent/SyncedChild).

* Enhance PBXFileElement to recognize synced folders as groups that can be sorted

* Fix membership exceptions for nested synced folder with intermediate groups

* Update Changelog
2026-03-05 13:22:29 +11:00
Max Seelemann 4c3d55813b Fix supportedDestinations presets being injected when settingPresets is none (#1599)
Gate the supportedDestinations YAML preset block inside the applyTarget check so that settingPresets: none (and project) suppresses Catalyst-related settings (SUPPORTS_MACCATALYST, SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD, SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD) that were previously always injected.

Fixes #1598
2026-03-05 12:22:29 +11:00
mirkokg a0afcefaed Handle membership exceptions for synchronized root groups (#1587)
* Handle membership exceptions for synchronized root groups

Adds logic to detect and register membership exceptions for PBXFileSystemSynchronizedRootGroup objects, specifically excluding Info.plist files from group membership when necessary. Also ensures resources build phase is added if synchronized root groups are present.

* Refactor synced folder membership exceptions with glob support

Extract configureMembershipExceptions into its own method, use Set for
dedup, resolve excludes via glob expansion, and add a no-op test case.
Incorporates glob support and tests from macguru@baf1108.

* Update UUID

* Comment out excludes in project.yml

Comment out excludes for ExcludedFile.swift due to CI issue.

* Clean up project.pbxproj by removing exception set

Removed PBXFileSystemSynchronizedBuildFileExceptionSet section and its references.

* Remove comment

* Update SourceGeneratorTests.swift

* Update project.pbxproj

* Retrigger CI

* Add info.plist exclusion
2026-03-04 08:22:27 +11:00
Yonas Kolb a904543801 update to xcodeproj 9.10.1 (#1597) 2026-03-03 22:43:05 +11:00
George Navarro 3251691527 Feature: Custom Working Directory (#1543)
* Added `customWorkingDirectory` and `useCustomWorkingDirectory` properties to `Scheme.Run`

* Use new `customWorkingDirectory` and `useCustomWorkingDirectory` when generating `XCScheme.LaunchAction`

* Updated ProjectSpec.md to document new `customWorkingDirectory` and `useCustomWorkingDirectory` properties

* Fix for not setting customWorkingDirectory in the toJSONValue function

* Added test to make sure usCustomWorkingDirectory value is true when the customWorkingDirectory is set to non nil

* Change to infer the value of SchemaGenerator.LaunchAction.useCustomWorkingDirectory based on the value of Schema.Run.customWorkingDirectory

* Removed useCustomWorkingDirectory from the project spec now that it is no longer user defined.
2025-07-22 19:16:05 +10:00
jakobfelsatdm a1c7544271 set correct version for xcode 16 (#1563)
* set correct version for xcode 16

see: https://github.com/CocoaPods/Xcodeproj/blob/master/lib/xcodeproj/constants.rb#L134

* update test fixtures

---------

Co-authored-by: Fels, Jakob <fels.jakob@gmail.com>
2025-07-22 19:14:34 +10:00
Craig Siemens fa7358b6fc Map parallelizable true to parallelization all to match the behaviour from Xcodeproj 8.24.3 (#1565) 2025-07-22 13:47:04 +10:00
Himanshu Kumar ae42dd5b19 Address Sanitizer options in run/test schemes (#1550)
* Expose address sanitizer flags in run and test BuildActions in Schemes

* Update testJSONEncodable to test the new fields

* Also test the asan setting values for run scheme

* Update changelog

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2025-07-17 15:48:00 +10:00
Yonas Kolb c32aa4cc94 Synced folders (#1541)
* update xcodeproj to 8.27.7

* add syncedFolder source type

* drop xcode 15 support

* Rely on fileReference instead of adding new synchronizedRootGroup (#1557)

* fix: don't include untracked children in cache

---------

Co-authored-by: Kirill Yakimovich <kirill.yakimovich@gmail.com>
2025-07-17 15:15:43 +10:00
Marcos Griselli 172a494704 Update Xcodeproj to 8.24.3 (#1515)
* Update Xcodeproj to 8.24.3

* Bump macOS version

* maintain support for removed gpuValidationMode enum

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2025-04-06 19:50:09 +10:00
Yonas Kolb 9acab4a54e fix test failure when run from through Xcode 2025-02-17 22:03:51 +11:00
Vakhid Betrakhmadov 68b0d1206f Support preferred screen capture format in scheme test action (#1450)
* Support preferred screen capture format in scheme test action (resolves #1443)

* preferredScreenCaptureFormat decoding test

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2025-02-17 17:07:29 +11:00
Maxim Krouk 434dfeca2e Add excludeFromProject option for local packages (#1512) 2025-02-17 16:08:54 +11:00
Steven Sheldon b1e03f0f46 Fix checking optional group existence relative to the working dir (#1529) 2025-02-17 16:01:59 +11:00
Marcos Griselli 1aa7e281b7 Fix Swift 6 warnings (#1513) 2024-12-29 15:57:28 +11:00
Franz Höpfner 5af3bf3797 Add support for local Swift packages in Xcode 15 (#1465)
* Add support for local Swift packages in Xcode 15

Solves yonaskolb/XcodeGen#1396

* Updated CHANGELOG.md

* add test for local package creation

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2024-07-11 21:19:37 +10:00
Ernesto Cambuston 45151c2882 Allow changing macro expansions on test actions. (#1468)
* Allow to override test macroExpansions

* update doc

* style

* Address feedback from PR

* fix build

* add toJSONValue encoding
2024-07-10 12:19:30 +10:00
Ernesto Cambuston f8842228c5 Test action macroExpansion allows unavailable buildable reference. (#1471)
* fix buildable ref

* fix test

* add test
2024-07-03 21:41:03 +10:00
Kohki Miki 7eb5e9bd06 Remove GraphViz feature (#1485)
* Remove GraphViz to pass build on Xcode 16

* Update documentations
2024-07-02 17:06:02 +10:00
John Flanagan d99e448647 Include folder (SPM packages) in group sorting logic (#1466) 2024-05-17 23:14:20 +10:00
Hilton Campbell 632ca2d419 Enable adding local Swift packages to the project root (#1413)
* Enable adding local Swift packages to the project root

* Update CHANGELOG.md
2024-04-07 23:18:24 +10:00
Balazs Perlaki-Horvath 1645d419ce Add shell to ExecuteAction (#1430)
* Add shell to ExecuteAction

* Update to 2.38.1

* Add shell argument to jsons
2024-04-07 22:38:04 +10:00
freddi(Yuki Aki) 5bcbf3959d Fix crash bundle (#1448)
* create availableModule to avoid crash on Bundle loading

* remove unnecessary line
2024-02-15 21:31:42 +11:00
Jaap Manenschijn 54139090a3 Make sure to create parent group structure for local packages (#1417)
* Make sure to create parent group structure for local packages

* Remove redundant localPackageGroup variable

---------

Co-authored-by: Jaap Manenschijn <jaap.maneschijn@rabobank.nl>
2024-02-14 20:18:16 +11:00
nicolasbosi95 2881fcc8fb Support for Strings Catalogs (Xcode 15) (#1421)
* Support for xcode 15 string catalogs

* Add sample string catalog to Test Fixture and basic test to check that asset catalogs are added in the resources build phase

* Restore unintended changes

* Update Pull Request number for 'Support for Strings Catalogs' in changelog

* Update fixture yml generator

* Detect knownRegions based on locales in string catalogs
2024-02-14 20:07:04 +11:00
freddi(Yuki Aki) 2c1500761d Support Artifact Bundle (#1388)
* support artifact bundle

* update CHANGELOG to exact PR

* build ArtifactBundle only on macOS

* update to copy SettingPresets into bundle

* fix CHANGELOG.md

* load Bundle.module

* update ArtifactBundleGen

* update ArtifactBundleGen to linux issue

* fix unnecessary code

* add lisence to bundle
2024-02-13 20:48:23 +11:00
Giovanni Amati 97d36fd1d2 Support for multiple deployment targets with xcode 14 (#1336)
* platformFilters on Dependecies

* platformFilters on sources

* fixed current unit tests

* renamed enum to SupportedPlatforms

* supportedPlatforms field for target

* errors

* renamed errors

* inferPlatformFiltersByPath flag

* changed priority to generate filter

* fixed parsing

* fixed init

* unit test supportedPlatforms

* unit tests for errors

* fixing build settings and unit tests

* added new settingsPresets

* new check errors and unit tests

* case insensitive match

* fixed skipping cross platform target

* json decode

* unit tests inferPlatformFiltersByPath and platformFilters for sources

* mocked files

* fixing unit tests

* first test on dependecies

* unit tests completed

* fixed unit tests

* changelog

* doc changes

* doc changes

* doc changes

* doc changes

* doc changes

* doc changes

* doc changes

* doc changes

* fixed doc

* fixed unti tests style

* fixed regex

* fixed doc

* addressing comments

* Added TestProject, moved unit tests resources in another folder

* Raising error if platform is an array

* unit test on new error

* fixed error enum

* Integrated in TestProject

* committed TestProject

* unit test error

* fixing spm deps in test project

* pushed testProject

* pushed testProject

* pushed testProject fix

* comment on isResolved property

* renameing supportedPlatforms to supportedDestinations

* renameing supportedPlatforms to supportedDestinations

* renameing test app

* checked out old file

* fixing test app

* working on auto baseSDK

* fixed deploymentTarget

* renamed errors

* fixed presets

* remamed index to priority

* small comments

* removed isResolved in target and fixed error check

* added unit tests

* fixed doc

* fixed doc

* fixed doc

* fixed doc

* fixed test app

* add visionOS and more error check and testing

* fixed supported destinations priority and tests

* fixed doc

* solved conflicts

* fixed conflicts

* renamed everything

---------

Co-authored-by: Giovanni Amati <giovanni.amati@sky.uk>
2023-10-31 20:55:38 +11:00
Simon Støvring 486df5da4d Supports specifying multiple package products (#1395)
* Supports specifying multiple package products

* Adds #1395 to CHANGELOG.md

* Updates documentation

* Adds fixture

* Adds changes to pbxproj after changing fixture

* Elaborates on linking options in "Package dependency" section
2023-09-11 11:49:38 +10:00
BarredEwe 73e25e4943 Added support for Build Tool Plug-ins in AggregateTarget (#1390)
* Added support for `BuildTool Plug-ins` in AggregateTarget

* Update CHANGELOG.md
2023-09-10 21:42:47 +10:00
Shaun Harrison 3a7e75f1fb Fix issue with includes not working when no matches are found (#1337)
* Fix issue where an includes pattern without matches prevented includes from working

* Add new test to handle includes with no matches
2023-08-17 13:58:50 +10:00
BarredEwe d8d5457f48 Add support for adding build tool plugins to targets (#1374)
* Add support for adding build tool plugins to targets

* Added Plugin validation

* Added some tests

* Limited the minimum version to 5.7 Swift

* Update .gitignore

Co-authored-by: freddi(Yuki Aki) <freddi-kit@users.noreply.github.com>

* Update CHANGELOG.md

Co-authored-by: freddi(Yuki Aki) <freddi-kit@users.noreply.github.com>

* Update CHANGELOG.md

Co-authored-by: freddi(Yuki Aki) <freddi-kit@users.noreply.github.com>

* Update Docs/ProjectSpec.md

Co-authored-by: freddi(Yuki Aki) <freddi-kit@users.noreply.github.com>

* Added a fixture for testing plugins

* Update CHANGELOG.md

* Installed the release version of XcodeProj

---------

Co-authored-by: freddi(Yuki Aki) <freddi-kit@users.noreply.github.com>
2023-08-16 22:22:16 +10:00
Yonas Kolb 7ea32005e2 add recommended settings for xcode 14 (#1385)
* add recommended settings for xcode 14

* changelog
2023-08-13 00:15:50 +10:00
Yonas Kolb 5f1efd90ef Update XcodeProj and add RuntimeIssue breakpoint (#1384)
* support RuntimeIssue breakpoint

* drop xcode 12 and 13 support

* changelog
2023-08-12 23:23:12 +10:00
Antoine Piellard a10bd4baa0 Add support to disable "Thread Performance Checker" (#1380)
* Add disableThreadPerformanceChecker scheme option

* Update changelog
2023-08-08 08:50:13 +10:00
Leonardo Oliveira c7ae369c14 Updates project object version to support BuildIndependentTargetsInParallel setting (#1368)
* feat: updates project object version

* updates CHANGELOG.md with PR changes
2023-08-08 08:49:33 +10:00
Satsuki Hashiba 3a215ce999 Add support for visionOS (#1379)
* Add support for visionOS

* Update ProjectSpec

* Add carthageName property for .visionOS

* Update CHANGELOG.md and ProjectSpec.md

* Add visionOS yml to SettingPresets/Platforms and SettingPresets/Product_Platform

---------

Co-authored-by: Satsuki Hashiba <hashiba.satsuki@linecorp.com>
2023-08-07 22:12:34 +10:00
Liam Nichols 98ce05105b Don't add PBXContainerItemProxy when reusing PBXReferenceProxy (#1377)
* Reproduce issue in FixtureTests

* Don't add PBXContainerItemProxy if existing PBXReferenceProxy was reused

* Move extenral target fixture to an iOS target so that it actually compiles

* Update CHANGELOG.md
2023-07-26 22:52:43 +10:00
LouisLWang f33d600d50 adding support for enableGPUValidationMode (#1294)
* adding support for enableGPUValidationMode

* encode enableGPUValidationMode in Scheme.Run.toJSONValue()

* ci: commit fixtures changes

* docs: Add changelog for enableGPUValidationMode

update Doc ProjectSpec.md

* docs: update ProjectSpec.md for enableGPUValidationMode default value

---------

Co-authored-by: wanglulu <louiswang@lilith.com>
2023-07-13 20:58:32 +10:00
Roman Gardukevich 372f20fe5a Reuse ReferenceProxy references when possible (#1354)
* Reuse ReferenceProxy references when possible

* Add changelog

* Update CHANGELOG.md

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2023-05-17 11:58:32 +10:00
mat1th 8256008778 Add possiblity to add resources before the sources build phase (#1351)
* feat: Add possiblity to add resources before the sources build phase;

* feat(ios): Add change to Docs + CHANGELOG;

* fix: rename resourcesBeforeSourcesBuildPhase to putResourcesBeforeSourcesBuildPhase to make it more clear;

* Update CHANGELOG.md

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2023-04-25 11:57:44 +10:00
Jierong Li d1dd93aac4 Rebase #177 - Shared breakpoints support (#693)
* Resolves #173 - Shared breakpoints support

* Added breakpoints full documentation

* Invalid breakpoint just throw JSONUtilities decoding error.

* Use enumeration types instead of String for extensionIDs

* Remove a necessary line

* Remove unnecessary custom Equatable implementation

* Update CHANGELOG.md

* Ignore empty breakpoints

* Update Docs/ProjectSpec.md

Fix a typo

Co-Authored-By: Yonas Kolb <yonaskolb@users.noreply.github.com>

* Change some properties that should be Int to Int

* Create 2 typealiases

* Use BreakpointType where it is missing

* Remove unused Location

* Change some names

* Add Breakpoint.Scope

* Add Breakpoint.StopOnStyle

* Change the type of the raw value to String

* Remove some properties that may cause confusing

* Require filePah and line when the type is .file

* Add tests about decoding breakpoints

* Add Breakpoint.Action.ConveyanceType

* Add default value for waitUntilDone

* Add Breakpoint.Action.SoundName

* Add tests about decoding breakpoint actions

* Fix some issues in ProjectSpec.md

* Improve ProjectSpec.md

* Add missing condition

* Add breakpoints to project.yml

* Use unwarp

* Remove the Breakpoint suffix

* Refactor BreakpointType

* Refactor Breakpoint.Action

* Remove unnecessary properties

* Adjust the line wrapping style for BreakpointGenerator

* Support column breakpoints

---------

Co-authored-by: Alex Rupérez <alejandro.ruperez@intelygenz.com>
Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2023-02-28 22:00:39 +11:00
Wendy Liga 43e40a9efc Added support for scheme management (#1142)
* wip

* Added scheme management metadata properties to TargetScheme

* wip

* Added Scheme.Management for metadata

* use sharedDefault

* move generateSchemeManagement to SchemeGenerator

* revert

* update changelog

* update docs

* update test case

* remove

* remove unused file

* revert

* changed on fixtures project

* Updated ProjectSpec docs index

* User Scheme.Management also for TargetSchemes, use XCUserData

* Changelog

* Switch XcodeProj back tuist/XcodeProj - 8.9.0

* Reindent TOC Docs/ProjectSpec.md

* Revert swift tools version

---------

Co-authored-by: Tieme van Veen <tiemevanveen@hotmail.com>
2023-02-24 09:49:57 +11:00
Hesham Salman 366981ba2e Support for swiftcrossimport folders (#1317)
* Naive support for swiftcrossimport

* Update SourceGenerator.swift

* Add changelog entry

* Update CHANGELOG.md

* Add test fixture

* Check-in generated diffs
2023-01-25 11:36:25 +11:00
Casper Riboe 15f3186731 Renamed Embed step to 'Embed Foundation Extensions' (#1310)
* Renamed Embed step

* Add changelog entry

* Add project diffs
2023-01-16 20:07:26 +11:00