Repository navigation
feat(mobile): start a new agent from a picture - #6201
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental change wraps the source-picker call in Files Reviewed (2 files)
Previous Review Summaries (4 snapshots, latest commit 9b1f44c)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 9b1f44c)Status: No Issues Found | Recommendation: Merge Executive SummaryIncremental review at Files Reviewed (101 files)
No new inline comments were posted. Previous review (commit 4c42eb2)Status: No Issues Found | Recommendation: Merge Incremental review at Files Reviewed (101 files)
Previous review (commit c83a0a6)Status: No Issues Found | Recommendation: Merge Incremental review at Files Reviewed (101 files)
Previous review (commit 3de8bde)Status: No Issues Found | Recommendation: Merge Executive SummaryReviewed the mobile picture-to-new-agent entry (picker refactor, source-sheet index mapping, surface union, share-payload staging, Android pending-picker recovery) with its tests and 87 locale catalogs at Files Reviewed (101 files)
Non-blocking notes, not findings: the PR itself declares the Android recovery and iOS camera paths as built but not proved live, and the locale catalogs were inspected by key count rather than machine-validated JSON in this read-only pass. Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
|
bot: Rejected, no code change (kwf Why: (already implemented, verified live: no change needed: No code change needed: the picture entry is one implementation for both iOS and Android (shared source sheet, staging, and navigation), the only platform-guarded code is the Android Activity-recreation recovery, kept and named in code comments, and the |
3de8bde to
c83a0a6
Compare
c83a0a6 to
4c42eb2
Compare
5a7e4b6 to
9b1f44c
Compare
Changelog for users
Changelog for maintainers
pickAgentPictureshares the composer's source sheet but offers camera and library only.stagePictureForNewSessionstages the picked files in the existing share payload and returns the new-agent route the composer consumes.AttachmentSurfaceaddsagent-picture, shared by the launch context, both entry points, and the Android recovery hook, which matches it after an Activity recreation.apps/mobile/src/**/kiloclaw/**is touched.E2E proof
[e1] Start an agent from an existing screenshot: home -> 'New task from a picture' -> Photo Library -> the seeded screenshot lands attached in the composer -> typed text -> Start session -> the session's… — android emulator-5554: the seeded screenshot (e1-picker.xml content-desc="Photo taken on Sep 16, 2026, 5:35:26" at bounds="[0,1409][354,1763]") picked through the OS photo picker landed in the composer as 'android.widget.Button 1000000018.png, Uploaded' with 'Remove attachment 1000000018.png' (e1-composer-run.log, capture e1-composer.png); after the typed prompt the session screen's first message carries it — 'android.widget.ImageView Image output, e4b01550-4206-4077-b5d4-dc01a3b2ba2b.png' beside 'android.widget.TextView Describe this picture' (e1-session-run.log, capture e1-session.png)…
Recording of the verified flow (waits trimmed)
scripted-shard1.mp4.trim.mp4
[e1] Start an agent from an existing screenshot: home -> 'New task from a picture' -> Photo Library -> the seeded screenshot lands attached in the composer -> typed text -> Start session -> the session's… — android emulator-5554: the seeded screenshot (e1-picker.xml content-desc="Photo taken on Sep 16, 2026, 5:35:26" at bounds="[0,1409][354,1763]") picked through the OS photo picker landed in the composer as 'android.widget.Button 1000000018.png, Uploaded' with 'Remove attachment 1000000018.png' (e1-composer-run.log, capture e1-composer.png); after the typed prompt the session screen's first message carries it — 'android.widget.ImageView Image output, e4b01550-4206-4077-b5d4-dc01a3b2ba2b.png' beside 'android.widget.TextView Describe this picture' (e1-session-run.log, capture e1-session.png)…
[e1] Start an agent from an existing screenshot: home -> 'New task from a picture' -> Photo Library -> the seeded screenshot lands attached in the composer -> typed text -> Start session -> the session's… — android emulator-5554: the seeded screenshot (e1-picker.xml content-desc="Photo taken on Sep 16, 2026, 5:35:26" at bounds="[0,1409][354,1763]") picked through the OS photo picker landed in the composer as 'android.widget.Button 1000000018.png, Uploaded' with 'Remove attachment 1000000018.png' (e1-composer-run.log, capture e1-composer.png); after the typed prompt the session screen's first message carries it — 'android.widget.ImageView Image output, e4b01550-4206-4077-b5d4-dc01a3b2ba2b.png' beside 'android.widget.TextView Describe this picture' (e1-session-run.log, capture e1-session.png)…
E2E proof — log excerpts
/home/igor_kilocode_ai/.local/share/kwf/sections/picture-to-new-agent-9c36/e2e-mobile-app/e1-composer-run.log/home/igor_kilocode_ai/.local/share/kwf/sections/picture-to-new-agent-9c36/e2e-mobile-app/e1-session-run.log/home/igor_kilocode_ai/.local/share/kwf/sections/picture-to-new-agent-9c36/e2e-mobile-app/e1-session-row.txt/home/igor_kilocode_ai/.local/share/kwf/sections/picture-to-new-agent-9c36/e2e-mobile-app/e1-cancel-after.txt/home/igor_kilocode_ai/.local/share/kwf/sections/picture-to-new-agent-9c36/e2e-mobile-app/e1-picker-cancel-after.txtOwner request
[e1] Start an agent from an existing screenshot: home -> 'New task from a picture' -> Photo Library -> the seeded screenshot lands attached in the composer -> typed text -> Start session -> the session's… — android emulator-5554: the seeded screenshot (e1-picker.xml content-desc="Photo taken on Sep 16, 2026, 5:35:26" at bounds="[0,1409][354,1763]") picked through the OS photo picker landed in the composer as 'android.widget.Button 1000000018.png, Uploaded' with 'Remove attachment 1000000018.png' (e1-composer-run.log, capture e1-composer.png); after the typed prompt the session screen's first message carries it — 'android.widget.ImageView Image output, e4b01550-4206-4077-b5d4-dc01a3b2ba2b.png' beside 'android.widget.TextView Describe this picture' (e1-session-run.log, capture e1-session.png)…
[e1] Start an agent from an existing screenshot: home -> 'New task from a picture' -> Photo Library -> the seeded screenshot lands attached in the composer -> typed text -> Start session -> the session's… — android emulator-5554: the seeded screenshot (e1-picker.xml content-desc="Photo taken on Sep 16, 2026, 5:35:26" at bounds="[0,1409][354,1763]") picked through the OS photo picker landed in the composer as 'android.widget.Button 1000000018.png, Uploaded' with 'Remove attachment 1000000018.png' (e1-composer-run.log, capture e1-composer.png); after the typed prompt the session screen's first message carries it — 'android.widget.ImageView Image output, e4b01550-4206-4077-b5d4-dc01a3b2ba2b.png' beside 'android.widget.TextView Describe this picture' (e1-session-run.log, capture e1-session.png)…
Follow-ups (not changed here)
Open findings (not fixed here)