fix(mobile): keep Filter sessions sheet actions visible in short windows - #6460
Merged
iscekic merged 2 commits intoSep 21, 2026
Conversation
Explorer finding: agents-filter: The Filter sessions sheet header shows only its centered title, with no visible Cancel or Apply control even though the sheet requires a way to confirm or dismiss the filters. The user-agent explorer found this while using the app like a user. One finding per item; the explorer never edits product code. Flow: agents-filter Found on revision: f2181ae Repro: 1. set this state first: credits 30; reviews 5; org; density 560; uimode day; battery 18 discharging; relaunch; the device in light mode 2. open the app on emulator-5602 3. reach agents-filter 4. the capture shows the defect named below Observed: The Filter sessions sheet header shows only its centered title, with no visible Cancel or Apply control even though the sheet requires a way to confirm or dismiss the filters. Expected: the screen renders without this defect Evidence (from the device run): - ~/.local/share/kwf/findings/explorer-agents-filter-the-filter-sessions-sheet-header-s-043cb615/agents-filter.png
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryReviewed the mobile Filter sessions sheet fix (window/safe-area height cap, centered inset padding, shrink-scrolling option list) and its accompanying tests; no defects found in the changed lines. Files Reviewed (3 files)
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
Collaborator
Author
|
This description names a scenario the proof did not capture:
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. |
eshurakov
approved these changes
Sep 21, 2026
eshurakov
left a comment
Contributor
There was a problem hiding this comment.
Approved after a shallow triage pass. No blocking findings.
…s-sheet-header-s-043cb-f21d
iscekic
deleted the
kwf/explorer-agents-filter-the-filter-sessions-sheet-header-s-043cb-f21d
branch
September 21, 2026 19:08
This was referenced Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changelog for users
Changelog for maintainers
pt-[20%]pushed the pinned action row past the bottom of short landscape windows.pt-[20%]to centered content with explicitpaddingTop/paddingBottominset padding.ScrollViewgainsshrink, so it scrolls within the capped card while the header and action row stay fixed.useWindowDimensionsanduseSafeAreaInsets, and cover both the window cap and the inset-reserved cap.react-native-safe-area-contextbecause its modalimportOriginalpulls in that package's untranspiledsrc/entry.windowHeight - insets.top - insets.bottom - SHEET_EDGE_MARGIN * 2and theMath.max(0, …)floor.E2E proof
[e2] ux-check: Open the sheet when there are few options (empty project section): the short card renders its Cancel/Apply row at the card's bottom edge with no clipped content and no vertical jump. — android emulator-5554, landscape 2400x1080 (short window); SCENE e2 OK. Digest: sheet card 'Filter sessions' [55,215][2345,865]; option rows PLATFORM CLI [101,400][2299,492] and PROJECT Kilo-Org/cloud [101,575][2299,667]; 'Cancel' [1933,703][2114,818] and 'Apply' [2141,703][2299,818] both sit below the last option row and inside the card bottom (818 < 865) and window bottom (865 < 1080), so the action row is present and unclipped. Two consecutive opens report identical bounds (e2-scene.log lines 45-58 and 59-72), i.e. no vertical shift between opens; the motion/appearance judgement belongs to…
[e4] ux-check: scroll the open Filter sessions sheet to its last platform/project row; every option reachable and selectable, list scrolls independently, Cancel/Apply row stays pinned — android emulator-5554: p4bottom-scene.xml shows the list scrolled to its end with the last project row text="acme/widgets" bounds="[202,686][2272,732]" and the PROJECT header shown, while the action row kept the exact top-of-list bounds Cancel [1972,827][2074,873] / Apply [2177,827][2261,873] (p4top-scene.xml) - pinned through the scroll; the last row is selectable (e4-row-selected.txt: content-desc="acme/widgets" checkable="true" checked="true") and applying it filtered the list to text="WIDGETS" with content-desc="Filter sessions, 1" (p4applied-scene.xml). The scripted e4 scene could not…
[e4] ux-check: scroll the open Filter sessions sheet to its last platform/project row; every option reachable and selectable, list scrolls independently, Cancel/Apply row stays pinned
[e1] [landscape short window] Filter sessions sheet bounded in landscape (android) — android, landscape 2400x1080: e1-scene.log line 1 'SCENE e1 OK'; its digest shows window [0,0][2400,1080] with PLATFORM [101,405][2299,442], Cancel [1933,653][2114,768] and Apply [2141,653][2299,768] all inside it, and the scripted Cancel closed the sheet (absent Apply) before it was reopened; the still for the visual reviewer is e1.png (sheet open in landscape) — no UX-DEFECT on the sheet or the Agents list.
[e2] ux-check: Open the sheet when there are few options (empty project section): the short card renders its Cancel/Apply row at the card's bottom edge with no clipped content and no vertical jump.
[e8] ux-check: rotate the device while the sheet is open; the sheet re-fits the window with no option or button clipped and the action row still visible — android emulator-5554: in landscape probe8L-scene.xml shows only Cloud..GitHub with GitHub clipped at bounds="[202,738][2272,756]"; after rotating to portrait with the sheet still open, e8-portrait-snapshot.txt lists all seven platform options (Cloud, Extension, CLI, Slack, GitHub, Linear, Other), the PROJECT rows and CheckBox "acme/widgets" [checked], plus Button "Cancel" and Button "Apply" - no option or button clipped, action row visible; e8-portrait-sheet.png is the same moment at 1080x2400. The rotation is an OS action with no scene step and appium re-orients to landscape per session…
[e2] Filter sessions sheet: Apply commits, count announced, reopened sheet checked — android emulator-5604 portrait (STATE HIT signed-in-home, sim-tool rotate portrait); the account has no 'Extension' platform (e2-sheet-open.txt lists only content-desc="CLI" and content-desc="Kilo-Org/cloud"), so per the runbook the parked step was edited to the sheet's own CLI row: SCENE e2 OK (e2-scene.log), the closed sheet's filter button carried content-desc="Filter sessions, 1" (e2-filtered.txt) proving the confirm commits, and the reopened portrait content-height card [55,908][1025,1557] showed content-desc="CLI" checkable="true" checked="true" with Cancel [652,1430][754,1476] and…
E2E proof — log excerpts
/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-agents-filter-the-filter-sessions-sheet-header-s-043cb-f21d/e2e-mobile-app/e2-sheet-short.log/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-agents-filter-the-filter-sessions-sheet-header-s-043cb-f21d/e2e-mobile-app/e2-scene.log/home/igor_kilocode_ai/.local/share/kwf/sections/explorer-agents-filter-the-filter-sessions-sheet-header-s-043cb-f21d/e2e-mobile-app/scripted-e1.logOwner request
[e6] ux-check: sheet action row sits above the bottom inset — android emulator-5604 portrait with gesture bar; opened sheet SCENE e6 OK renders the action row inside the card (Filter sessions card [55,908][1025,1557]) with Cancel [613,1396][794,1511] and Apply [821,1396][979,1511] inside the content frame [0,0][1080,2400] and 684px above the app's bottom tab bar [0,2195][360,2337] (e6-list.txt), so neither the status bar nor the navigation/gesture area can overlap it and the row is hittable (Apply at those exact bounds committed in e2, e2-scene.log SCENE e2 OK); no UX-DEFECT observed (no layout shift, duplicate spinner, or missing state); pixel…
[e4] ux-check: scroll the open Filter sessions sheet to its last platform/project row; every option reachable and selectable, list scrolls independently, Cancel/Apply row stays pinned — android emulator-5554: p4bottom-scene.xml shows the list scrolled to its end with the last project row text="acme/widgets" bounds="[202,686][2272,732]" and the PROJECT header shown, while the action row kept the exact top-of-list bounds Cancel [1972,827][2074,873] / Apply [2177,827][2261,873] (p4top-scene.xml) - pinned through the scroll; the last row is selectable (e4-row-selected.txt: content-desc="acme/widgets" checkable="true" checked="true") and applying it filtered the list to text="WIDGETS" with content-desc="Filter sessions, 1" (p4applied-scene.xml). The scripted e4 scene could not…
Follow-ups (not changed here)
$KILO_WORKFLOW/v2/bin/sim-tool.sh --device <serial> --platform android rotate landscape, then restore start state signed-in-home (its tab-bar assert holds in landscape). Reach the Agents tab and open the Filter sessions sheet: the sheet's PLATFORM list AND its Cancel/Apply row are both inside the window (on the unfixed tree the action row sits ~350dp below the bottom edge), and Cancel closes the sheet without applying. The scene ends with the sheet open, so its still shows the bounded sheet in landscape — that still is the required visual evidence for this fix. (no capture cited it)$KILO_WORKFLOW/v2/bin/sim-tool.sh --device <serial> --platform android rotate portrait), then restore start state signed-in-home. On the Agents tab, open the Filter sessions sheet, tap the sheet's own 'Extension' platform row, then Apply: the sheet closes and the filter button now announces the applied count ('Filter sessions, 1'), proving the confirm control is reachable and commits. Reopen the sheet so the still shows the portrait content-height sheet with the selection checked and Cancel/Apply visible. (no capture cited it)Open findings (not fixed here)