chore: drop *.xcscheme gitignore rule and track Savely scheme#28
Merged
Conversation
The rule globally ignored every .xcscheme file. The existing Savely.xcscheme had been silently untracked since the repo started — CI worked only because xcodebuild auto-derives schemes when the file is missing. Dropping the rule and adding the scheme makes the build deterministic and lets future shared schemes (e.g. SavelyTests) commit naturally. User-specific scheme state continues to be excluded via xcuserdata/. Implements Option B from docs/plans/maintenance-cleanup.md Task 2, with the orchestrator's Path 2 expansion (track scheme alongside gitignore change) approved by the user.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
*.xcschemeline from.gitignore(line 18).Savely.xcodeproj/xcshareddata/xcschemes/Savely.xcscheme(was silently ignored before).Why
Discovered while implementing Task 2 of
docs/plans/maintenance-cleanup.md: the*.xcschemerule had been globally ignoring every scheme file since the repo started. The existingSavely.xcschemeon disk was never tracked —git ls-files | grep xcschemereturned empty. CI'sxcodebuild -scheme Savelyworked only because xcodebuild auto-derives schemes when the file is missing.Two consequences:
Dropping the rule fixes both: the existing scheme becomes tracked verbatim, future shared schemes (e.g.
SavelyTests.xcschemeif we ever want to run unit tests independently of UI tests) can commit naturally. User-specific scheme state continues to be excluded viaxcuserdata/(lines 12 and 22).This implements Option B from the plan, with Path 2 expansion (track scheme alongside gitignore change) since leaving the scheme untracked would reproduce the same opaque-state problem.
What's in the scheme
Standard Xcode-generated scheme (
LastUpgradeVersion 1540, version1.7):Savely.apponlySavelyTestsandSavelyUITests,parallelizable = YESSavelyTest plan
xcodebuild build -scheme Savely -destination 'platform=iOS Simulator,name=iPhone 17 Pro'— passesxcodebuild test -scheme Savely -destination 'platform=iOS Simulator,name=iPhone 17 Pro' -skip-testing:SavelyUITests— passesgit ls-files | grep -i xcschemenow listsSavely.xcodeproj/xcshareddata/xcschemes/Savely.xcschemegit statusclean (onlydocs/untracked, separate concern)Savely/Config.plistandSavely/GoogleService-Info.plistcorrectly stay gitignoredRisks
Minimal. Note for reviewer:
SavelyUITestswithskipped = NO, but.github/workflows/ci.ymloverrides this with-skip-testing:SavelyUITests(intentional per commit33b5f5a— template launch-perf tests flake on shared CI runners). That mismatch is by design and out of scope for this PR.iPhone 17 Proinstead ofiPhone 16 Pro(CLAUDE.md / CI default) because Xcode 26 no longer ships the 16 Pro simulator locally. CI'smacos-15runner still has it, so CI runs unchanged.🤖 Generated with Claude Code