diff --git a/.agents/skills/verify-deepseekbot/features/workspace-request-write.md b/.agents/skills/verify-deepseekbot/features/workspace-request-write.md index e16f19a0ce..212e2f691d 100644 --- a/.agents/skills/verify-deepseekbot/features/workspace-request-write.md +++ b/.agents/skills/verify-deepseekbot/features/workspace-request-write.md @@ -30,7 +30,7 @@ The runner saves screenshots, ARIA, console, Client diagnostics, canonical reque ### Phone: choose the folder from the Host -`node scripts/e2e-mobile-folder-browse-web.mjs` drives the same request card in the Expo Web export of the phone app (behavior `desktop.grants.request-write-continue`). A real model asks for a folder, the phone proxy answers DSH `directoryPicker/list` with `directory-picker/unavailable` as a Windows/macOS system-chooser Host does, and the sheet must still list Host folders through `botharness/folderBrowse`: subfolders only, no files, no hidden folders, plus Home and `/` (drives on Windows) under **Other places**. Choosing **Authorize this folder** then **Allow read/write** must leave a writable Grant on exactly that path. The CLI twin is `deepseekbot folder-browse []`. This is layout and flow evidence, not native-device evidence. +`node scripts/e2e-mobile-folder-browse-web.mjs` drives the same request card in the Expo Web export of the phone app (behavior `desktop.grants.request-write-continue`). A real model asks for a folder, the phone proxy answers DSH `directoryPicker/list` with `directory-picker/unavailable` as a Windows/macOS system-chooser Host does, and the sheet must still list Host folders through `botharness/folderBrowse`: subfolders only, no files, no hidden folders, plus Home and `/` (drives on Windows) under **Other places**. The sheet names the folder it will grant (**Will authorize: **); choosing **Authorize this folder** then **Allow read/write** must leave a writable Grant on exactly that path. The CLI twin is `deepseekbot folder-browse []`. This is layout and flow evidence, not native-device evidence. ## Gotchas diff --git a/.github/pr-screenshots/mobile-folder-target/browse-folder-dark.png b/.github/pr-screenshots/mobile-folder-target/browse-folder-dark.png new file mode 100644 index 0000000000..e4ea015e8d Binary files /dev/null and b/.github/pr-screenshots/mobile-folder-target/browse-folder-dark.png differ diff --git a/.github/pr-screenshots/mobile-folder-target/browse-folder-light.png b/.github/pr-screenshots/mobile-folder-target/browse-folder-light.png new file mode 100644 index 0000000000..9855b614ac Binary files /dev/null and b/.github/pr-screenshots/mobile-folder-target/browse-folder-light.png differ diff --git a/apps/mobile/src/ui/chat/folder-picker-sheet.tsx b/apps/mobile/src/ui/chat/folder-picker-sheet.tsx index 67bb42b3c0..d35c40a4bf 100644 --- a/apps/mobile/src/ui/chat/folder-picker-sheet.tsx +++ b/apps/mobile/src/ui/chat/folder-picker-sheet.tsx @@ -26,7 +26,7 @@ import { SheetNote, SHEET_GROUP, } from './sheet'; -import { Crumbs, Grouped, locationSection, RowIcon } from './workspace-sheet'; +import { Crumbs, Grouped, locationSection, OpenFolderTarget, RowIcon } from './workspace-sheet'; export interface FolderPickerPort { listFolders(path?: string): Promise; @@ -255,6 +255,7 @@ export function FolderPickerSheet({ )} /> + {manual ? null : }