Skip to content

fix(mobile): unify session lists and stabilize search transitions - #9038

Merged
iscekic merged 3 commits into
mainfrom
igor/mobile-session-ux
Oct 28, 2026
Merged

iscekic merged 3 commits into
mainfrom
igor/mobile-session-ux

Conversation

@iscekic

@iscekic iscekic commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator

Changes

  • Share the compact active-style header across active sessions and session history.
  • Use the historical eyebrow/title row layout on both lists.
  • Keep search mounted through blur, keyboard dismissal, clearing, and history state changes.
  • Let the native keyboard container own centered-body keyboard clearance.
  • Keep filter content mounted until native dismissal completes, then reset its draft on reopening.
  • Remove obsolete header controls and their implementation-specific tests.

Verification

  • Passed mobile typecheck, lint, unused-code, catalog, and NativeWind class checks on an isolated work VM.
  • Passed the scoped session screen, row, filter, content, and bottom-chrome test suites.
  • Verified both screens on an iOS simulator against an isolated backend and an owned fake account.
  • Exercised search, no-match results, keyboard dismissal, query clearing, filter Cancel/Apply, and draft reset.
  • Inspected frame recordings: filter content remains visible through dismissal, and the search header stays fixed.
  • Checked the native layouts for text clipping and control overlap.

Prerequisites

None. No secrets, migrations, configuration changes, or external setup are required.

Components

Reuses the existing ScreenHeader, session row, search input, FlashList, native Sheet, and keyboard container. No dependency changes or new UI framework.

@iscekic iscekic self-assigned this Oct 28, 2026
@iscekic

iscekic commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Verified both session pages on an iOS simulator with an isolated backend and an owned fake account. The screenshots show the shared header and row styling. The recording exercises filter Cancel, reopening with a reset draft, and Apply. Search remains visible after keyboard dismissal and clearing.

Active sessions

Session history

Search after clearing

session-ux-filter.mp4

Comment thread apps/mobile/src/components/agents/session-list-content.tsx Outdated
@kilo-code-bot

kilo-code-bot Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The one-line follow-up restores the gap-2 clearance between the reserved refresh band and the history rows, resolving the previous finding; no new issues in the incremental change.

Assumptions: [INFERENCE] Typecheck, lint, and the vitest suites were not run (read-only review). The prior inline comment is now outdated (line: null) and its reply documents device verification of the restored clearance.

Files Reviewed (1 file)
  • apps/mobile/src/components/agents/session-list-content.tsx
Previous Review Summary (commit 06b25a5)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 06b25a5)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The shared header/search and filter-sheet lifecycle refactor is coherent; the only finding is the removal of the history list's band-to-rows clearance that previously addressed a documented device defect.

Assumptions: [INFERENCE] Typecheck, lint, and the vitest suites were not run (read-only review). The permanent search-open state is intentional per the PR description. Reopening the filter sheet while its native dismissal is still in flight keeps SessionFilterContent mounted (the Sheet superseded-dismissal path), so the draft may not reset on that rapid reopen; this is an edge case I could not prove reachable.

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/mobile/src/components/agents/session-list-content.tsx 428 The gap-2 clearance between the reserved refresh band and the rows was removed together with its guard test; nothing else replaces the padding that fixed device defect p5.
Files Reviewed (21 files)
  • apps/mobile/src/components/agents/platform-filter-modal.mounted.test.tsx
  • apps/mobile/src/components/agents/platform-filter-modal.tsx
  • apps/mobile/src/components/agents/remote-session-row.tsx
  • apps/mobile/src/components/agents/session-history-screen.mounted.test.tsx
  • apps/mobile/src/components/agents/session-history-screen.pull-failure.mounted.test.tsx
  • apps/mobile/src/components/agents/session-history-screen.tsx
  • apps/mobile/src/components/agents/session-list-chrome.ts
  • apps/mobile/src/components/agents/session-list-content.mounted.test.tsx
  • apps/mobile/src/components/agents/session-list-content.tsx - 1 issue
  • apps/mobile/src/components/agents/session-list-header-actions.mounted.test.tsx (deleted)
  • apps/mobile/src/components/agents/session-list-header-actions.tsx (deleted)
  • apps/mobile/src/components/agents/session-list-header.tsx (new)
  • apps/mobile/src/components/agents/session-list-screen.mounted.test.tsx
  • apps/mobile/src/components/agents/session-list-screen.tsx
  • apps/mobile/src/components/agents/session-list-search-header.tsx
  • apps/mobile/src/components/agents/session-list-skeleton-rows.tsx
  • apps/mobile/src/components/agents/session-row.mounted.test.tsx
  • apps/mobile/src/components/home/agent-sessions-section.tsx
  • apps/mobile/src/components/ui/session-row.tsx
  • apps/mobile/src/lib/agents-bottom-chrome.ts
  • apps/mobile/src/test/renderer.ts

Fix these issues in Kilo Cloud


Reviewed by deepseek-flash-latest · Input: 27K · Output: 1.2K · Cached: 185.9K

Review guidance: REVIEW.md from base branch main

@iscekic

iscekic commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Verified the restored refresh clearance on an iOS simulator. The isolated backend rejected a pull while cached history remained visible. After scrolling, the clipped row stays below the refresh message and Retry. Restoring the backend and pressing Retry recovered without moving the header. The attached image is the full native capture.

History refresh recovery clearance

@iscekic
iscekic added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 6235226 Oct 28, 2026
82 checks passed
@iscekic
iscekic deleted the igor/mobile-session-ux branch October 28, 2026 17:50
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.

2 participants