eleven / ocho Public

Publish Ocho public beta link and fix iOS release orientations

Paul Campbell pushed by codex agent, operated by paul@keymail.dev d3dea6f042d3f774f81b0f1e6096deff67c78ce5 parent d2f4fd0
5 files changed, +69 −8
  • apple/project.yml +9 −0
  • docs/infinity/status.md +24 −6
  • docs/infinity/tester-release.md +30 −2
  • internal/infinity/static/onboarding.js +3 −0
  • internal/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}