From ac16dc5e6453ac7704e4edc21ced019be638b288 Mon Sep 17 00:00:00 2001 From: 134 Date: Tue, 23 Jun 2026 13:35:54 +0800 Subject: [PATCH] fix: reject rapid stale canvas autosaves --- lib/canvas/canvas-save-conflict.ts | 2 +- tests/routes/canvas-chat-helpers.test.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/canvas/canvas-save-conflict.ts b/lib/canvas/canvas-save-conflict.ts index 1a7364243..0bb8c94ed 100644 --- a/lib/canvas/canvas-save-conflict.ts +++ b/lib/canvas/canvas-save-conflict.ts @@ -16,7 +16,7 @@ export function isStaleCanvasSaveBaseRevision(params: { params.baseCanvasUpdatedAt || params.baseCanvasRevision ); if (!baseDate) return false; - return baseDate.getTime() + 1000 < params.currentUpdatedAt.getTime(); + return baseDate.getTime() < params.currentUpdatedAt.getTime(); } export function buildStaleCanvasSaveConflictPayload(currentUpdatedAt: Date) { diff --git a/tests/routes/canvas-chat-helpers.test.ts b/tests/routes/canvas-chat-helpers.test.ts index 28fae44c4..ae8185464 100644 --- a/tests/routes/canvas-chat-helpers.test.ts +++ b/tests/routes/canvas-chat-helpers.test.ts @@ -145,6 +145,12 @@ test.describe("canvas chat pure helpers", () => { baseCanvasUpdatedAt: "2026-06-22T00:00:05.000Z", currentUpdatedAt, }) + ).toBe(true); + expect( + isStaleCanvasSaveBaseRevision({ + baseCanvasUpdatedAt: "2026-06-22T00:00:05.500Z", + currentUpdatedAt, + }) ).toBe(false); expect( isStaleCanvasSaveBaseRevision({