Skip to content

fix(mobile): keep repo picker search placeholder on one line - #6348

Open
iscekic wants to merge 1 commit into
mainfrom
kwf/explorer-repo-picker-the-search-repositories-placeholder-283900-0576
Open

iscekic wants to merge 1 commit into
mainfrom
kwf/explorer-repo-picker-the-search-repositories-placeholder-283900-0576

Conversation

@iscekic

@iscekic iscekic commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Changelog for users

  • The repository picker's "Search repositories…" placeholder stays on one line and truncates with an ellipsis in a narrow field instead of wrapping onto a second line clipped by the field border.
  • Typing replaces the placeholder at the same position, with no vertical or horizontal shift.

Changelog for maintainers

  • The search input no longer uses React Native's native placeholder; a single-line Text overlay draws the copy and unmounts once text is entered.
  • The overlay is absolutely positioned over the input with pointerEvents="none", so taps still reach the field and the field keeps its fixed height.
  • The input and overlay share leading-[normal] and a centred text rect, so the placeholder and the typed text align.
  • The input also gains textAlignVertical="center".
  • A new mounted test asserts the input has no placeholder, the overlay is single-line tail-ellipsized, and the overlay disappears after typing.
  • No translation catalog changes; the existing placeholder copy is reused.
  • Review hint: check placeholder truncation at very narrow widths and that tapping the overlay still focuses the input.

E2E proof

[e1] On emulator-5554 at display size 480x1040 portrait (night mode), open the repo picker (New session -> Run on -> Select repository): the 'Search repositories…' placeholder renders on one line… — android/emulator-5554: e1-picker.log shows the EditText with hint="" showing-hint="false" bounds [130,1414][1017,1489] and a single overlay TextView text="Search repositories..." bounds [130,1425][1016,1476] (one 51px line, centre y=1450.5 = field centre 1451.5) — the native hint is gone so nothing wraps; e1.png captured for the visual reviewer.

[e1] On emulator-5554 at display size 480x1040 portrait (night mode), open the repo picker (New session -> Run on -> Select repository): the 'Search repositories…' placeholder renders on one line… — e2e-mobile-app/e1.png

[e2] In the same repo picker, type a query: the placeholder disappears and the typed text occupies the same position with no vertical or horizontal shift. — android/emulator-5554: e2-typed.log shows the EditText text="tax" hint="" and the placeholder TextView count is 0 in e2-hierarchy.xml (node absent), while the list filtered to iscekic/tax-report-generator; the absolutely-inset overlay is removed from the fixed-height input so no position shift is possible; e2.png captured for the visual reviewer.

[e2] In the same repo picker, type a query: the placeholder disappears and the typed text occupies the same position with no vertical or horizontal shift. — e2e-mobile-app/e2.png

E2E proof — log excerpts

[e1] On emulator-5554 at display size 480x1040 portrait (night mode), open the r -> pass :: android/emulator-5554: e1-picker.log shows the EditText with hint="" showing-hint="false" bounds [130,1414][1017,1489] and a single overlay TextView text="Search repositories..." bounds [130,1425][1016,1476] (one 51px line, centre y=1450.5 = field centre 1451.5) — the native hint is gone so nothing wraps; e1.png captured for the visual reviewer.
[e2] In the same repo picker, type a query: the placeholder disappears and the t -> pass :: android/emulator-5554: e2-typed.log shows the EditText text="tax" hint="" and the placeholder TextView count is 0 in e2-hierarchy.xml (node absent), while the list filtered to iscekic/tax-report-generator; the absolutely-inset overlay is removed from the fixed-height input so no position shift is possible; e2.png captured for the visual reviewer.
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-repo-picker-the-search-repositories-placeholder-283900-0576/e2e-mobile-app/e1-picker.log
<redacted>
<redacted>
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-repo-picker-the-search-repositories-placeholder-283900-0576/e2e-mobile-app/e2-typed.log
<redacted>
0
Owner request

Explorer finding: repo-picker: The "Search repositories…" placeholder wraps onto a second line that is clipped by the field border.

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: repo-picker
Found on revision: fd04ca1

Repro:

  1. set this state first: account e2e-mobile-cloud-android@example.com signed in via emailed code (~$258.98 credits), Code Reviewer seeded with 3 pull requests (the checks state is blocked by a harness preflight: tracked edits present), a second organization to switch to, one needs-input session; system night mode, display size 480x1040, portrait.
  2. open the app on emulator-5554
  3. reach the screen the capture names (repo-picker)
  4. the capture shows the defect named below

Observed: The "Search repositories…" placeholder wraps onto a second line that is clipped by the field border.
Expected: the screen renders without this defect

Evidence (from the device run):

Open findings (not fixed here)

  • not proved live: repo-picker.png is no longer on the host that took it, so no publish can carry it

Explorer finding: repo-picker: The "Search repositories…" placeholder wraps onto a second line that is clipped by the field border.

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: repo-picker
Found on revision: fd04ca1

Repro:
1. set this state first: account e2e-mobile-cloud-android@example.com signed in via emailed code (~$258.98 credits), Code Reviewer seeded with 3 pull requests (the `checks` state is blocked by a harness preflight: tracked edits present), a second organization to switch to, one needs-input session; system night mode, display size 480x1040, portrait.
2. open the app on emulator-5554
3. reach the screen the capture names (repo-picker)
4. the capture shows the defect named below

Observed: The "Search repositories…" placeholder wraps onto a second line that is clipped by the field border.
Expected: the screen renders without this defect

Evidence (from the device run):
- ~/.local/share/kwf/findings/explorer-repo-picker-the-search-repositories-placeholder-283900c3/repo-picker.png
@kilo-code-bot

kilo-code-bot Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

The repo picker placeholder was moved from the native TextInput hint to an absolutely-positioned, single-line, tail-ellipsized Text overlay (pointerEvents="none"), and the new mounted test asserts the hint is gone, the overlay truncates, and it disappears on input; no correctness, security, or memory issues were found in the changed lines.

Files Reviewed (2 files)
  • apps/mobile/src/app/(app)/agent-chat/repo-picker.tsx
  • apps/mobile/src/components/agents/picker-search.mounted.test.tsx

Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@iscekic

iscekic commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator Author

This description names a scenario the proof did not capture:

  • not proved live: repo-picker.png is no longer on the host that took it, so no publish can carry it

A repeated proof run rebuilds the same evidence, so no proof run is dispatched for a named gap. Merging with this gap open is your decision.

@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 19, 2026
@iscekic iscekic self-assigned this Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant