fix(mobile): ConnectMacGate paste-IP hero (2026 stranger UX) - #787
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 69e89fef14
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <ManualComputerAddressForm | ||
| heroMode | ||
| testIDPrefix="connect-manual" | ||
| onAddProfile={handleManualProfileAdded} |
There was a problem hiding this comment.
Restore numbered cold-start onboarding steps
For a first launch with no saved Mac, this now replaces FreshUserOnboardingCard with only the paste-IP form while preserving the old connect-mac-onboarding-card testID; brand-new users no longer get the numbered setup steps, and the existing Tailscale onboarding Maestro flow still asserts fresh-user-step-1/fresh-user-step-4, so that real-user path either loses required guidance or fails E2E when run.
AGENTS.md reference: hermes-mobile/AGENTS.md:L51-L53
Useful? React with 👍 / 👎.
Greptile SummaryThis PR updates mobile connect surfaces to focus on pasting a Mac Tailscale IP. The main changes are:
|
| Filename | Overview |
|---|---|
| hermes-mobile/src/components/ConnectMacGate.tsx | Redesigns the first-run gate around a paste-IP hero, but removes the required numbered cold-start onboarding steps and demotes the required Find computers primary path. |
| hermes-mobile/src/components/ManualComputerAddressForm.tsx | Adds hero/picker paste-IP copy and layout variants while preserving manual connection validation and persistence flow. |
| hermes-mobile/src/utils/tailscalePasteIpCopy.ts | Introduces shared Tailscale paste-IP copy constants used by gate, picker, and scan fallback surfaces. |
| hermes-mobile/src/screens/ChatScreen.tsx | Updates the Choose computer subtitle to point users toward the paste-IP fallback alongside Find computers. |
| hermes-mobile/src/utils/lanScanLabels.ts | Replaces zero-found scan copy with a neutral title and paste-IP fallback detail. |
| hermes-mobile/src/tests/ConnectMacGate.test.tsx | Updates gate tests for the paste-IP redesign, including an assertion that the prior fresh-user numbered step is absent. |
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
hermes-mobile/src/components/ConnectMacGate.tsx:240-245
**Restore cold-start steps**
This replaces the required fresh-user onboarding card with only the paste-IP form, so a brand-new user no longer sees the numbered setup steps or the required `Find computers` primary path. The mobile contract says first launch must show `ConnectMacGate` + numbered steps + `Find computers`, so this ships a disconnected onboarding regression even though the test now asserts `fresh-user-step-1` is absent.
Reviews (1): Last reviewed commit: "fix(mobile): ConnectMacGate paste-IP her..." | Re-trigger Greptile
| <View style={styles.heroBlock} testID="connect-mac-onboarding-card"> | ||
| <ManualComputerAddressForm | ||
| heroMode | ||
| testIDPrefix="connect-manual" | ||
| onAddProfile={handleManualProfileAdded} | ||
| /> |
There was a problem hiding this comment.
Restore cold-start steps
This replaces the required fresh-user onboarding card with only the paste-IP form, so a brand-new user no longer sees the numbered setup steps or the required Find computers primary path. The mobile contract says first launch must show ConnectMacGate + numbered steps + Find computers, so this ships a disconnected onboarding regression even though the test now asserts fresh-user-step-1 is absent.
Artifacts
Repro: generated cold-start React Native Testing Library harness
- Contains supporting evidence from the run (text/tsx; charset=utf-8).
- Keeps the command output available without making the summary code-heavy.
Ran code and verified through T-Rex
Prompt To Fix With AI
This is a comment left during a code review.
Path: hermes-mobile/src/components/ConnectMacGate.tsx
Line: 240-245
Comment:
**Restore cold-start steps**
This replaces the required fresh-user onboarding card with only the paste-IP form, so a brand-new user no longer sees the numbered setup steps or the required `Find computers` primary path. The mobile contract says first launch must show `ConnectMacGate` + numbered steps + `Find computers`, so this ships a disconnected onboarding regression even though the test now asserts `fresh-user-step-1` is absent.
How can I resolve this? If you propose a fix, please make it concise.56a2b19 to
456398c
Compare
456398c to
84ff02b
Compare
84ff02b to
864976a
Compare
|
Blocking issues found in the current diff: plan.md contains literal merge-conflict markers, the new copy repeatedly hardcodes Mac, and the 12:58 device screenshot still requires scrolling before all machines and actions are visible. Acceptance must be platform-neutral computer wording, no conflict markers, machine rows before help text, stacked full-width actions, and primary choices visible in one normal-phone viewport. |
864976a to
5d4fccf
Compare
1596948 to
d884ce0
Compare
17ac5d4 to
ac4ca0b
Compare
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
ac4ca0b to
42caad5
Compare
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Stranger-first gate: opaque sheet, Paste Tailscale IP as dominant action, Find computers/QR secondary; same copy SSOT for Choose computer picker. Removes numbered step essay and Hermes Relay zero-found pitch on gate/picker. Co-authored-by: Cursor <cursoragent@cursor.com>
15e6b5f to
dc57be6
Compare
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Status region and manual form both show the paste-IP title after #787; collapsed help exposes “Missing another computer?” on the link row. Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Status region and manual form both show the paste-IP title after #787; collapsed help exposes “Missing another computer?” on the link row. Co-authored-by: Cursor <cursoragent@cursor.com>
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Status region and manual form both show the paste-IP title after #787; collapsed help exposes “Missing another computer?” on the link row. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Paste-IP hero / demoted onboarding landed on |
Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com>
Status region and manual form both show the paste-IP title after #787; collapsed help exposes “Missing another computer?” on the link row. Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(mobile): dense Choose computer modal — profiles above fold Reorder mac picker so saved computers render first, collapse idle teal help when profiles exist, and use compact paste-IP row (#787 copy). Incorporates Co-authored-by: Cursor <cursoragent@cursor.com> * test(mobile): align Mac picker tests with #787/#801 copy Empty-state help uses paste-IP title; saved-profile idle help collapses to “Missing another computer?” link instead of legacy accordion headings. Co-authored-by: Cursor <cursoragent@cursor.com> * test(mobile): Mac picker asserts tolerate duplicate paste-IP copy Status region and manual form both show the paste-IP title after #787; collapsed help exposes “Missing another computer?” on the link row. Co-authored-by: Cursor <cursoragent@cursor.com> * test(mobile): allow duplicate paste-IP detail in Mac picker Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
#0F1321sheet, Paste your Mac's Tailscale IP as the hero (input + Connect on first viewport), one-sentence context, Find computers demoted to secondary, Scan QR as text link.tailscalePasteIpCopy.tsSSOT; picker subtitle, scan zero-found, and help fallback copy aligned.Before → after (key strings)
Out of scope: header "Hermes account relay" (T-RELAY-COPY-TS / terra-relay-copy-ts).
Test plan
connect-mac-gate,connect-mac-onboarding-card,connect-search-wifi,connect-manual-inputlatest.jsone2e=skipped — simruntime overload; not claiming device pass)Made with Cursor