• keppo-bot[bot]'s avatar
    [codex] fix binary-safe cloud sandbox sync uploads (#3188) · 26dc0390
    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: 's avatarWill Chen <7344640+wwwillchen@users.noreply.github.com>
    26dc0390
cloud_sandbox_provider.test.ts 18.3 KB