feat(android): read-only workspace Files browser with preview and share#100776
Conversation
9029e91 to
fa54358
Compare
bc4d61a to
73b999c
Compare
💡 Codex Reviewopenclaw/src/gateway/server-methods/workspace-fs.ts Lines 87 to 88 in bc4d61a On POSIX workspaces, ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Codex review: needs real behavior proof before merge. Reviewed July 6, 2026, 5:55 AM ET / 09:55 UTC. Summary PR surface: Docs +4, Other +686. Total +690 across 10 files. Reproducibility: not applicable. as a bug reproduction: this is a feature PR adding a mobile workspace Files browser. The review is source- and CI-based against the PR head and the stacked Gateway API branch. Review metrics: 2 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review findings
Review detailsBest possible solution: Land the Android Files browser only after the generated artifacts are refreshed and the stacked Gateway PR's file-read security boundary is approved or adjusted. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction: this is a feature PR adding a mobile workspace Files browser. The review is source- and CI-based against the PR head and the stacked Gateway API branch. Is this the best way to solve the issue? No, not merge-ready yet. The Android implementation shape is plausible, but generated artifacts must be refreshed and the workspace file-read security boundary in the prerequisite Gateway PR needs maintainer approval first. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 24bca38cdaad. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Docs +4, Other +686. Total +690 across 10 files. View PR surface stats
Security concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
1a4711b to
ab567c9
Compare
73b999c to
482d03e
Compare
…nstead of crashing
482d03e to
7441f88
Compare
|
Land-ready review complete on the final Android head.
|
|
Merged via squash.
|
…re (openclaw#100776) * feat(android): add read-only workspace Files browser with preview and share * fix(android): degrade malformed base64 image payloads to no-preview instead of crashing * fix(android): keep workspace paths verbatim from the gateway * test(android): cover the overview Files card in shell logic tests * fix(android): reset workspace browser across agents * fix(android): isolate workspace share exports * docs(android): note workspace file browser * chore(i18n): refresh Android Files inventory * docs(android): refresh workspace files map
…re (openclaw#100776) * feat(android): add read-only workspace Files browser with preview and share * fix(android): degrade malformed base64 image payloads to no-preview instead of crashing * fix(android): keep workspace paths verbatim from the gateway * test(android): cover the overview Files card in shell logic tests * fix(android): reset workspace browser across agents * fix(android): isolate workspace share exports * docs(android): note workspace file browser * chore(i18n): refresh Android Files inventory * docs(android): refresh workspace files map
Related: #100705
Builds on the gateway RPCs landed by #100738 and is now based directly on
main.What Problem This Solves
Android operators cannot see what an agent produced or changed in its workspace. Checking a generated file, log, or edited config from the phone requires shell access to the gateway host.
Why This Change Was Made
Adds a read-only Files browser backed by the new
agents.workspace.list/agents.workspace.getRPCs from #100738, following the existing shell patterns: aTab.Filesdetail tab (shell Back semantics preserved; directory drill-down and preview unwind screen-locally through aBackHandlerbefore the shell's single-slot Back origin) plus a Files metric card on the Home overview. Listing pages through the gateway'soffset/totalEntriescontract with a "Load more" row. Text previews reuse the chat renderer'sChatCodeBlock; images reuse the chat renderer's asynchronous base64 decoder, with malformed payloads degrading to a no-preview state. The browser subtree resets from the same session/default-agent facts used by runtime routing so paths cannot cross agents. Export writes each share into a unique directory under theworkspace-files/FileProvider cache path, preventing an older URI grant from observing a later same-basename export. Gateway RPC access follows the runtime-owned pattern: suspend wrappers onNodeRuntimewith kotlinx JSON parsing kept inWorkspaceFiles.kt; protocol paths are treated as opaque identifiers (never trimmed). Strictly read-only.User Impact
Android users can browse the active agent's workspace, preview text and image files, and share/export a file through the system share sheet.
Evidence
:app:compilePlayDebugKotlingreen;WorkspaceFilesTest(parser contract incl. pagination fields, text/image payloads, malformed payload rejection) andShellScreenLogicTest(updated for the Files card) pass locally.tbx_01kww1zy68f1gdbfd1xezvv7ag::app:compilePlayDebugKotlinplus focusedWorkspaceFilesTestandShellScreenLogicTestgreen (exitCode: 0, 2m50s Gradle / 3m26s wrapper).pnpm native:i18n:syncrun for the new user-visible strings.maindelta is clean.apps/android/CHANGELOG.mdUnreleased entry and regenerated both the native i18n inventory and docs map after the rebase.