mobile(phase 6): release workflow scaffold + setup guide#33
Draft
Hackshaven wants to merge 1 commit into
Draft
Conversation
Phase 6 scaffolding — the CI workflow and human setup documentation
needed to ship signed iOS and Android builds to TestFlight and Play
Console. The workflow is complete but requires secrets to be stored
in GitHub before it can run.
New files:
.github/workflows/release-mobile.yml:
Two parallel jobs triggered on version tags or manual dispatch:
iOS (TestFlight):
- Runs on macos-26 with Xcode 26
- Imports Apple distribution certificate + provisioning profile
from base64-encoded GitHub secrets into a temporary keychain
- Builds signed IPA via `tauri ios build --export-method app-store-connect`
- Uploads to TestFlight via xcrun altool with App Store Connect API key
- Cleans up keychain on completion
Android (Play Console):
- Runs on ubuntu-latest with JDK 17 + Android SDK 36
- Decodes upload keystore from base64 GitHub secret
- Writes key.properties for Gradle signing config
- Builds signed AAB via `tauri android build --aab`
- Uploads to Play Console Internal Testing via r0adkll/upload-google-play
docs/RELEASE_MOBILE.md:
Step-by-step human setup guide covering:
Part 1 — iOS (7 steps):
- Create App ID in Apple Developer Portal
- Create distribution certificate (.p12 export)
- Create App Store provisioning profile
- Create App Store Connect API key (.p8)
- Create the app in App Store Connect
- Store 7 secrets in GitHub
- Test the workflow
Part 2 — Android (8 steps):
- Create app in Play Console
- Generate upload keystore via keytool
- Enroll in Google Play App Signing
- Create Google Cloud service account
- Grant service account access in Play Console
- Create Internal Testing track
- Store 5 secrets in GitHub
- Test the workflow
Plus a first-release checklist and troubleshooting section.
WHAT'S NEEDED FROM THE HUMAN:
- Apple: distribution cert, provisioning profile, API key, Team ID
- Google: upload keystore, Play Console service account JSON
- Both: store secrets in GitHub repo settings
The workflow will NOT run until these secrets are provided.
Refs: docs/MOBILE_APP_PLAN.md Phase 6
Signed-off-by: Claude <noreply@anthropic.com>
Hackshaven
pushed a commit
that referenced
this pull request
May 1, 2026
PR #33 scaffolds the mobile release pipeline (TestFlight / Play Internal Testing) and MOBILE_APP_PLAN.md Phase 7 designs on-device Orbit via Apple Intelligence Foundation Models on iOS and Gemini Nano via AICore on Android. Worth foregrounding on the poster — it's the strongest extension of the "one TypeScript source, every platform" story since Tauri desktop, and the on-device-LLM angle ties directly back to the §6 Orbit section. Changes: - Goals updated to mention mobile alongside desktop - §3 feature gallery card renamed to "Multi-platform (web + desktop + mobile)" - §8 rewritten: split into Desktop and Mobile blocks, calls out the mobile-only HTTPS capability, the 12-secret release pipeline, and the on-device-LLM Phase 7 design (honest "forthcoming" framing) - §11 tech stack adds a Mobile row and on-device LLM providers - Risks adds a "mobile mid-flight" mitigation note about PR-link vs store-link badges - Open questions adds #11 on mobile framing + badge targets https://claude.ai/code/session_011bkaCDBaTRH1TzGb4FjSkR Signed-off-by: Claude <noreply@anthropic.com>
Hackshaven
pushed a commit
that referenced
this pull request
May 1, 2026
§2 Mission. Two-column layout (1.05fr / 1fr) on desktop,
stacked on mobile. Left column: monospace eyebrow ("THE
MISSION"), pull-quote h2 from MISSION.md (the "you have to
be in the room" line) styled with a Terraviz-accent left
border, three short body paragraphs covering what SOS is,
why most people never see one, and how Terraviz closes the
gap. Right column: figure with two side-by-side dashed-
border placeholders ("SOS installation photo" and "Terraviz
on a phone") plus a centered "Same data, no museum
required." caption. Real photo + screenshot drop in
alongside the rest of the asset follow-up.
§3 What you can do — feature gallery. Seven cards in a
3-column grid (drops to 2 at 900px, 1 at 600px). Each card:
- Inline SVG icon (24×24 stroke-based) tinted with the
Terraviz accent on a light blue background tile
- §-anchor label in monospace
- Title
- 1-2 line description
- "Read more" CTA arrow that animates on hover
Cards link to the deeper sections by anchor:
Photoreal globe (§4), Multi-globe comparison (§5),
Tours — data-driven storytelling (§6), Orbit (§7),
Immersive AR/VR (§8), Multi-platform (§9), Federated
catalog (§10).
The Tours card carries the "today: AI-authored, human-
reviewed; soon: Orbit-authored on demand" framing locked
in earlier so the through-line is visible from the first
scroll. The Multi-platform card names PR #33 explicitly to
match the §9 framing.
CSS additions, all scoped:
- .section__eyebrow — shared eyebrow type used by §2 + §3
- .mission__container / __copy / __lede / __close /
__visual / __pair / __ph / __caption
- .features__container / __title / __intro
- .feature-grid + .feature-card and its sub-elements,
hover/focus state with translate-Y + accent border +
subtle blue-tinted box-shadow
Hero unchanged. Sections 4-14 still ship as placeholders.
Build: 33428 bytes, 1059 lines. Re-running build_poster.py
produces byte-identical output (determinism check passes).
https://claude.ai/code/session_011bkaCDBaTRH1TzGb4FjSkR
Signed-off-by: Claude <noreply@anthropic.com>
Hackshaven
pushed a commit
that referenced
this pull request
May 2, 2026
Visitors don't need internal commit history on the poster.
Audited every partial for "P{N}", "Phase {N}", and PR
references; rewrote the copy in terms of "today" vs.
"in flight" / "awaiting handler" / "coming soon" instead.
Changes:
- sec-01-hero.html — placeholder-logo HTML comment loses
"P1 follow-up" → "asset follow-up".
- sec-03-features.html — Multi-platform feature card drops
"in-flight via PR #33" → "in flight".
- sec-04-globe.html — effect-note rewritten:
"land in P12 (SPA-side handlers). Until then..."
→ "SPA-side handlers ... are still in flight. Until they
land, clicking a button loads the live app at its default
view rather than the requested effect."
- sec-05-multiglobe.html — same treatment for the layout
toggle effect-note ("awaiting its SPA-side handler").
- sec-06-tours.html — same for the tour-launcher
effect-note.
- sec-07-orbit.html — same for the chat/character toggle
effect-note.
- sec-10-federation.html — Today shipped card body changes
from "Phase 1a is live in this repo:" to "Live in this
repo today:". The "Today · shipped" / "Forthcoming ·
drafted" tags on the diptych are kept — those are
status labels, not phase numbers.
- sec-09 / sec-11 / sec-12 / sec-13 / sec-14 placeholder
partials replace "Section content lands in P{N}." with
the simpler "Coming soon."
Verified: no remaining "P{N}", "Phase {N}", or "PR #{N}"
strings in the rendered output. The remaining "P"
mentions in the rendered HTML are all SSP1/SSP2/SSP5
(Shared Socioeconomic Pathways — real climate-model
identifiers used in §6 Tours).
Build deterministic at 156481 bytes / 4130 lines. HTML
tag balance unchanged.
https://claude.ai/code/session_011bkaCDBaTRH1TzGb4FjSkR
Signed-off-by: Claude <noreply@anthropic.com>
This was referenced Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 6 scaffolding from
docs/MOBILE_APP_PLAN.md. Adds the releaseworkflow for signed iOS and Android builds plus a step-by-step human
setup guide for the App Store and Play Console accounts.
The workflow is complete but will not run until signing secrets are
stored in GitHub. This PR is the "everything Claude can do" half;
the human half is documented in
docs/RELEASE_MOBILE.md.New files
.github/workflows/release-mobile.ymlTwo parallel jobs triggered on
v*tags or manualworkflow_dispatch:iOS → TestFlight:
macos-26(Xcode 26, free for public repos)base64-encoded GitHub secrets into a temporary keychain
tauri ios build --export-method app-store-connectxcrun altoolwith App Store Connect API keyAndroid → Play Console Internal Testing:
ubuntu-latestwith JDK 17 + Android SDK 36key.propertiesfor Gradle signing configtauri android build --aabr0adkll/upload-google-play@v1docs/RELEASE_MOBILE.mdStep-by-step human setup guide (~200 lines):
Part 1 — iOS (7 steps):
Part 2 — Android (8 steps):
keytoolPlus a first-release checklist and troubleshooting section covering
common errors (provisioning mismatch, API auth failures, keystore
tampering, version code conflicts).
Secrets required (12 total)
APPLE_CERTIFICATE_BASE64,APPLE_CERTIFICATE_PASSWORD,APPLE_PROVISIONING_PROFILE_BASE64,APPLE_DEVELOPMENT_TEAM,APP_STORE_CONNECT_API_KEY_ID,APP_STORE_CONNECT_API_ISSUER_ID,APP_STORE_CONNECT_API_KEY_BASE64ANDROID_KEYSTORE_BASE64,ANDROID_KEY_ALIAS,ANDROID_KEY_PASSWORD,ANDROID_STORE_PASSWORD,GOOGLE_PLAY_SERVICE_ACCOUNT_JSONWhat's NOT in this PR
https://claude.ai/code/session_01J5NptMVPCR5LY6REBZus8B