diff --git a/aggregates.yaml b/aggregates.yaml index 25a514d..5c0524f 100644 --- a/aggregates.yaml +++ b/aggregates.yaml @@ -38,3 +38,19 @@ aggregates: kept: { event: kept } transitions: open: [removed, kept] + # TestFlight beta signups (index.yaml's "Test it on your iPhone"). + # Attended by automation, not a human desk: a new "requested" signup + # is handed to the App Store Connect API to invite the Apple ID to the + # closed beta; "withdrawn" (the /joined-testers self-transition) drops + # them from the invite list. + - bucket: redoal_testers + attended_by: > + n8n TestFlight onboarding workflow — ops/n8n/testflight-onboarding + in redoal/redoal. Consumes NATS events.redoal_testers.* and calls + App Store Connect POST /v1/betaTesters. + initial: open + states: + open: { event: requested } + withdrawn: { event: withdrawn } + transitions: + open: [withdrawn] diff --git a/questions/index.yaml b/questions/index.yaml index c8cdcbc..b3ec657 100644 --- a/questions/index.yaml +++ b/questions/index.yaml @@ -119,7 +119,13 @@ alternatives: - name: Follow the build as it lands description: > The network as it is being built — and we need collaborators on - every new surface it grows. + every new surface it grows. Desktop releases run free; the iPhone + build is a closed beta you can ask into below. + action: /joined-testers + consequence: [Request a TestFlight invite] + record_as: redoal_testers + encouragements: + - Watch your mail for the TestFlight invite. features: - name: Communicate description: > @@ -144,6 +150,19 @@ alternatives: jq: > .[] | {name: .name, description: .body, tag: .tag_name, published: .published_at, url: null} + - name: Join the public testers + description: > + The desktop releases above run free, no sign-up. The iPhone + build rides TestFlight (Apple's closed beta), so it needs the + Apple ID you use with the App Store — leave it and we'll send + an invite. + icon: lucide:smartphone + requirements: + - name: name + label: Name + - name: email + label: Apple ID email + type: email - name: Hear from us when it matters description: > @@ -166,3 +185,4 @@ alternatives: - name: email label: Email type: email + diff --git a/questions/joined-testers.yaml b/questions/joined-testers.yaml new file mode 100644 index 0000000..d6c8f77 --- /dev/null +++ b/questions/joined-testers.yaml @@ -0,0 +1,30 @@ +id: /joined-testers +route: ^/joined-testers +followup: true +name: What happens next? +description: > + You asked for a place in the closed beta — here's the shape of it. +alternatives: + - name: Your invite is on its way + description: "" + features: + - name: Check your mail + description: > + A TestFlight invite goes to the Apple ID you left. Tap it on + your iPhone, install TestFlight if you don't have it, and + redoal lands on your home screen. + icon: lucide:mail + - name: It's rough on purpose + description: > + A beta, and an artwork before a product — the networked edges + are where the interesting questions live. Tell us what breaks. + icon: lucide:hammer + + - name: Withdraw from the beta + description: > + Changed your mind? Confirm below and we'll drop your Apple ID from + the invite list. + self_transition: + bucket: redoal_testers + to: withdrawn + label: Remove me from the beta