LibreChat/client/src/utils
Marco Beretta 151dc9e03e
Some checks are pending
Backend Unit Tests / Build packages (push) Waiting to run
Backend Unit Tests / Codegraph select (push) Waiting to run
Backend Unit Tests / TypeScript type checks (push) Blocked by required conditions
Backend Unit Tests / Circular dependency checks (push) Waiting to run
Backend Unit Tests / Tests: api (shard 1/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: api (shard 2/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: api (shard 3/3) (push) Blocked by required conditions
Backend Unit Tests / Tests: data-provider (push) Blocked by required conditions
Backend Unit Tests / Tests: data-schemas (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 1/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 2/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 3/4) (push) Blocked by required conditions
Backend Unit Tests / Tests: @librechat/api (shard 4/4) (push) Blocked by required conditions
Codegraph E2E Votes / vote (full suite) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Waiting to run
Frontend Unit Tests / Codegraph select (push) Waiting to run
Frontend Unit Tests / Build packages (push) Waiting to run
Frontend Unit Tests / TypeScript type checks (client) (push) Blocked by required conditions
Frontend Unit Tests / Tests: @librechat/client (push) Blocked by required conditions
Frontend Unit Tests / Tests: Ubuntu (shard 1/2) (push) Blocked by required conditions
Frontend Unit Tests / Tests: Ubuntu (shard 2/2) (push) Blocked by required conditions
Frontend Unit Tests / Vite build verification (push) Blocked by required conditions
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Waiting to run
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Blocked by required conditions
📌 fix: Keep Pinned Chats Pinned Through a New Turn (#15230)
* fix: keep pinned chats in the Pinned section after a new turn

A chat's conversation state snapshots the sidebar-owned flags when the chat
is opened, and the pin mutation never reaches it. Pinning a chat that is
already open therefore leaves a stale `pinned: false` on that state, and the
SSE handlers write it back over both list caches on the next turn. The chat
drops out of Pinned and reappears under Today, since groupConversationsByDate
only skips the rows the chats cache still marks pinned.

Strip `pinned` and `isShared` from the conversation state before it reaches
the caches, and carry the cached row's value forward whenever an updater omits
one. The pin mutation still sends `pinned` explicitly, so unpinning a chat
removes it from the section exactly as before.

The server half of this bug was fixed in #14860, which put `pinned` in
excludedKeys so saveMessageToDatabase's unset sweep stops clearing it, but it
went in without a test. Cover it here: without that entry the sweep unpins the
row on every message, which is what the released builds still do.

* fix: preserve pinned flags during uncached upserts

* fix: narrow nullable SAML profiles

---------

Co-authored-by: Danny Avila <danny@librechat.ai>
2026-08-27 07:47:30 -04:00
..
__tests__ perf: Avoid Parallel Full and Paged Prompt Loading on Startup (#15031) 2026-08-25 21:21:17 -04:00
diagram 🧜 feat: Open Mermaid Diagrams as Artifacts with SVG/PNG Export (#14713) 2026-08-09 09:02:42 -04:00
activityLabels.ts 🪶 refactor: Polish Event Subagent Activity (#15152) 2026-08-24 02:24:30 -04:00
agentModelSelection.spec.ts 🥛 fix: Drop Stale Saved Model Defaults in Builder Forms (#15179) 2026-08-25 08:18:17 -04:00
agentModelSelection.ts 🌐 fix: Expose Gemini Models to Vertex AI Agents (#15234) 2026-08-27 06:50:23 -04:00
agents.tsx
approval.spec.ts 🍡 feat: Batched User Questions With A Single Bounded Answer Form (#14737) 2026-08-11 01:06:16 -04:00
approval.ts 🍡 feat: Batched User Questions With A Single Bounded Answer Form (#14737) 2026-08-11 01:06:16 -04:00
artifacts.ts 📄 feat: accept PowerPoint template MIME type (#14761) 2026-08-14 00:22:01 -04:00
buildDefaultConvo.ts
buildTree.ts 🎨 refactor: adopt the @librechat/client design system (semantic color tokens + component migration) (#13879) 2026-08-06 09:15:17 -04:00
citations.ts
cleanupPreset.ts
clock.ts 🕰️ feat: Clock Format and Week Start Preferences (#15121) 2026-08-23 18:41:14 -04:00
cn.ts
collection.ts
configHtml.ts
conversation.ts
conversationTags.spec.ts
conversationTags.ts
convos.fakeData.ts
convos.spec.ts 🫥 feat: Add Temporary Chat Empty State and Active Indicator (#15086) 2026-08-21 11:35:12 -04:00
convos.ts 📌 fix: Keep Pinned Chats Pinned Through a New Turn (#15230) 2026-08-27 07:47:30 -04:00
createChatSearchParams.spec.ts
createChatSearchParams.ts
documentTitle.ts 🗂️ feat: Display Chat Title in Tab Setting (#14881) 2026-08-16 08:59:31 -04:00
downloadFile.ts 📄 fix: Serve Stored Text for "Upload as Text" File Downloads (#14723) 2026-08-21 14:24:43 -04:00
drafts.spec.ts ✏️ feat: Edit Pasted Text and Clear It on New Chat (#15017) 2026-08-25 20:06:59 -04:00
drafts.ts ✏️ feat: Edit Pasted Text and Clear It on New Chat (#15017) 2026-08-25 20:06:59 -04:00
email.ts
endpoints.spec.ts 🏷️ fix: Model Spec Menu Label and Agent Avatar Fallbacks (#14887) 2026-08-16 11:04:25 -04:00
endpoints.ts 🖼️ refactor: Consolidate Provider Icons Into a Single Registry (#15148) 2026-08-24 13:00:38 -04:00
errors.ts
favoritesError.ts
files.spec.ts 📎 fix: Re-enable Send After File Upload (#14727) 2026-08-10 15:05:22 -04:00
files.ts ✏️ feat: Edit Pasted Text and Clear It on New Chat (#15017) 2026-08-25 20:06:59 -04:00
focus.ts
forms.spec.tsx 🥛 fix: Drop Stale Saved Model Defaults in Builder Forms (#15179) 2026-08-25 08:18:17 -04:00
forms.tsx 🥛 fix: Drop Stale Saved Model Defaults in Builder Forms (#15179) 2026-08-25 08:18:17 -04:00
getDefaultEndpoint.ts
getLoginError.ts
getThemeFromEnv.js 🎨 feat: Add Versioned Theme Foundation (#14709) 2026-08-10 13:41:03 -04:00
getThemeFromEnv.spec.js 🎨 feat: Refine Client Colors and Sharing Dialogs (#14734) 2026-08-10 22:43:57 -04:00
greeting.ts 👋 feat: Day-Aware Landing Greeting Schedule (#14633) 2026-08-07 00:05:30 -04:00
groupToolCalls.ts perf: Optimize First Load of Large Conversations (#14901) 2026-08-16 19:45:21 -04:00
heicConverter.spec.ts
heicConverter.ts
icons.ts 🖼️ refactor: Consolidate Provider Icons Into a Single Registry (#15148) 2026-08-24 13:00:38 -04:00
imageResize.ts 🗜️ feat: Let Users Toggle Client-Side Image Resizing (#14883) 2026-08-16 18:04:03 -04:00
index.ts 🥛 fix: Drop Stale Saved Model Defaults in Builder Forms (#15179) 2026-08-25 08:18:17 -04:00
json.ts
languages.ts
latex.spec.ts 🧮 fix: Currency-Safe Single-Dollar LaTeX via Micromark Tokenizer (#15181) 2026-08-24 22:29:02 -04:00
latex.ts 🧮 fix: Currency-Safe Single-Dollar LaTeX via Micromark Tokenizer (#15181) 2026-08-24 22:29:02 -04:00
localStorage.ts ✏️ feat: Edit Pasted Text and Clear It on New Chat (#15017) 2026-08-25 20:06:59 -04:00
logger.ts
map.ts
markdown.ts
memory.spec.ts 🎛️ feat: Consistent Dialogs, Clearer Settings, and a Keyboard Shortcuts Switch (#14882) 2026-08-16 16:10:17 -04:00
memory.ts 🎛️ feat: Consistent Dialogs, Clearer Settings, and a Keyboard Shortcuts Switch (#14882) 2026-08-16 16:10:17 -04:00
mermaid.ts 🧜 feat: Open Mermaid Diagrams as Artifacts with SVG/PNG Export (#14713) 2026-08-09 09:02:42 -04:00
messages.spec.ts 📌 fix: Keep the Settled Turn Mounted Through Final Content Compaction (#15186) 2026-08-25 06:26:17 -04:00
messages.ts 📌 fix: Keep the Settled Turn Mounted Through Final Content Compaction (#15186) 2026-08-25 06:26:17 -04:00
numbers.spec.ts
numbers.ts
presets.ts
previewCache.ts
promptGroups.ts perf: Avoid Parallel Full and Paged Prompt Loading on Startup (#15031) 2026-08-25 21:21:17 -04:00
prompts.ts
reasoningLabels.ts 🧠 feat: Add Live Reasoning Labels (#14893) 2026-08-16 18:11:55 -04:00
redirect.ts
resetConvo.ts
resources.ts
roles.ts
routes.ts
runStepDuration.ts ⏱️ feat: Show Elapsed Time Under the Streaming Response (#15167) 2026-08-24 11:36:36 -04:00
scaleImage.ts
share.ts
shortcuts.spec.ts 🎛️ feat: Consistent Dialogs, Clearer Settings, and a Keyboard Shortcuts Switch (#14882) 2026-08-16 16:10:17 -04:00
shortcuts.ts 🎛️ feat: Consistent Dialogs, Clearer Settings, and a Keyboard Shortcuts Switch (#14882) 2026-08-16 16:10:17 -04:00
steer.ts 🫗 fix: Drain Quoted Excerpts Into Mid-Run Steering (#15175) 2026-08-24 22:29:13 -04:00
subagentContent.ts 🫂 fix: Route Subagent Activity Through the Chat Renderer (#15137) 2026-08-23 15:20:28 -04:00
textarea.ts
tilde.spec.ts
tilde.ts
timestamps.ts
tokens.spec.ts
tokens.ts
toolCallPhase.ts 🧩 refactor: Resolve Tool-Card State Once (#14934) 2026-08-17 12:05:17 -04:00
toolLabels.ts
voices.ts