fix(remote): deliver session-owned images and files across clients - #2957
Merged
bobleer merged 5 commits intoSep 10, 2026
Merged
Conversation
…ce-output-artifacts # Conflicts: # src/web-ui/src/infrastructure/markdown/MarkdownRenderer.test.tsx # src/web-ui/src/infrastructure/markdown/MarkdownRenderer.tsx # src/web-ui/src/tools/editor/components/ImageViewer.tsx
…ce-output-artifacts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Generated images and file links now resolve through the session and host that produced them. Mobile web can display output images inline, native mobile can preview and download the complete file, IM bots return remote replies and attachments, and Detached Dispatch supports binary previews and downloads.
Type and Areas
Type: bug fix / UI/UX / compatibility
Areas: session output routing, Remote Connect, IM bots, Detached Dispatch, CLI, Web UI, mobile web, Android/iOS shared core, HarmonyOS, docs.
Motivation / Impact
A reply such as
previously depended on the viewer's current workspace, could disappear on another client, or arrive as a truncated image. Account-device bot submissions also stopped at submission instead of returning the result to the chat.query_file_chunks_v1capability for dispatch output. Keep older targets' execution and text queries working. Open binary images and text snapshots as immutable content, refresh reopened results, and avoid controller file IO/watchers.Verification
Passed locally:
cargo test --locked -p openbitfun-services-integrations --no-default-features --features remote-connect --lib remote_connect::— 117 tests.cargo test --locked -p openbitfun-services-integrations --no-default-features --features remote-connect --test remote_connect_contracts— 64 tests, including legacy file-chunk round trips.cargo test --locked -p openbitfun-core --no-default-features --features remote-connect --lib service::remote_connect::bot::— 46 tests, including encrypted account-RPC loopback, disconnect/replay, captured-target questions/approvals, multi-chunk attachment reads, and retirement of completed prompts without dropping other queued questions.:core-feature:jvmTest --tests '*RemoteWorkspaceStoreTest' :core-protocol:jvmTestand HarmonyOS local tests passed, including changed revisions, padded chunks, incomplete transfers, and target switches.pnpm run check:web,pnpm run type-check:mobile-web,pnpm run i18n:audit,pnpm run check:core-boundaries,pnpm run mobile:architecture,pnpm run check:repo-hygiene, Rust formatting, full Web UI ESLint, andgit diff --checkpassed.Remote-scenario evidence: SSH output routing/confinement is covered through an injected remote filesystem provider; Remote Connect uses real encryption and HTTP loopback with simulated target responses; Peer Device Mode covers surface identity changes; Detached Dispatch covers persisted job ownership, optional capability negotiation, and revision-bound continuation. Live SSH/IM-provider delivery and physical native/foldable-device UX were not exercised.
Reviewer Notes
Persisted records remain compatible. The Remote Connect chunk revision is optional, and legacy replies remain readable. Dispatch protocol version stays unchanged; binary queries require the separately advertised capability. Existing providers without revision metadata retain legacy checks. Remote paths through symlinks fail explicitly until the filesystem provider can establish canonical confinement.
The protocol suite also contained a stale
minimalassertion after the upstream canonical agent-identity migration; it now checksMinimaland the uppercase legacy alias, matching the existing runtime contract.Checklist