mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-07-10 16:23:44 +00:00
Project membership writes bypassed forced retention: assigning a chat to a project, removing it, or deleting the project rewrote the conversation row (chatProjectId) without setting isTemporary/expiredAt. On a deployment that switched to ephemeral mode, touching an older permanent chat this way left it visible and non-expiring. Load the interface config on the assign and delete project routes and cascade forced retention through the touched conversation(s): assign/remove caps the single conversation, its messages, and its shares; delete caps every member chat before unassigning. Extract the bucketed tag cascade into a shared helper so the project cascade reuses the same conversion/backfill/cap logic, and add a shared resolveForcedRetentionDate helper. All paths are a no-op outside forced retention, so non-ephemeral behavior is unchanged. |
||
|---|---|---|
| .. | ||
| api | ||
| client | ||
| data-provider | ||
| data-schemas | ||