Skip to content

fix: clarify client release channels - #45

Open
tmad4000 wants to merge 2 commits into
mainfrom
feat/clarify-client-release-channels
Open

fix: clarify client release channels#45
tmad4000 wants to merge 2 commits into
mainfrom
feat/clarify-client-release-channels

Conversation

@tmad4000

@tmad4000 tmad4000 commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Intent

Clarify OpenChat's client hierarchy for an early project. Do not encourage public installation or TestFlight enrollment for the actual native iOS or Android apps; keep native builds as private experiments. Treat the shared apps/mobile React Native/Expo implementation as the forward path for mobile web and responsive desktop web, but label both /m and /d clearly as experimental previews while under active development. Mark the older apps/web Vite client at /legacy as out of date and potentially missing features, retaining it only as a compatibility fallback. Remove native acquisition links from the public landing page, per-user invite landing page, and both client settings/invite surfaces. Document the architecture: /m and /d share one codebase; /d uses a master-detail layout at desktop widths and is PWA-installable. Preserve web/mobile parity and include regression coverage for these release-channel labels and link constraints.

What Changed

  • Reframe public landing, invite, and settings surfaces around the experimental /m and /d web previews while removing public TestFlight and Android acquisition links.
  • Mark /legacy as an out-of-date compatibility fallback and document the shared React Native web architecture, desktop master-detail/PWA behavior, and private native builds.
  • Add regression coverage for release-channel labels and the absence of native download links from public and in-app acquisition surfaces.

Risk Assessment

🚨 High: The implementation removes acquisition links from the named app surfaces, but a public TestFlight enrollment path remains documented and authenticated /m users lack the clear release-channel label required by the stated intent.

Testing

After installing the locked dependencies, the focused release-channel regression test passed; desktop and mobile-responsive browser checks confirmed the intended hierarchy, route selection, private-native messaging, legacy warning, and absence of acquisition links, with screenshots captured. A direct Expo login render was attempted but its dev server did not respond, and all transient files were cleaned up.

  • Evidence: Desktop landing-page release channels (local file: /var/folders/7w/cfzyk2q1135bh_qr4jsm7ft40000gp/T/no-mistakes-evidence/01M1GVNYJ2YE0M8JJQ5DP3M25A/release-channels-desktop.png)
  • Evidence: Narrow/mobile landing-page release channels (local file: /var/folders/7w/cfzyk2q1135bh_qr4jsm7ft40000gp/T/no-mistakes-evidence/01M1GVNYJ2YE0M8JJQ5DP3M25A/release-channels-narrow-web.png)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - 2 issues (1 error, 1 warning)
  • 🚨 docs/gcp-production.md:25 - The requirement says native builds must remain private and must not encourage public TestFlight enrollment, but the public tester guide still publishes the external join URL and step-by-step enrollment instructions (docs/testers.md:14-28), contradicting this new “Internal development only” claim. Remove the public join link and describe invitation-only/private testing instead, or explicitly approve the tester guide as an exception.
  • ⚠️ apps/mobile/src/components/MasterDetailLayout.tsx:287 - The requirement says to “label both /m and /d clearly as experimental previews,” but this persistent badge was added only to the desktop master-detail path. An already-authenticated user opening /m goes directly to ConversationsScreen, whose visible header only says “Chats”; the experimental label appears only on login or inside Settings. Put the release label at shared authenticated chrome so both paths expose it, or confirm that landing/login/settings-only labeling is intended.
✅ **Test** - passed

✅ No issues found.

  • npx vitest run test/releaseChannels.test.ts (initially blocked by missing dependencies, then passed after npm ci --ignore-scripts)
  • Rendered apps/server/src/landing.html at 1440×1100 and inspected visible release labels and link destinations
  • Emulated a 390×844 mobile viewport and verified a 390px document width, /m/ hero routing, mobile-first preview ordering, and zero TestFlight/APK links
  • Captured desktop and 500×900 narrow-browser screenshots using headless Chrome
  • Attempted to render the shared Expo client with CI=1 IS_WEB_BUILD=1 OPENCHAT_BASE_URL=/m npx expo start --web --port 8089; Metro started but did not serve a response, so no client screenshot was retained
  • Removed installed dependencies and unsuccessful transient evidence after testing; verified the worktree remained unchanged
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant