Skip to content

fix(mobile): open Code Reviewer and Security Agent above the tabs - #8509

Merged
iscekic merged 11 commits into
mainfrom
drain/home-tab-on-explore-screens
Oct 23, 2026
Merged

iscekic merged 11 commits into
mainfrom
drain/home-tab-on-explore-screens

Conversation

@iscekic

@iscekic iscekic commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Evidence

Evidence: demonstrated — the pre-fix state was recorded on main during this pull request's earlier device run: opening Code Reviewer from the Home Explore row pushed a screen inside the Profile tab stack, so the bottom bar stayed on screen and reported Profile as selected. At the current head the same flow was re-run on the Android app against the local dev stack with a fixture account: the pushed Code Reviewer screen, its GitHub settings and recent reviews children, and Security Agent draw no bottom bar (their accessibility snapshots contain no tab nodes), returning to Home shows the bar again with Home selected, and a push from the Profile tab row still returns to Profile.

Change

  • Move Code Reviewer and Security Agent into the root app stack. Back returns to the originating tab; pushed screens have no selected tab, matching how PR Review already behaves from the same Home Explore list.
  • Keep public URL paths stable and update the shared universal-link destinations.
  • Share currentRouteHref between last-route and pending-deep-link restoration so persisted destinations written before the move still resolve to the relocated screens.
  • Preserve organization context, account binding, expiry, precedence, and single-shot pending-link delivery.
  • Retain search-index migration, root-stack bottom clearance, and the findings-list fallback for a finding opened without history.

Verification

Device run on the Android emulator against the local dev stack, fixture account, current head:

  • Home root: bar present, Home, tab, 1 of 4 reported selected="true".
  • Code Reviewer from the Home Explore row: no tab nodes on the pushed screen; the GitHub settings and recent reviews children behave the same.
  • Return to Home: Home, tab, 1 of 4 selected again.
  • Security Agent from the Home Explore row: no tab nodes; return keeps Home selected.
  • Relaunching the app while the relocated Code Reviewer route was open restored that route with no bar.
  • Code Reviewer from the Profile tab row pushes the same root-stack screen; return keeps Profile selected, so tab-stack pushes are unchanged.
  • Screenshots and the accessibility observations are attached in the device-run comment on this pull request.

Regression and static checks:

  • Four new pending-link regression cases failed before the follow-up fix and pass afterward.
  • Targeted navigation tests: 6 files, 167 tests passed.
  • Related persisted-navigation consumers: 160 files, 2822 tests passed.
  • Standalone Node smoke exercised restoration and consumption through the real pending-link module for both moved surfaces, with only storage and telemetry substituted.
  • Mobile typecheck passed after building the required workspace packages. Mobile lint, unused-export checks, formatting, and whitespace checks passed.
  • Prior follow-up full mobile suite: 1256 files, 18621 tests passed.
  • The unrelated worker integration timeout passed locally: 1 file, 8 tests.

Proxy answers

The owner's proxy gave these answers in the owner's place.

  1. Question: Navigation structure? Answer: Move both surfaces to the root stack. Confidence: 0.70 · Precedent: Fix the class of issue and replace old paths rather than duplicate them.
  2. Question: Unrelated base-branch dependency failure? Answer: Fix separately, retain this PR's scope, finish device verification, then merge main without rebasing. Confidence: 0.60 · Precedent: Separate concerns and resolve actionable blockers.
  3. Question: Back navigation without history? Answer: Return to the moved tree's findings list. Confidence: 0.80 · Precedent: Keep navigation within the relocated surface.
  4. Question: Temporary publication recovery? Answer: Use the existing judge credential temporarily, preserve gate rules, then restore original routing. Confidence: 0.70 · Precedent: Narrowly scoped infrastructure recovery.

The Home Explore shortcuts for Code Reviewer and Security Agent pushed
routes that live inside the Profile tab's stack, so expo-router switched
the tab navigator and the bottom bar drew Profile as the selected tab
while those screens were on top.

Move both route trees out of `(tabs)/(3_profile)` into the root stack,
like PR Review: the screens open above the tab bar, no tab is marked
selected while they are up, and going back returns to the tab the user
came from. URL paths are unchanged because group segments are not part
of a URL, and the shared universal-link table now targets the new
paths. A last-route record mirrored by an older build is read at the
screen's current path instead of an unmatched one.

The content clearance follows the same rule: the root stack publishes
that no tab bar sits under its screens, so their scroll views reserve
the safe-area inset instead of a bar height.
@iscekic iscekic added drain Work item from the findings drain explorer:ios Finding surfaced by the iOS explorer labels Oct 21, 2026
@iscekic

iscekic commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Captures from the affected app on the local dev stack with an owned fixture account.

Before — Android, Code Reviewer opened from Home (the bottom bar reported Profile as selected):

After — Android, the same entry, no tab bar on the pushed screen:

After — Android, Home root with the bar back and Home selected on return:

After — iOS simulator, Code Reviewer opened from Home:

After — iOS simulator, Home after going back:

Before: Code Reviewer from Home with Profile marked selected

After: Code Reviewer from Home with no tab bar

After: Home root with the tab bar and Home selected

After: iOS Code Reviewer from Home with no tab bar

After: iOS Home root with the tab bar and Home selected

Comment thread apps/mobile/src/lib/last-route.ts Resolved
@kilo-code-bot

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

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The incremental commit adds the retention rationale above MOVED_ROUTE_PREFIXES, resolving the only outstanding suggestion; the one-line comment change introduces no new defects.

Assumptions: [INFERENCE] Read-only review; I did not run the mobile app or its tests. The rest of the PR is unchanged since the prior review at d57753c6.

Files Reviewed (1 file)
  • apps/mobile/src/lib/current-route-href.ts - re-check, prior rationale finding resolved (line 1 now explains why retired route groups must keep resolving)
Previous Review Summaries (5 snapshots, latest commit d57753c)

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

Previous review (commit d57753c)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The follow-up closes the last persisted-navigation gap by routing both the last-route mirror and the pending deep-link mirror through one currentRouteHref migration; the only remaining note is that the extracted table lost the rationale comment that explains why the rewrite must stay.

Assumptions: [INFERENCE] I did not run the mobile app or its test suite in this read-only review; findings come from reading the persistence and navigation code at HEAD d57753c6.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/lib/current-route-href.ts 1 Moving the old-route mapping out of last-route.ts into a shared module dropped the doc block that explained the upgrade window (records mirrored by an older build name the old tab stack and must be rewritten or they open an unmatched route). Restore that rationale on the table or on currentRouteHref.
Files Reviewed (4 files)
  • apps/mobile/src/lib/current-route-href.ts - 1 issue
  • apps/mobile/src/lib/deep-link-launch.ts - re-check, prior pending-mirror finding resolved (href is mapped at parse, line 458)
  • apps/mobile/src/lib/deep-link-launch.test.ts - covered relocation, query, and non-matching prefixes
  • apps/mobile/src/lib/last-route.ts - re-check, prior doc-placement finding resolved (comment sits on parseStoredRecord again)

Fix these issues in Kilo Cloud

Previous review (commit a247c3c)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The follow-up delta keeps the moved Code Reviewer and Security Agent trees, the last-route mirror and the system-search ledger consistent; the one remaining gap is the pending deep-link mirror, which still replays verbatim an href captured by an older build.

Assumptions: [INFERENCE] I did not run the mobile app or its test suite in this read-only review; findings come from reading the persistence and navigation code at HEAD a247c3ca.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/lib/deep-link-launch.ts 423 The pending-deep-link mirror still restores a stored href verbatim (parsePendingDeepLinkRecord returns the persisted href unchanged, then setPendingDeepLink(href, …) navigates it), so a notification href written by an older build with the (tabs)/(3_profile)/security-agent/... path restores within its 24 h TTL onto the now-unmatched route and lands on +not-found. This file is unchanged by the PR, so the finding is summary-only; applying the same current-route mapping last-route uses would close the upgrade window.
Files Reviewed (8 files)
  • apps/mobile/src/app/(app)/security-agent/[scope]/_layout.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/instructions.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/instructions.mounted.test.tsx
  • apps/mobile/src/lib/security-notification-navigation.mounted.test.tsx
  • apps/mobile/src/lib/last-route.ts - re-check, no issue
  • apps/mobile/src/lib/system-search-families.ts - re-check, no issue
  • apps/mobile/src/lib/system-search-entries.ts - re-check, no issue
  • apps/mobile/src/lib/deep-link-launch.ts - 1 issue (re-check)

Fix these issues in Kilo Cloud

Previous review (commit 89fa69c)

Status: 1 Issue Found | Recommendation: Address before merge

Executive Summary

The follow-up commits close the earlier Security Agent back-navigation defect and repoint every invalid Code Reviewer route at the Code Reviewer entry; the only remaining gap is the pending-deep-link mirror, which still replays an href captured by an older build verbatim.

Assumptions: [INFERENCE] I did not run the mobile app or its test suite in this read-only review; findings come from reading the persistence and navigation code at HEAD 89fa69c75.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/lib/deep-link-launch.ts 423 The pending-deep-link mirror still restores a stored href verbatim (parsePendingDeepLinkRecord returns the persisted href unchanged, then setPendingDeepLink(href, …) navigates it), so a notification href written by an older build with the (tabs)/(3_profile)/security-agent/... path restores within its 24 h TTL onto the now-unmatched route and lands on +not-found. Applying the same current-route mapping last-route uses would close the upgrade window.
Files Reviewed (14 files)
  • apps/mobile/src/app/(app)/_layout.tsx (merge resolution)
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/index.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/manual-review.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/[id].tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/index.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/index.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/manual-review.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/[id].mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/index.mounted.test.tsx
  • apps/mobile/src/components/security-agent/finding-detail-screen.tsx
  • apps/mobile/src/components/security-agent/finding-detail-screen.mounted.test.tsx
  • apps/mobile/src/lib/finding-detail-back.ts
  • apps/mobile/src/lib/profile-tab-anchor.test.ts
  • apps/mobile/src/lib/deep-link-launch.ts - 1 issue (targeted re-check)

Fix these issues in Kilo Cloud

Previous review (commit 7e6a517)

Status: 2 Issues Found | Recommendation: Address before merge

Executive Summary

The follow-up commit closes both previously reported system-search gaps — legacy finding ids now canonicalise to the current route before the allowlist, source lookup, and deeplink are computed, so a stale entry both opens the right screen and can finally be pruned — leaving two persisted-navigation gaps from the route move uncovered.

Assumptions: [INFERENCE] I did not run the mobile app or its test suite in this read-only review; the remaining findings come from reading the persistence and back-navigation code at current HEAD and were re-verified there.

Overview

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

SUGGESTION

File Line Issue
apps/mobile/src/lib/deep-link-launch.ts 456 The pending-deep-link mirror still restores a stored href verbatim, so a notification href written by an older build with the (tabs)/(3_profile)/security-agent/... path restores within its 24 h TTL onto the now-unmatched route and lands on +not-found. parsePendingDeepLinkRecord could apply the same current-path mapping last-route uses.
apps/mobile/src/lib/finding-detail-back.ts 41 No-history back from a push/deep-linked finding still replaces to PROFILE_TAB_ROOT. That was the Security Agent's parent while the tree lived in the Profile tab; the tree now lives in the root stack, so landing back on an unrelated tab is the arbitrary destination rather than the scope dashboard.
Files Reviewed (8 files)
  • apps/mobile/src/lib/last-route.ts
  • apps/mobile/src/lib/system-search-entries.ts
  • apps/mobile/src/lib/system-search-entries.test.ts
  • apps/mobile/src/lib/system-search-families.ts
  • apps/mobile/src/lib/system-search-families.test.ts
  • apps/mobile/src/lib/system-search-route.test.ts
  • apps/mobile/src/lib/deep-link-launch.ts - 1 issue (targeted re-check)
  • apps/mobile/src/lib/finding-detail-back.ts - 1 issue (targeted re-check)

Fix these issues in Kilo Cloud

Previous review (commit 511a746)

Status: 4 Issues Found | Recommendation: Address before merge

Executive Summary

The route move and the new root-stack clearance rule are coherent, but persisted navigation state was only migrated for the last-route mirror — the system-search ledger keeps stale finding ids forever, and two other persisted/history paths still assume Security Agent lives under the Profile tab.

Assumptions: [INFERENCE] I could not run the app or the mobile test suite in this read-only review, so the navigation outcomes below are derived from the router code and the tests in the diff. Foreground-refresh behavior on the moved screens now depends on each screen's own useRouteForegroundRefresh mount; I found no proof of a regression and did not report one.

Overview

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

WARNING

File Line Issue
apps/mobile/src/lib/system-search-families.ts 15 The persisted system-search ledger still holds old finding ids; after the prefix change they fail the allowlist, so planSystemSearchUpdate can never remove them. Duplicates stay in the phone's search index permanently, and an iOS tap on the stale row is dropped silently.

SUGGESTION

File Line Issue
apps/mobile/src/lib/last-route.ts 78 The parseStoredRecord doc comment now sits above the new MOVED_ROUTE_PREFIXES block, so it documents the wrong thing and the function is left undocumented.
apps/mobile/src/lib/finding-detail-back.ts 41 No-history back from a push/deep-linked finding still replaces to PROFILE_TAB_ROOT. That was the Security Agent's parent while the tree lived in the Profile tab; the natural target is now the scope dashboard (or the tree root), not an unrelated tab.
apps/mobile/src/lib/deep-link-launch.ts 456 A persisted pending deep link (24h TTL) written by an older build is restored verbatim. An old /(app)/(tabs)/(3_profile)/security-agent/... href now resolves to the +not-found screen. Reuse the currentRouteHref mapping in parsePendingDeepLinkRecord, as last-route does.
Files Reviewed (75 files)
  • apps/mobile/src/app/(app)/_layout.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/_layout.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/focus-areas.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/focus-areas.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/gate.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/instructions.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/repos.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/style.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/_layout.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/index.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/index.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/index.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/manual-review.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/manual-review.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/review-memory.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/[id].mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/[id].tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/index.mounted.test.tsx
  • apps/mobile/src/app/(app)/code-reviewer/[scope]/reviews/index.tsx
  • apps/mobile/src/app/(app)/code-reviewer/index.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/_layout.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/audit-report.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/dismiss/[id].tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/filter.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/findings/[id].tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/findings/index.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/index.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/analysis.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/automation.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/index.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/notifications.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/repositories.tsx
  • apps/mobile/src/app/(app)/security-agent/[scope]/settings/sla.tsx
  • apps/mobile/src/app/(app)/security-agent/index.tsx
  • apps/mobile/src/components/app-unlock-screen.mounted.test.tsx
  • apps/mobile/src/components/code-reviewer/bitbucket-overview.tsx
  • apps/mobile/src/components/code-reviewer/full-surface-states.mounted.test.tsx
  • apps/mobile/src/components/code-reviewer/manual-review-action-footer.tsx
  • apps/mobile/src/components/code-reviewer/manual-review-screen.mounted.test.tsx
  • apps/mobile/src/components/code-reviewer/manual-review-screen.tsx
  • apps/mobile/src/components/code-reviewer/platform-list-screen.tsx
  • apps/mobile/src/components/code-reviewer/platform-overview-screen.tsx
  • apps/mobile/src/components/code-reviewer/review-detail-screen.mounted.test.tsx
  • apps/mobile/src/components/code-reviewer/review-detail-screen.tsx
  • apps/mobile/src/components/code-reviewer/review-list-screen.tsx
  • apps/mobile/src/components/code-reviewer/scope-list-screen.tsx
  • apps/mobile/src/components/security-agent/finding-detail-screen.analysis-crash.mounted.test.tsx
  • apps/mobile/src/components/security-agent/finding-detail-screen.mounted.test.tsx
  • apps/mobile/src/components/security-agent/finding-list-screen.mounted.test.tsx
  • apps/mobile/src/components/tab-screen.mounted.test.tsx
  • apps/mobile/src/components/tab-screen.tsx
  • apps/mobile/src/lib/deep-link-handler.test.ts
  • apps/mobile/src/lib/deep-link-launch.test.ts
  • apps/mobile/src/lib/hooks/use-reviewer-permission.ts
  • apps/mobile/src/lib/last-route.test.ts
  • apps/mobile/src/lib/last-route.ts - 1 issue
  • apps/mobile/src/lib/notification-actions.test.ts
  • apps/mobile/src/lib/notification-path-schema.test.ts
  • apps/mobile/src/lib/notification-path.test.ts
  • apps/mobile/src/lib/notifications.test.ts
  • apps/mobile/src/lib/pending-navigation.test.ts
  • apps/mobile/src/lib/profile-agent-navigation.test.ts
  • apps/mobile/src/lib/profile-agent-navigation.ts
  • apps/mobile/src/lib/security-agent.test.ts
  • apps/mobile/src/lib/security-agent.ts
  • apps/mobile/src/lib/security-notification-navigation.mounted.test.tsx
  • apps/mobile/src/lib/system-search-collect.test.ts
  • apps/mobile/src/lib/system-search-entries.test.ts
  • apps/mobile/src/lib/system-search-entries.ts
  • apps/mobile/src/lib/system-search-families.ts - 1 issue
  • apps/mobile/src/lib/system-search-route.test.ts
  • apps/mobile/src/lib/tab-bar-clearance.ts
  • apps/mobile/src/lib/tab-press.test.ts
  • packages/app-shared/src/universal-links/routes.test.ts
  • packages/app-shared/src/universal-links/routes.ts

Reviewed by deepseek-flash-latest · Input: 34.1K · Output: 2.2K · Cached: 126.2K

Review guidance: REVIEW.md from base branch main

The phone's search index keeps an entry until the app removes it, and iOS
hands the indexed id back when the result is picked. Ids issued before the
finding route left the profile tab stack no longer matched the current
prefix, so such a result could not open its screen, and the sync could not
name the source that authorises removing it, leaving the stale entry in
place.

Canonicalise an indexed id to the route the app shows today before the
allowlist and the source lookup read it, so an older result opens the same
screen and the next sync replaces it.

Also restore the parse comment that sat above the moved-route table.
@iscekic iscekic added merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. labels Oct 21, 2026
…lore-screens

# Conflicts:
#	apps/mobile/src/app/(app)/code-reviewer/[scope]/[platform]/(edit)/instructions.mounted.test.tsx
@iscekic iscekic removed merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head labels Oct 22, 2026
…entry

A Code Reviewer route that cannot render, because its scope or review id is
missing, now sends the user to the Code Reviewer entry instead of the Profile
tab. The routes live in the root stack, so the entry is the screen that opened
them and no tab bar is selected underneath.
…lore-screens

# Conflicts:
#	apps/mobile/src/app/(app)/_layout.tsx
A finding opened without local history now returns to its scope's findings
list in the root stack. This keeps the return path within the relocated
Security Agent surface rather than switching to a tab.
…lore-screens

# Conflicts:
#	apps/mobile/src/lib/security-notification-navigation.mounted.test.tsx
@iscekic iscekic added merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. labels Oct 22, 2026
@iscekic

iscekic commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Fixed the summary-only pending-deep-link finding in d57753c. Both persisted navigation readers now share currentRouteHref. Four regression cases replayed the old route groups before the fix; all now resolve to the root-stack routes while preserving organization context and single-shot consumption. Six targeted test files pass (167 tests), and a standalone Node smoke exercised restoration and consumption for both relocated surfaces. Mobile typecheck, lint, unused-export checks, and formatting pass after building the required workspace declarations. Earlier Android/iOS screenshots remain the visual evidence; this nonvisual follow-up did not repeat the device run.

@iscekic iscekic removed merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. merge:blocked:kilobot-not-ready Review bot has not recommended merge at this head labels Oct 22, 2026
@iscekic iscekic added the merge:blocked:insufficient-e2e Verification does not cover the change label Oct 22, 2026
@iscekic iscekic added the merge:bot Bot-owned review; merge when ready once readiness passes and a review approves. label Oct 22, 2026
@iscekic

iscekic commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

bot: Re-ran the navigation flow on the affected Android app at the current head, against the local dev stack and a fixture account.

Observed with accessibility snapshots and screenshots:

  • Home root: bottom bar present, Home reported as the selected tab.
  • Code Reviewer opened from the Home Explore row: the pushed screen draws no bottom bar, and the snapshot contains no tab nodes at all.
  • The GitHub settings child and the recent reviews child: same, no bottom bar on either.
  • Returning to Home: the bar is back with Home reported as the selected tab.
  • Security Agent opened from the Home Explore row: no bottom bar; returning keeps Home selected.
  • Relaunching the app on the same relocated route restores it with no bottom bar.
  • Opening Code Reviewer from the Profile tab row pushes the same root-stack screen instead of a tab-stack screen; returning keeps Profile selected, so tab-stack pushes are unchanged.

Home root with the bottom bar and Home selected

Code Reviewer opened from Home, no bottom bar

Code Reviewer GitHub settings child, no bottom bar

Recent reviews child, no bottom bar

Home after returning, Home selected

Security Agent opened from Home, no bottom bar

@iscekic iscekic removed the merge:blocked:insufficient-e2e Verification does not cover the change label Oct 23, 2026
@iscekic
iscekic added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit 06442f0 Oct 23, 2026
104 checks passed
@iscekic
iscekic deleted the drain/home-tab-on-explore-screens branch October 23, 2026 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

drain Work item from the findings drain explorer:ios Finding surfaced by the iOS explorer merge:bot Bot-owned review; merge when ready once readiness passes and a review approves.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants