Skip to content

feat(deploy): add white-label brand system and TestFlight deployment pipeline - #2

Merged
realcodesiman merged 4 commits into
mainfrom
feat/deploy-pipeline
Aug 29, 2026
Merged

realcodesiman merged 4 commits into
mainfrom
feat/deploy-pipeline

Conversation

@realcodesiman

@realcodesiman realcodesiman commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a white-label brand system (brands/*/brand.json + assets) so app.config.ts can build per-brand iOS/Android identifiers, icons, and colors from a single config source.
  • Add EAS deployment tooling: workflows (.eas/workflows/*.yml), a preview-testflight build/submit profile with auto-submit to App Store Connect, and Expo SDK 57 patch bumps.
  • Disable the App Store Connect export-compliance prompt via ITSAppUsesNonExemptEncryption (app only uses OS-provided TLS/Keychain + random UUIDs, no custom crypto).

Changes

  • app.config.ts, app.config.test.ts — brand loading/validation (BrandConfig, validateBrand, APP_ENV_CONFIG) evaluated inline for Expo's config-loader constraints
  • src/config/brand.ts, scripts/create-brand.ts — runtime brand access + brand scaffolding script
  • brands/chatbotx/, brands/_template/ — brand assets and config, replacing the old flat assets/images icons
  • eas.json — new preview-testflight profile (build + submit), production submit now includes ASC API key config
  • .eas/workflows/{preview,release,update}.yml — EAS Workflows for CI-driven builds/updates
  • docs/deploy.md, docs/white-label.md — deployment and white-label docs
  • .easignore — excludes the local CodeGraph daemon socket from EAS build uploads
  • package.json, pnpm-workspace.yaml, pnpm-lock.yaml — Expo/expo-constants/expo-font/expo-updates patch bumps, new build:testflight script
  • CONTRIBUTING.md, LICENSE — added

Test plan

  • pnpm lint
  • pnpm check-types
  • pnpm test
  • eas build --profile preview-testflight -p ios --auto-submit succeeds and lands in TestFlight
  • Verify brands/chatbotx app icon, name, and bundle ID render correctly in a preview build

Restructures assets under brands/<id>/ so app.config.ts can resolve
identity, icons, and EAS project per brand at build time, and wires up
EAS Workflows (preview/update/release) plus deploy/white-label docs so
the app can be built and shipped through EAS end-to-end.
- add preview-testflight build/submit profile with auto-submit to ASC
- disable export-compliance prompt via ITSAppUsesNonExemptEncryption
- bump expo, expo-constants, expo-font, expo-updates to latest patches
- exclude .codegraph daemon socket from EAS build uploads
…brand colors

- Validate brand.json fields with a shared requireString helper (hex-color
  checks, optional eas.owner) instead of ad-hoc per-field checks
- Trim BrandExtraConfig to what src/ actually consumes (brandId, brandScheme,
  brandColor) — displayName/appEnv/updateChannel come from expo-constants and
  eas.json instead
- Add lighten() alongside darken() and derive dark-scheme brand/brandStrong/
  bubbleOut shades from the single brand.json color instead of hardcoding them
- Harden the release workflow's brand-overlay clone step (fail fast on a
  missing token/brand.json, clean up /tmp) and restructure eas.json submit
  profiles to share config via "base" + extends
- Make create-brand.ts clean up a half-scaffolded folder on failure
- jest.setup.ts: filter RNGH's false-positive "callbacks are worklets and
  some are not" console.error (inconsistent worklet transform under Jest
  against RNGH's own precompiled ReanimatedSwipeable.js, not our code)
- app.config.ts: skip the brand/appEnv console.log under Jest, keep it for
  real expo prebuild/EAS runs
- ci.yml: bump actions/checkout, actions/setup-node, pnpm/action-setup to
  their Node-24-compatible majors, clearing the "Node.js 20 is deprecated"
  annotation
@realcodesiman
realcodesiman merged commit b67e340 into main Aug 29, 2026
1 check passed
@realcodesiman
realcodesiman deleted the feat/deploy-pipeline branch August 29, 2026 08:16
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