Skip to content

chore: stop bundling Config.plist, drop dead API records - #48

Merged
Ivan-LB merged 4 commits into
devfrom
chore/release-hygiene
Sep 29, 2026
Merged

Ivan-LB merged 4 commits into
devfrom
chore/release-hygiene

Conversation

@Ivan-LB

@Ivan-LB Ivan-LB commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Config.plist is no longer a Resources build input. Whatever key was on disk at archive time shipped inside the IPA (1.0's key was revoked 2026-08-19). The file stays on disk and gitignored for local dev.
  • CI placeholders retired. ci.yml no longer writes a placeholder plist. ci_post_clone.sh keeps one gate: any Xcode Cloud archive with FeatureFlags.tipsEnabled = true is refused, because Tips has no safe key source yet.
  • openai.com ATS exception removed from Info.plist. ITSAppUsesNonExemptEncryption stays.
  • Pending Xcode change committed on purpose: "Designed for iPhone/iPad" on Mac and Vision Pro plus Mac Catalyst set to NO (iPhone only), and Xcode's re-sort of the pbxproj sections.
  • testPreviewFootage added to the store screenshot tour (the App Preview footage walk). brag-output*/ is gitignored.
  • Docs: new invariant gotchas.yaml#config-plist-never-bundled (also in CLAUDE.md §3). docs/xcode-cloud.md is updated, and both plan docs are committed with their status.

Why

1.1 housekeeping from docs/plans/drop-bundled-config-plist.md and docs/plans/dead-api-records.md. The app makes no network calls, and the build should not ship paperwork that says otherwise.

Test plan

  • Fresh worktree (no Config.plist on disk): xcodebuild test -scheme Savely on iPhone 17 Pro, skipping SavelyUITests like CI. TEST SUCCEEDED, 102 passed, 0 failed.
  • Built Savely.app contains no Config.plist or GoogleService-Info.plist, and Info.plist has no NSAppTransportSecurity.
  • swiftlint lint --strict clean.
  • ci_post_clone.sh dry-run: tips off + archive → exit 0; tips on + archive → exit 1 with the fix named; tips on + build → exit 0.
  • Xcode Cloud archive on this branch (or after merge) succeeds with no environment variables.

Risks

  • Mac / Vision Pro availability: after this ships, the app stops being offered as "Designed for iPhone" on Mac and Vision Pro. That's intended; flip the settings back if not.
  • The Xcode Cloud workflow may still have an OPENAI_API_KEY secret configured. It's unused now and can be deleted.
  • Still open (owner only, not code): Firebase project savely-5160e needs to be confirmed dormant and deleted. See dead-api-records.md §2.

🤖 Generated with Claude Code

…on Pro

Config.plist sat in Copy Bundle Resources, so whatever key was on disk at
archive time shipped inside the IPA (1.0's key was revoked 2026-08-19).
The file stays on disk and gitignored for local dev; it is simply no longer
a build input.

- Drop the Resources build-phase entry (file reference kept).
- Retire the placeholder-plist steps in ci.yml and ci_post_clone.sh; a
  clean checkout now builds without it.
- ci_post_clone.sh keeps one gate: refuse any archive with
  FeatureFlags.tipsEnabled = true, since Tips has no safe key source yet.
- New invariant: gotchas.yaml#config-plist-never-bundled, CLAUDE.md §3.
- Pending Xcode change: SUPPORTS_MACCATALYST and the "Designed for
  iPhone/iPad" on Mac and Vision Pro destinations set to NO, plus Xcode's
  re-sort of the PBXBuildFile/PBXFileReference sections.
Savely 1.0 makes no network calls (Tips is flagged off), but Info.plist
still declared an App Transport Security exception for openai.com, visible
to App Review and at odds with the "Data Not Collected" privacy answers.
ITSAppUsesNonExemptEncryption stays; it is load-bearing for upload.

The leftover GoogleService-Info.plist was deleted locally (gitignored, never
bundled). The Firebase project itself is still open, owner-only; see
docs/plans/dead-api-records.md.
testPreviewFootage walks the seeded app at human pace (home, goal, expense,
payday auto-move, goal again, trend, privacy, receipt) while
`simctl io recordVideo` captures it, and prints BRAGMARK lines with
timestamps and tap centers so an editor can cut scenes and draw touch
indicators. It also answers the first-launch notification prompt.
@Ivan-LB
Ivan-LB merged commit 4263f29 into dev Sep 29, 2026
1 check passed
@Ivan-LB
Ivan-LB deleted the chore/release-hygiene branch September 29, 2026 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant