feat(mobile): stable header, live-row icons, share to new CLI session - #4807
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental diff since the last review (docs, an accessibility focus-restore addition in Files Reviewed (5 changed files)
Note: the three previously open threads ( Previous Review Summaries (3 snapshots, latest commit 53f0c1e)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 53f0c1e)Status: No Issues Found | Recommendation: Merge Both previously reported issues were fixed by new commits since the last review; no new issues found in the incremental diff. Files Reviewed (3 changed files)
Note: the open Previous review (commit 3b27da2)Status: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
No code changed since the previous review (the only new commit, Files Reviewed (0 changed files in this incremental pass)
Fix these issues in Kilo Cloud Previous review (commit 0822f68)Status: 3 Issues Found | Recommendation: Address before merge Executive SummaryThe web change adding Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (26 files)
Reviewed by claude-sonnet-5 · Input: 32 · Output: 10.1K · Cached: 895.7K Review guidance: REVIEW.md from base branch |
|
(bot) Transient close/reopen to retrigger GitHub Actions after the pull_request events for this PR did not create workflow runs. Reopening immediately. |
…d-share-cli-spawn # Conflicts: # apps/mobile/.kilo/WORKFLOW_LEARNINGS.md # apps/mobile/src/components/screen-header.tsx
KILO_GITHUB_BOT_LOGINS gates isLikelyKiloBotActor, which persists trusted Kilo-authored content into review memory via recordReplyFeedbackEvent. kilocode-bot is the mention-only GitHub User login used to @-tag the bot; the account that authors Kilobot reviews is the GitHub App kilo-code-bot[bot]. Adding the mention login conflates the trust boundary. Kilobot's remark on PR #4807 is correct and the requester confirmed. This reverts commit cba113b.
The rewrite framed adding the mention-only User login kilocode-bot to KILO_GITHUB_BOT_LOGINS as deliberate. It is not: the set gates trusted Kilo-authored content persistence into review memory, so the mention login must not be in it. The original wording (do not "correct" author-login allowlists) was right and is restored. This reverts commit 53f0c1e.
…d-share-cli-spawn # Conflicts: # apps/mobile/.kilo/WORKFLOW_LEARNINGS.md
Summary
Five requested mobile changes, planned in
/tmp/kilo-plans/mobile-header-share/plan.md:kilo remoteinstance ("New session on <instance>", above recent destinations). Tapping spawns a session on that instance, dismisses the gate, and lands on the spawned session with the shared text/files prefilled in the composer. Admission (files vs. instanceattachmentscapability) is decided before spawning; spawn failures toast retryable/non-retryable and leave the gate open with the payload staged. While a spawn is in flight every commit affordance in the gate is inert; areadythat arrives after the gate was dismissed or another destination committed does nothing.SessionContextMetrics+SessionContextCostFallback) collapsed into one always-rendered fixed-height (h-11) pill — a net deletion that is simultaneously the CLS fix, the naked-$0.0007fix, and the glyph's new home. The route's pending branch renders the same pill in its no-data state, so the header row is height-stable from first paint through context-usage resolution (repro measured +16 pt / 48 px jump before; bare cost visible ~0.2–0.4 s). Also made the pill's claimed 44 pt touch target real (baseline measured 40 pt;min-h-11was inert).Active nowrows show the platform glyph exactly like stored rows (same extracted selector; suppressed forneedsInput; VoiceOver rule unchanged).items-centeralready centres it. The perceived symptom was the 8 pt shift from the CLS in item 3.Simpler-shape decisions (recorded per workflow):
useSharePrefilltakes the payload on the new-session screen before a remote target can be picked; gate-side spawn reusesuseRemoteInstanceSpawn+ the existingcommit()path with no new payload lifecycle. The new-session-screen block stays; its alert copy now points at the gate.shouldShowRunOnSelector, widened tostring | null | undefined), because a spawned CLI session is personal and would be invisible in an org-scoped list.getSpawnedAgentSessionPath(addsspawned=1so the detail route retries a fresh-spawn 404) wrapped inappendShareId— notgetAgentSessionPath.Supporting changes:
activeSessions.listInstancesnow reports each connected instance's advertisedcapabilities({ attachments?: boolean }, absent for legacy CLIs) —feat(session-ingest).Verification
typecheck,lint,check:unusedgreenVisual Changes
Session-detail header and share gate change visually. Before/after measurement screenshots will be attached from the E2E run before merge (baseline repro: header row 24 pt → 40 pt jump, bare
$0.0007flash; after: fixed 44 pt pill from first paint).Reviewer Notes
share-gate-sheet.tsxspawn handler (eight steps: admission → spawn → outcome → guarded commit) and the enablement contract (onespawningConnectionIdstate owns all commit-affordance locks; recent destinations deliberately stay ungated oncommitEnabled, as today).session-row.tsxstored rows must be visually identical — only the inline rule moved intoselectRowPlatformPresentation, shared with live rows.