Skip to content

📚 docs: Document Recent Dev Changes and Rewrite Temporary Chat Retention - #795

Open
berry-13 wants to merge 2 commits into
mainfrom
berry-13/docs-update-latest
Open

berry-13 wants to merge 2 commits into
mainfrom
berry-13/docs-update-latest

Conversation

@berry-13

@berry-13 berry-13 commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Documents the user- and admin-facing changes merged to LibreChat dev over the last two weeks that had no docs yet: required 2FA, passkeys, email address change, the ephemeral retention mode, the redesigned message composer (new page), chat list filters, unread replies and notifications, project instructions and files, Agent Builder conversation starters, the Agent Marketplace, undocking artifacts, Bash output, the missing theme appearance keys and color roles, Admin Panel override validation, and the new librechat.yaml keys (passkeys, emailChange, projects, conversationList, fileListLimit, interface.replyNotifications, interface.artifactUndocking, interface.composerRecentFiles, queue timeouts, rateLimits.mcpApps).

Supersedes #611: its temporary chat page is rewritten against the merged retention code, and its outdated screenshots are dropped. Pages that still described the old attach and MCP dropdowns are corrected. Features newer than v0.8.8 carry an availability note.

Change Type

  • Documentation update

Testing

  • pnpm build passes on the final tree
  • Every claim checked against LibreChat origin/dev, followed by an independent fact-check pass; all of its findings were fixed
  • Internal links and anchors in the added lines resolve

Checklist

  • English sources only; locale copies are left to the translation workflow
  • No em dashes in added text

- Rewrite the temporary chat feature page into a combined Temporary Chat
  & Data Retention guide covering retentionMode, the three modes, the
  behavior matrix, save-path coverage, migration, and an FAQ
- Document the new ephemeral retention mode in the interface config
  reference and align retainAgentFiles notes
- Update the activation steps for the new top-right Temporary Chat button
  and add screenshots
Cover the user-facing and admin-facing changes merged to LibreChat dev over
the last two weeks: required two-factor authentication, passkeys, email
address change, ephemeral retention mode, the redesigned message composer,
chat list filters, unread replies and notifications, project instructions and
files, conversation starters in the Agent Builder, the Agent Marketplace,
undocking artifacts, Bash output rendering, theme appearance keys and roles,
config override validation, and the new librechat.yaml keys.

Rewrite the temporary chat page against the merged retention code, drop the
outdated screenshots, and fix pages that still described the old attach and
MCP dropdowns.
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
librechat-ai Ready Ready Preview Oct 1, 2026 10:22pm UTC

Request Review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-01T22:22:29.444488Z 19ed270 PR opened
🔒 Security Review ✅ Completed 2026-10-01T22:19:55.944183Z 19ed270 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📦 Next.js Bundle Analysis for librechat.ai

This analysis was generated by the Next.js Bundle Analysis action. 🤖

This PR introduced no changes to the JavaScript bundle! 🙌

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 19ed270a86

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- **To `all` or `ephemeral`:** existing chats get a deadline the next time they are written to. Under `ephemeral`, an older regular chat that receives a new message, edit, feedback or branch is converted to a temporary chat on the spot: it leaves history and search and loses its bookmarks. Chats nobody touches keep their current state.
- **Back to `temporary`:** chats saved under `all` still carry their deadlines and will still be deleted. Chats saved under `ephemeral` remain temporary chats and keep expiring.

To stop regular chats from expiring after leaving `all` or `ephemeral`, clear their deadlines in `mongosh`:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Clear retention deadlines from all preserved chat data

When leaving all or ephemeral after regular chats have already acquired deadlines, this rollback only unsets expiredAt on conversations and messages, even though the page states that attached files and shared links also receive retention deadlines. Those records can therefore still be deleted by the TTL index or file sweep, leaving the supposedly preserved chats with missing attachments or dead share links; extend the rollback to every affected collection or explicitly warn that those assets remain scheduled for deletion.

Useful? React with 👍 / 👎.

| <kbd>Shift</kbd>+<kbd>Enter</kbd> | New line. |
| <kbd>Ctrl</kbd>+<kbd>Enter</kbd> (<kbd>Cmd</kbd>+<kbd>Enter</kbd>) | While a response streams: the alternate action, **send now** when <kbd>Enter</kbd> queues, or **queue** when <kbd>Enter</kbd> steers. |
| <kbd>Alt</kbd>+<kbd>Enter</kbd> (<kbd>Option</kbd>+<kbd>Enter</kbd>) | While an agent responds: interrupt and send, when available. |
| <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd> (<kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>X</kbd>) | Stop the response. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the documented stop-response shortcut

The new composer table says that stopping a response uses Ctrl/Cmd+Shift+X, while the existing Agent streaming instructions on this same revision document the Stop action as Ctrl/Cmd+Shift+.. Users relying on the table during a long response or tool call will therefore be given a conflicting shortcut; verify the actual binding and make both sections document the same key combination.

Useful? React with 👍 / 👎.

</Step>
<Step>

**Pin the relying party ID (recommended).** Each passkey is permanently bound to the RP ID it was created under. If `DOMAIN_CLIENT` might ever change, set `PASSKEY_RP_ID` now so existing passkeys keep working.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Qualify when pinning the passkey RP ID preserves credentials

For deployments that later move to an unrelated hostname, pinning PASSKEY_RP_ID=chat.example.com does not keep existing passkeys working: WebAuthn requires the new origin's host to equal or be a subdomain of the pinned RP ID, so a move to a sibling such as new.example.com or another domain makes ceremonies fail. Limit this recommendation to host changes within the RP ID's scope and explain that a stable parent domain must be chosen before enrollment when sibling-subdomain moves are expected.

Useful? React with 👍 / 👎.

<Accordion title="What is the difference between all and ephemeral?">
`all` keeps chats normal and visible, with a delete-by date. `ephemeral` makes every chat
temporary: hidden from history and search, with the toggle locked on. Choose `all` for "delete
after N days" and `ephemeral` for "never keep conversations".

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid describing ephemeral mode as non-persistent

The phrase “never keep conversations” is inaccurate for operators choosing a compliance policy: ephemeral still writes conversations, messages, files, and links to storage and retains them for temporaryChatRetention (at least one hour and potentially up to a year) before background deletion. Describe it as hiding chats and expiring them after the configured period, and make clear that this mode does not provide zero-persistence or immediate deletion.

Useful? React with 👍 / 👎.

This branch was successfully deployed

1 active deployment
Preview — 19ed270a Deployed Oct 1, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant