Publish Ocho public beta link and fix iOS release orientations
5 files changed,
+69
−8
apple/project.yml+9 −0docs/infinity/status.md+24 −6docs/infinity/tester-release.md+30 −2internal/infinity/static/onboarding.js+3 −0internal/infinity/static/style.css+3 −0
diff --git a/apple/project.yml b/apple/project.yml| index 1276973..350fe61 100644 |
| --- a/apple/project.yml |
| +++ b/apple/project.yml |
| @@ -42,6 +42,15 @@ targets: |
| properties: |
| CFBundleDisplayName: Ocho |
| CFBundleName: Ocho |
| + UISupportedInterfaceOrientations: |
| + - UIInterfaceOrientationPortrait |
| + - UIInterfaceOrientationLandscapeLeft |
| + - UIInterfaceOrientationLandscapeRight |
| + UISupportedInterfaceOrientations~ipad: |
| + - UIInterfaceOrientationPortrait |
| + - UIInterfaceOrientationPortraitUpsideDown |
| + - UIInterfaceOrientationLandscapeLeft |
| + - UIInterfaceOrientationLandscapeRight |
| NSAppTransportSecurity: |
| NSAllowsLocalNetworking: true |
| CFBundleURLTypes: |
diff --git a/docs/infinity/status.md b/docs/infinity/status.md| index 8a57ccc..f4644fa 100644 |
| --- a/docs/infinity/status.md |
| +++ b/docs/infinity/status.md |
| @@ -39,11 +39,16 @@ identical bytes, profile sync and passkey history restoration. WebKit public |
| entry/name navigation also passes. These use virtual authenticators and do not |
| replace physical provider tests. |
| -Automatic approval review rejected both pushing the private branch and uploading |
| -the IPA to TestFlight pending explicit user authorization. No push, upload, tester |
| -invitation or merge occurred. Ownership checks confirm Paul owns `eleven/ocho` |
| -and the dedicated Codex account has the repository grant. Code is committed locally |
| -as `80c44170`; this record and the archive architecture correction follow it. |
| +Paul explicitly authorized the repository push and TestFlight upload. Commit |
| +`80c44170` was pushed successfully to `eleven/ocho` on `infinity-v1`. |
| +Paul created the missing App Store Connect record. Apple then rejected missing |
| +orientation metadata; after adding phone orientations and all four iPad orientations, |
| +the rebuilt 0.2.0 build 11 uploaded successfully on September 13 at 16:43 UTC. |
| +Apple reported that the uploaded package is processing. TestFlight availability, |
| +installation and tester invitations are not yet verified. No merge occurred. |
| +The documentation and orientation changes remain local. |
| +Build 11 was reinstalled in place and launched on Paul's iPhone to distinguish it |
| +from the preserved personal-team copy; chat continuity and push results await Paul. |
| The iPhone reports `chat.ocho.app` version 0.2.0 build 11. Android APK version 4's |
| signing fingerprint matches the live Digital Asset Links declaration. The Mac |
| package/archive targets Apple Silicon; Intel distribution is not provided. |
| @@ -51,7 +56,7 @@ package/archive targets Apple Silicon; Intel distribution is not provided. |
| Artifacts are under `.build/distribution/`: `ios/Infinity.ipa`, `mac/InfinityMac.pkg`, |
| `Ocho-Android-0.2.0-4.apk`, `Ocho-Mac-0.2.0-11.zip`, and `SHA256SUMS`. |
| Physical Android USB authorization, on-device passkey/notification results, |
| -Firebase configuration and the explicit push/upload approvals remain open. |
| +Firebase configuration and completion of TestFlight processing remain open. |
| ## Native connection status — September 8 |
| @@ -106,3 +111,16 @@ Source lives on isolated branch `infinity-v1` at https://amadan.net/eleven/ocho. |
| ## Limits |
| Early text chat: no independent cryptographic audit or double-ratchet forward secrecy. Servers observe routing metadata, timing, sizes, public keys and delivery capabilities. Group removal applies when a sender receives the update. Passkeys unlock the same account identity; independent device-key revocation is not implemented. Web clients trust code served by their origin. Voice/video, attachments, store distribution and Android push remain follow-ups. |
| + |
| +## App Store validation follow-up (Codex) |
| + |
| +Paul created the iOS App Store Connect record and authorized the build 11 upload. |
| +Apple then rejected the package because supported orientations were absent. |
| +The iOS manifest now declares phone orientations and all four iPad orientations, |
| +matching the existing universal native layout. The archive rebuild passed, its packaged plist was checked, and Apple accepted |
| +the upload and began processing. |
| +Apple also warned that the Go engine framework lacks a matching dSYM. |
| + |
| +The existing `ios/Infinity.ipa` and its checksum describe the earlier export before |
| +the orientation correction. The corrected `Infinity.xcarchive` was exported directly |
| +to Apple; that upload did not save a replacement local IPA. |
diff --git a/docs/infinity/tester-release.md b/docs/infinity/tester-release.md| index 41b46be..886faa9 100644 |
| --- a/docs/infinity/tester-release.md |
| +++ b/docs/infinity/tester-release.md |
| @@ -63,8 +63,36 @@ build 11. `Ocho-Android-0.2.0-4.apk` is a debug-signed APK, with the same finger |
| as the live Android passkey association. `Ocho-Mac-0.2.0-11.zip` is a signed local |
| development package for Apple Silicon, not a notarized public download. SHA-256 |
| checksums accompany these artifacts. The Mac Release archive also targets arm64, |
| -matching the shared framework. Upload was rejected by automatic approval review |
| -pending the user's explicit authorization; export success is not upload success. |
| +matching the shared framework. Paul authorized the upload and created its App Store Connect record. After fixing |
| +missing supported-orientation metadata, the rebuilt iOS build 11 uploaded successfully |
| +on September 13 at 16:43 UTC; Apple reported processing. TestFlight availability |
| +and installation are still unverified. The local IPA/checksum above is the earlier |
| +export; the corrected archive was exported directly to Apple. Apple warned that |
| +the shared Go framework lacks a matching dSYM, without blocking the upload. |
| The Mac archive also passed App Store Connect export validation; its package is |
| `.build/distribution/mac/InfinityMac.pkg`. It has not been uploaded or submitted. |
| + |
| +## Public beta rollout — September 13 (Codex) |
| + |
| +Paul requested a public TestFlight group capped at 1,000 testers and a download |
| +link on the Ocho homepage. He confirms TestFlight is available. Public external |
| +approval and group settings still require verification in Team Tito's account. |
| +The existing local API key authenticates but returns no Ocho app, so it cannot |
| +configure this release. Team Tito credential access is pending. |
| + |
| +Homepage placement: add “Download for iPhone” beneath Sign up / Sign in on the |
| +ordinary welcome screen, with “Beta via TestFlight” as secondary text. Use the |
| +verified Apple public invitation URL directly; do not show it in signup or |
| +invitation acceptance steps. Publish only after verifying the public group and |
| +its 1,000-tester limit, then check the live homepage link in a real browser. |
| + |
| +API setup verified September 13: Ocho app `6811637937`; external group |
| +`a61b5abc-18af-44a6-a179-6094de980e77` (“Ocho Public Beta”) contains build 11. |
| +Public link https://testflight.apple.com/join/YRNJueA8 is enabled with its |
| +limit enabled and set to 1,000. Existing “Public beta” is an internal group. |
| +External build state is READY_FOR_BETA_SUBMISSION; review contact email/phone |
| +and feedback email await Paul. No beta review submission has yet occurred. |
| +Homepage wording explicitly says awaiting Apple approval until the build is |
| +approved; this supersedes the earlier placement note to wait before publishing. |
| +The API key is held only in restricted temporary storage, never source control. |
diff --git a/internal/infinity/static/onboarding.js b/internal/infinity/static/onboarding.js| index 7c1e003..a740848 100644 |
| --- a/internal/infinity/static/onboarding.js |
| +++ b/internal/infinity/static/onboarding.js |
| @@ -72,6 +72,9 @@ export function welcome(root,params,ready,saved=null) { |
| shell.replaceChildren(mark(),el('h1',{},title),...(!params.code?[el('p',{class:'lead'},'Just you. And your people.')]:[]),note); |
| if(!saved) shell.append(button(params.code?'Sign up to accept':'Sign up',showName,{class:'primary'})); |
| shell.append(signIn); |
| + if(!params.code) shell.append(el('p',{class:'beta-download'}, |
| + el('a',{href:'https://testflight.apple.com/join/YRNJueA8',rel:'noreferrer'},'Get Ocho for iPhone'), |
| + el('span',{class:'footnote'},'TestFlight beta · awaiting Apple approval'))); |
| }; |
| form.addEventListener('submit',async event=>{ |
| event.preventDefault();note.replaceChildren(); |
diff --git a/internal/infinity/static/style.css b/internal/infinity/static/style.css| index 786f34b..1080016 100644 |
| --- a/internal/infinity/static/style.css |
| +++ b/internal/infinity/static/style.css |
| @@ -28,3 +28,6 @@ |
| /* 🤖 Safe destination cards: no remote thumbnails or automatic URL requests. */ |
| .link-cards{display:grid;gap:6px}.link-card{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid currentColor;border-radius:10px;color:inherit;text-decoration:none;max-width:100%;overflow-wrap:anywhere}.link-card span{font-size:.85em;opacity:.8}.attachment-download{color:inherit;background:transparent;border:1px solid currentColor;border-radius:10px;padding:10px;overflow-wrap:anywhere}.composer>.quiet{align-self:center} |
| + |
| +/* 🤖 Public iPhone beta entry; availability stays explicit during review. */ |
| +.beta-download{margin:1.5rem 0 0;text-align:center}.beta-download a{color:var(--accent);font-weight:600}.beta-download span{display:block;margin-top:.35rem}.beta-download a:focus-visible{outline:3px solid #a997f0;outline-offset:3px} |