fix(canvas): make persistence race-safe
2 months ago
Authored
Cursor AgentCo-authored-by: Max Weinbach <mweinbach@users.noreply.github.com>
Parents6e6c79f6dffd16
42 files changed
- apps/desktop/electron/ipc/files.ts+36−0
- apps/desktop/electron/ipc/types.ts+6−0
- apps/desktop/electron/ipc/window.ts+10−0
- apps/desktop/electron/main.ts+10−0
- apps/desktop/electron/preload.ts+42−0
- apps/desktop/electron/qualityGateMain.ts+1−0
- apps/desktop/electron/services/windowCloseCoordinator.ts+101−0
- apps/desktop/src/App.tsx
+23
−0
apps/desktop/src/app/store.actions/explorer.ts+15−3apps/desktop/src/app/store.actions/preview.ts+72−0apps/desktop/src/app/store.helpers.ts+44−2apps/desktop/src/app/store.helpers/jsonRpcSocket.ts+79−0apps/desktop/src/lib/canvasDocumentController.ts+561−0apps/desktop/src/lib/canvasDocumentLifecycle.ts+26−0apps/desktop/src/lib/canvasSaveAs.ts+19−0apps/desktop/src/lib/desktopApi.ts+18−0apps/desktop/src/lib/desktopCommands.ts+17−0apps/desktop/src/lib/desktopSchemas.ts+17−0apps/desktop/src/lib/webAdapter.ts+11−0apps/desktop/src/ui/Canvas.tsx+231−117apps/desktop/test/canvas-hooks-stability.test.tsx+91−0apps/desktop/test/canvas-persistence-races.test.ts+474−0apps/desktop/test/canvas-read-path.test.ts+12−10apps/desktop/test/canvas-save-as-recovery.test.ts+23−0apps/desktop/test/canvas-window-lifecycle.test.tsx+22−0apps/desktop/test/helpers/mockDesktopCommands.ts+3−0apps/desktop/test/ipc-files.test.ts+67−0apps/desktop/test/store-explorer.test.ts+39−0apps/desktop/test/window-close-coordinator.test.ts+103−0docs/generated/websocket-jsonrpc.d.ts+12−2docs/generated/websocket-jsonrpc.schema.json+1−1docs/websocket-protocol.md+14−2src/platform/paths.ts+17−0src/server/canvasDocumentPersistence.ts+733−0src/server/jsonrpc/routes/types.ts+2−0src/server/jsonrpc/routes/workspace.ts+133−0src/server/jsonrpc/schema.workspace.ts+149−0src/server/transport/h3/server.ts+3−0src/shared/canvasDocument.ts+104−0test/canvasDocumentPersistence.test.ts+494−0test/jsonrpc.workspace-route.test.ts+146−0test/platform/paths.test.ts+19−0