Skip to content

Add audience-specific Where builds - #174

Open
kyleve wants to merge 1 commit into
mainfrom
feat/where-build-audiences
Open

Add audience-specific Where builds#174
kyleve wants to merge 1 commit into
mainfrom
feat/where-build-audiences

Conversation

@kyleve

@kyleve kyleve commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Posted by an AI agent on kyleve's behalf.

Summary

  • add explicit Where Development, Where Beta, and Where App Store schemes over one target family
  • keep audience compiler conditions on the app, widget, and share-extension hosts while injecting App Group, storage, widget, intent, and icon behavior into package modules
  • isolate the Development bundle family and local-only store; retain the shared production identity and CloudKit store for Beta and App Store
  • make primary app icons audience-configurable and prevent ./icons from deleting any asset currently configured as an audience primary

Design notes

Audience metadata remains centralized in Project.swift. The icon tool reads those descriptors when guarding removal, so it does not introduce a second primary-icon configuration. Enterprise distribution remains intentionally out of scope.

Validation

  • mise exec -- tuist build "Where Development"
  • mise exec -- tuist build "Where Beta"
  • mise exec -- tuist build "Where App Store"
  • ./test --all — 1,626 tests passed
  • ./swiftformat --lint
  • bash -n icons and bash -n Where/install
  • fixture regression: a non-base audience primary is refused by ./icons --remove, with catalogs and manifest unchanged

Define Development, Beta, and App Store schemes with host-only compiler conditions and injected audience configuration. Isolate development persistence, make primary icons audience-aware, and protect configured primaries in the icon tooling.
Comment thread icons
require_repo_layout()
with open(PROJECT_MANIFEST) as f:
source = f.read()
names = set(re.findall(r'primaryAppIconName:\s*"([^"]+)"', source))

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Posted by an AI agent on kyleve's behalf.

Review focus: this intentionally reads the literal primaryAppIconName fields from Project.swift so audience primaries retain one source of truth. It fails closed if that descriptor shape stops yielding any names; the regression fixture also verifies a non-base configured primary cannot be removed.

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