mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-07-04 21:32:10 +00:00
The forced-retention cascade keyed conversion off expiredAt: null, so a switch from all to ephemeral retention skipped conversations that were already isTemporary: false with a future expiredAt. Message-only paths (branch, artifact, abort) then produced a temporary message under a parent that stayed visible in history via the active non-temporary branch of the visibility filter. Gate the cascade on isTemporary !== true instead so saveMessage, saveConvo, and the message backfill all convert non-temporary parents and their messages regardless of an existing active expiration, while remaining a no-op once a conversation is already temporary. |
||
|---|---|---|
| .. | ||
| api | ||
| client | ||
| data-provider | ||
| data-schemas | ||