fix(mobile): stop Choose computer modal jitter - #786
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
ba0f68c to
8ecc93d
Compare
Greptile SummaryThis PR reduces Choose computer modal jitter by making background discovery quieter and stabilizing Android keyboard lift. The main changes are:
|
| Filename | Overview |
|---|---|
| hermes-mobile/src/context/GatewayContext.tsx | Introduces silent/background Tailscale probe options, removes health tick coupling, and rate-limits automatic discovery. |
| hermes-mobile/src/screens/ChatScreen.tsx | Marks picker/help-triggered probes as explicit UI probes so Find computers and modal open still show searching state. |
| hermes-mobile/src/components/BottomSheetModal.tsx | Adds a 160ms debounced Android keyboard lift for bottom sheets. |
| hermes-mobile/src/utils/tailscaleProbeCadence.ts | Adds the shared 30s background probe cadence helper and probe options type. |
| hermes-mobile/src/tests/BottomSheetModal.test.tsx | Updates bottom sheet tests to cover delayed keyboard lift behavior with fake timers. |
| hermes-mobile/src/tests/tailscaleProbeCadence.test.ts | Covers first, suppressed, and allowed background Tailscale probe cadence cases. |
Reviews (2): Last reviewed commit: "fix(mobile): stop Choose computer modal ..." | Re-trigger Greptile
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba0f68c244
ℹ️ 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".
| - 2026-07-21T23:55:00Z `codex-thumbgate-provider-logout`: **Expanded the P0 acceptance contract to signed-out copy.** The screenshot showed the public landing correctly reporting `SIGN-IN REQUIRED`, but the card and primary CTA still said `Open private dashboard` / `Open Hermes on the web`. Those controls route to AuthKit, yet their wording falsely implies that private access is available before authentication. The signed-out render will now say `Sign in` explicitly while the provider-session revocation fix closes the silent-reentry path. | ||
| - `hermes-mobile/src/screens/ChatScreen.tsx` (session-list refresh/reconnect selection only; no overlap with T-PROJECT-LANE-HEADER-GONE's project-lane row removal), `hermes-mobile/src/utils/sessionListSelection.ts`, `hermes-mobile/src/__tests__/sessionListSelection.test.ts`, `plan.md` → **claude-code-mobile-cron-evict** (T-MOBILE-CRON-EVICT-20260722: stop the open scheduled-job thread from being silently swapped for a different session on reconnect) (2026-07-22T08:15:00Z) | ||
| - T-MOBILE-CRON-EVICT-20260722 claimed files above → **released by claude-code-mobile-cron-evict** after `ensureCurrentSessionSelectable` fix landed, focused suites green (sessionListSelection.test.ts 19/19, ChatScreen.test.tsx 61/61), and tsc clean (2026-07-22T08:16:00Z) | ||
| <<<<<<< Updated upstream |
There was a problem hiding this comment.
Remove unresolved conflict markers from plan
This commits raw conflict markers into plan.md, including a duplicate ## Decisions Log branch, so the shared coordination board now has mutually-exclusive versions of the latest claims/release log and git diff --check reports leftover conflict markers. Since agents rely on this file as the single source of truth before touching files, leaving this unresolved makes ownership/release state ambiguous; resolve the conflict and append the picker release entry under the existing log.
AGENTS.md reference: AGENTS.md:L14-L22
Useful? React with 👍 / 👎.
| if (tailscaleProbeInFlightRef.current) { | ||
| return; |
There was a problem hiding this comment.
Keep picker probing visible during silent in-flight scans
If a silent background probe has already started from the new showUi: false call paths, opening the Choose computer modal immediately calls probeTailscaleComputers({ showUi: true, force: true }), but this early return exits before setting tailscaleDiscoveryProbing. The picker status region therefore receives false and shows no searching/adding state while the scan is actually running, which regresses the stated foreground picker behavior whenever the modal is opened during an automatic probe; promote the in-flight probe to visible or track visible probing separately.
Useful? React with 👍 / 👎.
b9063dd to
21a1ba2
Compare
|
Device proof at 12:58 shows this PR addresses probe jitter only, not picker layout. The sheet still pushes the second machine and Find computers below the fold, uses a side-by-side Forget action that crushes the card, and retains Mac-only prose. Please keep this PR scoped to jitter and do not present it as complete picker UX; compact platform-neutral layout needs a coordinated follow-up after current owners release the files. |
d120bca to
ab7a64c
Compare
|
Closing/reopening to force a fresh CodeQL run after fixing the default-setup/advanced-config conflict repo-wide. |
Pull request was closed
ae94b00 to
30a982a
Compare
…cale probes Background discovery no longer flips the picker searching UI on every health tick; keyboard sheet lift is debounced so Android IME polls cannot bounce the modal. Co-authored-by: Cursor <cursoragent@cursor.com>
30a982a to
be16b91
Compare
Summary
health.checkedAttick or flip the Choose computer “searching” UITest plan
tailscaleProbeCadence+BottomSheetModal+ computer picker status JestMade with Cursor