From 0604c323c393c22af2874a3ba5037915e1e8b702 Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Fri, 30 Oct 2026 20:43:08 +0100 Subject: [PATCH] fix(core): re-point source records when a per-user move merges entries Co-Authored-By: Claude Opus 5.5 --- packages/core/src/entries.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/core/src/entries.ts b/packages/core/src/entries.ts index 28d5110..94dbcef 100644 --- a/packages/core/src/entries.ts +++ b/packages/core/src/entries.ts @@ -579,6 +579,16 @@ async function moveEntry( await moveEngagements(k, userId, src.id, dst.id, actor); await writeEntry(k, src, {}, actor, { extra: { deleted_at: nowIso() } }); } + if (result.id !== src.id) { + // The moved entry merged into another one: source records that mapped to it keep syncing into the + // survivor. Engagements keep their ids when re-parented, so their mappings stay valid. + await k + .updateTable("source_records") + .set({ target_id: result.id }) + .where("target_entity", "=", "entry") + .where("target_id", "=", src.id) + .execute(); + } if (opts.undo) return result; await repointCopiesAndListItems(k, userId, src.workId, target.id, actor);