LibreChat/packages
Marco Beretta 8bcfb0772c
fix: cap uploaded files in forced-retention convert-on-touch cascades
The migration sweep caps a conversation's File records, but the runtime
convert-on-touch cascades did not: converting a pre-existing chat through a
message save, edit, feedback, tag, or project write set deadlines on the
conversation, messages, and shares while leaving File documents at
expiredAt: null. File cleanup only sweeps rows whose own expiredAt is set, so
those uploads outlived the ephemeral chat's TTL.

Cap the conversation's files alongside messages and shares in both
cascadeForcedConversationRetention (single) and the bulk tag/project cascade,
reusing capConversationFiles and threading the File model through the cascade
helpers and their callers. Files are scoped by conversationId (a unique per-chat
id) since File.user is an ObjectId rather than the string user id.
2026-07-04 16:51:41 +02:00
..
api fix: enforce ephemeral retention on chat project membership changes 2026-07-03 15:03:09 +02:00
client 🧪 ci: Resolve DataTable test infinite re-render (#13947) 2026-06-24 23:40:18 -04:00
data-provider feat: add ephemeral retention mode for forced temporary chats 2026-06-30 04:51:45 +02:00
data-schemas fix: cap uploaded files in forced-retention convert-on-touch cascades 2026-07-04 16:51:41 +02:00