testflight-release-package-plan.mdcontains the v1 implementation plan for a Node/Bun TestFlight release CLI.- v1 auth is Apple ID + app-specific password only; no App Store Connect API key flow.
- Build number parsing is text-only; do not execute
app.config.tsorapp.config.js. - Supported config files, first match wins:
app.config.ts,app.config.js,app.json. - Output convention:
ios/build/testflight/<runId>/with archive + export output. - Non-goals: Android support, ASC API key auth, CI polish.
- CLI entrypoint is
src/cli.js. - Prefer a simple layout such as
src/for implementation,tests/for test files, anddocs/for additional design notes.
- Local dev (Node):
npm run devornode src/cli.js --help. - Local dev (Bun):
npm run dev:bunorbun src/cli.js --help. - Local usage (npm):
npx react-native-paperplane --dry-runornpx react-native-paperplane. - Local usage (Bun):
bunx react-native-paperplane --dry-runorbunx react-native-paperplane. - Optional dev bin:
npm linkthenpaperplane --help. - No automated tests are defined yet.
- No style or lint tooling is configured yet.
- When code is added, keep the CLI entrypoint explicit (for example
src/cli.ts) and use clear, action-based function names (for exampleresolveWorkspace,bumpBuildNumber). - Match the plan’s terminology (e.g.,
buildNumber,Info.plist,IOS_WORKSPACE) to avoid drift.
- No tests are defined yet.
- If tests are added, name them to match the behavior (for example
build-number.test.ts) and keep fixtures in a smalltests/fixtures/directory.
- Use a simple conventional commit format such as
chore(release): bump iOS build to <N>orfeat: add build number extraction. - For pull requests, include a short summary, link related issues, and list any manual validation steps (e.g., “ran
xcodebuildarchive”).
- Confirm package name:
npm view react-native-paperplane. - Update
package.jsonversion. - Sanity-check CLI:
node src/cli.js --help. - Dry pack:
npm packand review contents. - Publish:
npm publish --access public.
- The plan assumes Bun, Xcode command line tools, and Apple’s Transporter app are installed.
- Expected repo inputs include
ios/with an Xcode workspace and one ofapp.config.ts,app.config.js, orapp.json. - Env vars (upload):
ASC_APPLE_ID,ASC_APP_PASSWORD, optionalASC_ITC_PROVIDER. - iOS overrides:
IOS_APP_NAME,IOS_SCHEME,IOS_WORKSPACE.