Mohamed Boudra and GitHub
bb889dae99
feat: stream files as binary frames over WebSocket ( #659 )
...
Replace base64-in-JSON file transfers with binary WebSocket frames to
unblock the JS thread when assistant markdown messages contain images.
Receive cost (JSON.parse over multi-MB base64) and persist cost (base64
re-encode to disk) both removed.
- Split daemon-client `exploreFileSystem` into `listDirectory` + `readFile`;
`readFile` returns `{ bytes, mime, size, modifiedAt }`. Encoding stays
private to the seam.
- New `packages/server/src/shared/binary-frames/` module hosts terminal
frames (moved from `terminal-stream-protocol.ts`) and new file-transfer
opcodes (`FileBegin` / `FileChunk` / `FileEnd`) with request-id correlation.
- Add optional `acceptBinary` to `FileExplorerRequestSchema`. New daemons
emit binary frames when set; legacy JSON path remains for old clients.
Compat fallback lives only inside `readFile`.
- New `persistAttachmentFromBytes` writes bytes directly: native via
`expo-file-system` `File.write(Uint8Array)`, web via Blob -> IndexedDB,
desktop via new `write_attachment_bytes` IPC. `persistAttachmentFromBase64`
removed.
2026-05-02 14:02:27 +08:00
..
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-05-02 12:12:44 +07:00
2026-05-02 12:12:44 +07:00
2026-04-18 14:21:40 +07:00
2026-04-30 22:05:49 +08:00
2026-04-18 12:08:30 +07:00
2026-04-18 12:08:30 +07:00
2026-04-24 12:26:10 +08:00
2026-04-01 13:37:51 +07:00
2026-04-01 13:37:51 +07:00
2026-04-04 16:35:31 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-03-10 12:56:18 +07:00
2026-04-24 12:26:10 +08:00
2026-03-21 20:22:15 +07:00
2026-04-06 18:15:30 +07:00
2026-05-01 19:01:19 +07:00
2026-05-01 19:01:19 +07:00
2026-04-24 11:55:43 +07:00
2026-04-24 11:55:43 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-28 13:28:02 +07:00
2026-04-14 03:05:45 +07:00
2026-04-24 12:26:10 +08:00
2026-04-14 03:05:45 +07:00
2026-04-24 12:26:10 +08:00
2026-04-30 21:35:58 +08:00
2026-04-19 14:26:50 +07:00
2026-04-19 14:26:50 +07:00
2026-04-24 12:26:10 +08:00
2026-03-29 23:20:18 +07:00
2026-03-29 23:20:18 +07:00
2026-05-01 19:51:58 +07:00
2026-04-30 21:35:58 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-18 09:56:14 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-01-26 18:03:51 +07:00
2026-03-04 11:57:22 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-30 10:38:07 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-16 10:33:49 +08:00
2026-04-16 10:33:49 +08:00
2026-05-02 14:02:27 +08:00
2026-04-30 12:56:09 +08:00
2026-04-30 12:56:09 +08:00
2026-04-24 12:26:10 +08:00
2026-05-02 12:12:44 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-26 22:25:14 +07:00
2026-04-26 13:16:24 +07:00
2026-04-12 09:56:05 +08:00
2026-04-26 16:12:09 +07:00
2026-04-27 17:13:52 +07:00
2026-05-02 14:02:27 +08:00
2026-04-24 12:26:10 +08:00
2026-05-01 11:42:30 +07:00
2026-04-19 14:26:52 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-27 13:51:53 +07:00
2026-04-15 10:52:28 +07:00
2026-04-24 12:26:10 +08:00
2026-04-27 15:22:16 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-23 15:19:40 +07:00
2026-04-23 15:19:40 +07:00
2026-04-23 15:19:40 +07:00
2026-04-23 15:19:40 +07:00
2026-04-26 13:16:24 +07:00
2026-04-26 13:16:24 +07:00
2026-04-30 21:36:41 +08:00
2026-04-30 21:36:41 +08:00
2026-03-18 01:36:54 +07:00
2026-03-21 20:22:15 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-03-21 20:22:15 +07:00
2026-03-18 20:39:16 +07:00
2026-03-21 20:22:15 +07:00
2026-03-21 20:22:15 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-06 18:15:30 +07:00
2026-05-01 16:18:46 +07:00
2026-04-27 17:13:52 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 15:57:13 +07:00
2026-04-24 12:26:10 +08:00
2026-05-02 13:19:42 +08:00
2026-05-02 12:12:44 +07:00
2026-03-21 20:22:15 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-02-18 15:10:20 +07:00
2026-04-24 12:26:10 +08:00
2026-04-24 12:26:10 +08:00
2026-04-26 16:12:09 +07:00
2026-05-02 12:12:44 +07:00
2026-04-30 21:36:41 +08:00
2026-04-20 18:06:09 +07:00
2026-04-26 13:06:35 +07:00
2026-04-26 13:06:35 +07:00