## LibreChat-AI/LibreChat — v0.8.8-rc3…v0.8.8-rc4

_121 commits._

### Features
- **🛍️ feat: Add Programming App to OpenRouter Categories (#16228)** (d0fb459)
- **🌞 feat: Add GPT-6 Sol and Luna Support (#16221)** (feba263)
- **🔐 feat: Support Cognito Access Tokens for Agent Management (#16224)** (418d62d)
- **🎹 feat: Add Claude Opus 5.5 Support (#16215)** (6500e22)
- **🧑‍🚀 feat: Add Grok 4.7 Support Through xAI (#16173)** (cae9afd)
- **📍 test: Add Deployed Smoke Profile (#16135)** (50d46a3)

### Fixes
- **🩼 fix: Keep OpenRouter Category Override Test Type-Safe (#16229)** (7ea6148)
- **🔍 fix: Enable File Search When Attaching From the Files Panel (#16223)** (be6b5bf)
- **🎽 fix: Give Each Streamed Tool Call a Stable Outward Index (#16209)** (ef89fbd)
- **🎰 fix: Show Live Tool Combo Multipliers (#16202)** (e7a451c)
- **⛲ fix: Prevent Agent Model Stream Idle Timeouts (#16201)** (45300a6)
- **🥫 fix: Normalize Legacy MCP Header Maps on Cached Reads (#16200)** (f192308)
- **🫥 fix: Preserve Absent MCP Header Maps Across Database Saves (#16194)** (453b35d)
- **🍴 fix: Split Combined Bit Updates in ACL Permission Writes (#16172)** (fe03f12)
- **🚥 fix: Preserve Insights With Guarded ACL Role Updates (#16170)** (1e2142e)
- **🏦 fix: Require Named Helm Credential Secrets (#16175)** (fe75756)
- **🎈 fix: Fill Reasoning Previews Before Throttling (#16178)** (1746a4e)
- **⏹️ fix: Cancel Stale Throttled Scroll Callbacks (#16167)** (16ef3fd)
- **🧻 fix: Unblock Conversation Deletion After Queued Turns (#16174)** (bddfc5c)
- **🔤 fix: Validate MIME Patterns With the Active Regex Engine (#16177)** (e8b88a2)
- **📯 fix: Explain Tenant Index Migration on Startup Conflicts (#16176)** (9efb2cb)
- **📝 fix: Preserve Chat Drafts Across Navigation and Clearing (#16161)** (6f30170)
- **🔂 fix: Reuse Redis Caches Without Changing TTLs (#16154)** (86c5884)
- **🪑 fix: Preserve Tool Pane Choices Through Response Finalization (#16152)** (9b497ac)
- **✒️ fix: Persist a Generated Title Before the Turn Ends (#16137)** (e402405)
- **🌁 fix: Stop Painting the Closed Mobile Drawer (#16127)** (fe79265)
- **📠 fix: Preview SVG Artifacts From Their Edited Source (#16123)** (61fe243)
- **🖼️ fix: Resolve Pinned Model Icons from Endpoint Config (#16089)** (99707d6)
- **✒️ fix: Render Code in the Bundled Monospace Font (#16146)** (0cc52cd)
- **🫧 fix: Stop the Live Activity Row From Flashing Open on Code Calls and Thoughts (#16145)** (ddd8d78)
- **🚷 fix: Isolate Jina Credential Provenance (#16134)** (7b645f4)
- **🪢 fix: Bind Preserved MCP API Keys to Server Configuration (#16136)** (1e00763)
- **⚓ fix: Keep a Resumed Compaction Anchored to the Turn It Summarizes (#16037)** (8c41809)
- **🕳️ fix: Repair Legacy Meili Cleanup Index (#16133)** (f1079c0)
- **☔ fix: Preserve MCP Authorization During Token Endpoint Outages (#16126)** (ceeceda)
- **🎽 fix: Hand Same-Batch Code Calls the Files a Skill Just Loaded (#16115)** (feb8682)
- **🥢 fix: Exclude Prompt Inputs From Terminal Events (#16112)** (c692357)
- **🥖 fix: Refresh MCP Credentials That Arrive Already Expired (#16111)** (64f8211)
- **🧺 fix: Bound Background Completion Batches (#16102)** (36efc7b)
- **📬 fix: Persist Background Results Before Parent Rows (#16101)** (8a3ab43)
- **📬 fix: Deliver Same-Turn Background Results (#16097)** (5d2fa85)
- **🔑 fix: Stringify Ban Cache Keys When Redis Is Off (#16039)** (f80f0be)
- **🗂️ fix: Keep a Running Attachment Chat in the Sidebar (#16104)** (aacf1de)
- **🥾 fix: Define Code Execution Persistence Boundaries (#16099)** (864c68e)
- **📄 fix: Send Textual Documents to Claude Through Gateways as Text (#16055)** (61d034c)
- **🎱 fix: Stop Sealing a Code Environment Decision a Chat Never Made (#16056)** (1080f90)
- **🫗 fix: Roll Back Incomplete Skill Archive Imports (#16052)** (9acf9f0)
- **📤 fix(langfuse): support documented media upload types (#16079)** (7ceafeb)
- **🎟️ fix: Preserve BYOM Tool Calls Through Capacity Windows (#16060)** (c0affed)
- **📱 fix: Open Sign-In and External Links From iOS Home-Screen Apps (#16077)** (038903a)
- **🗾 fix: Route Cross-Region Attachments Through CloudFront (#16082)** (c7665ab)
- **📱 fix: Fit the Tool Library and Skills Pickers to Small Screens (#16067)** (5c72d41)
- **🔑 fix: Ask for MCP Sign-In When a Server Rejects Refreshed Tokens (#16075)** (03f182f)
- **🔓 fix: Stop Code Outputs and Tool-Routed Spreadsheets From Locking Threads (#16058)** (db674ed)
- **🥡 fix: Delete Storage and Embeddings With Owned Agent Files (#16007)** (94fed5b)
- **👛 fix: Drop Unread Credentials From MCP Domain Validation (#16035)** (12d7890)
- **🗼 fix: Serialize MCP OAuth Token Refresh Across Replicas (#15993)** (2452f49)
- **🗣️ fix: Keep Provider Error Text on Unclassified Agent Failures (#16034)** (9633edc)
- **🌐 fix(locales): correct English setting descriptions (#16023)** (aa5945b)
- **📭 fix: Deliver Attachment Text Until a File Tool Holds It (#16027)** (9e83b10)
- **📖 fix: Verify Agents OpenAPI contracts and disable external reporting (#16028)** (44af4d3)
- **🖨️ fix: Regenerate the Agents OpenAPI Spec With `repositoryInstructions` (#16029)** (96eae2b)
- **🏛️ fix: Resolve Global Access Roles for Tenant Owner Grants (#15986)** (6d9f427)
- **🪑 fix: Explain Workspace Capacity Timeouts (#16016)** (3012a20)
- **🛎️ fix: Route Background Tool Handoffs (#15990)** (182cce5)
- **🪒 fix: Strip Cache-Bust Suffixes From Every Local File Read (#15991)** (be54587)
- **🎚️ fix: Allow Opting Out of the MCP OAuth `resource` Parameter (#15982)** (8fa56b0)
- **⛓️ fix: Bind Programmatic Bash to Selected Workspaces (#15992)** (4d08bcf)
- **⏮️ fix: Keep the Last Keystrokes When a Run Finishes (#15987)** (873330b)
- **📓 fix: Keep Typed Text When Starting a New Chat (#15985)** (52293e1)
- **🧦 fix: Restore OpenID Refresh After the Session Store TTL Expires (#15983)** (35d5a70)
- **🪃 fix: Remember the Last Code Approval Mode (#15973)** (c80f5a7)
- **🧱 fix: Keep Streamed Content When a Turn Fails (#15961)** (e4f6b01)
- **🍯 fix: Stop Approval Pauses From Unsealing Code Environments (#15963)** (ed95a9b)

### Backend
- **🚀 v0.8.8-rc4 (#16147)** (361553f)
- **✨ feat: Client-Executed Function Tools for the Responses API (#16078)** (cb52198)
- **🐾 style: Show the Multiplier Only on a Generic Tool Line (#16225)** (75e0102)
- **🧑‍🤝‍🧑 style: Seat the Live Multiplier Beside Its Status Line (#16220)** (a9d63d0)
- **🪞 ci: Mirror Published Images to a Legacy GHCR Namespace (#16214)** (07e1553)
- **📦 chore: bump agents SDK to v3.9.1 (#16212)** (a54cc32)
- **🎩 docs: Set Expectations for AI-Assisted Contributions (#16207)** (a9c8793)
- **📷 test: Capture Revision-Pinned PR Screenshot Evidence (#16191)** (07e91cc)
- **⏲️ feat: Report a Background Task's Start, Settlement and Elapsed Time (#16193)** (fb0a03f)
- **🛋️ perf: Discover MCP Tools Only When Needed (#16190)** (1734855)
- **🥢 ci: Select Quote Text Across the Streaming Fade's Word Spans (#16189)** (80e55b4)
- **📋 docs: Clarify Type of Change and Screenshot Uploads in the PR Template (#16165)** (8cfa9da)
- **⚡ perf: Throttle Code Highlighting While a Message Streams (#16073)** (14d8bb8)
- **🖍️ perf: Highlight Tool Code Once, and Only When Its Pane Is Open (#16143)** (692e7f6)
- **🦾 chore: Bump Agents SDK to v3.9.0 (#16142)** (026f17e)
- **🛌 test: Poll Instead of Sleeping for Dead Subagent Owner Expiry (#16144)** (a2a5ff7)
- **⚡ perf: Virtualize the Model Selector's Search Results (#16074)** (7dc745a)
- **⚡ perf: Preserve Message References in the Content Handler (#16072)** (2db8d91)
- **⚡ perf: Exclude Agent Version History From Default `getAgent` Reads (#16070)** (5f4a07f)
- **⚡ perf: Split Streaming Markdown Blocks Incrementally (#16071)** (9cd1de3)
- **🫧 feat: Hold a Live Run's Activity at One Row (#16118)** (1f66e9a)
- **🥊 test: Prove MCP Refresh Coordination Across Replica Processes (#16131)** (1ff694b)
- **📟 feat: Render System Events as Distinct Turns (#16119)** (f1bdc56)
- **💵 feat: Show Cost per Record, Step and Response in the Trace Ledger (#16120)** (2551a05)
- **🫛 test: Separate an Authoring Run From a Skills-Off Run (#16128)** (d281c31)
- **✂️ refactor: Name Tool Rounds From the Trace, and Match a Cut Response From Its End (#16113)** (29ed099)
- **🎫 perf: Limit Redis Script Caching to Atomic Claims (#16116)** (5afee47)
- **💌 feat: Authenticate RUM Proxy Exports (#16114)** (16a7e11)
- **🐣 feat: Invoke Newly Authored Skills In the Same Run (#16036)** (f60ee28)
- **📒 ci: Upload Per-Test Jest Results From Review Workflows (#16110)** (ba44443)
- **🌳 feat: Isolate Attached Workspaces by Conversation (#16107)** (2df937d)
- **💬 feat: Read a Model Call as a Conversation in the Trace Viewer (#16103)** (a35745b)
- **🗣️ feat: Trace Viewer Roles, Agent Identity and Tool Rounds (#16098)** (fa1e470)
- **⛽ feat: Negotiate Background Command Timeouts (#16100)** (13c74c9)
- **🚐 perf: Enable Redis Stream Coalescing by Default (#16093)** (2f67471)
- **📋 chore: Restructure Pull Request Template (#16094)** (84aa045)
- **🌓 refactor: Scrim OGDialog With the Overlay Theme Role (#16068)** (c821638)
- **🪶 perf: Cut the Mount Cost of Finished Agent Messages (#16057)** (79d1cbb)
- **🚥 test: Hold Group Cache Reads Until Concurrent Callers Arrive (#16059)** (02efb1d)
- **🪜 feat: Trace Viewer Steps, Sequence Scale and Previews (#16009)** (c153c40)
- **📪 feat: Send Per-Request MCP Headers Without Hiding the Tool Catalog (#15988)** (a26a670)
- **🔌 feat: OpenAPI spec and docs for the public Agents API (#15928)** (69f0dd2)
- **🔅 style: Theme the Tool Approval Decision Fields (#16014)** (cacc148)
- **📖 Load Repository Instructions for Attached Workspaces (#16008)** (299dbc6)
- **👆 style: Thumb-Sized Send Button on Touch Devices (#15979)** (0da30ed)
- **⚗️ refactor: Separate Content, Tool, and Agent Types From the Assistants Module (#15910)** (385c6f8)
- **🪪 feat: Pass Schedule Identity to MCP Token Providers (#15962)** (21a9edb)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/LibreChat-AI/LibreChat?utm_source=github-action)._