-
由 keppo-bot[bot] 提交于
## What changed - switch the cloud sandbox upload client to a multipart manifest-plus-file request instead of JSON `Record<string, string>` payloads - read synced files as raw bytes for both full and incremental uploads while preserving `replaceAll`, `deletedFiles`, and queued incremental sync behavior - update the fake cloud sandbox server and desktop-side tests to validate multipart uploads and binary byte preservation ## Why The previous upload path decoded files as UTF-8 strings before sending them to the engine, which corrupted binary assets and broke cloud previews for files like images, fonts, and wasm. ## Impact Desktop cloud sandbox syncs now send byte-exact file contents to the engine, including incremental syncs. ## Compatibility - depends on the engine multipart upload support in dyad-sh/dyad-llm-engine#146 - the engine PR keeps legacy JSON uploads available for older desktop clients, but this desktop change is required for binary-safe uploads ## Validation - `npm test -- src/ipc/utils/cloud_sandbox_provider.test.ts` - `npm run ts` - `npm run lint` - `npm run fmt:check` <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/3188" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> Co-authored-by:
Will Chen <7344640+wwwillchen@users.noreply.github.com>