v0.8.8-rc1
Pre-release
Pre-release
https://www.librechat.ai/changelog/v0.8.8-rc1
🏞️ Highlights
- Interrupt or steer Agent runs in progress, or queue the next message
- Agents can ask up to four related questions in one form, pause for input or approval, then resume
- Redesigned Agent Builder with a unified Tools marketplace and background tools
- Experimental Agent Plugins with deployment Skills, MCP servers, and opt-in command hooks
- Activity groups, parent phase summaries, and live tool intent labels
- Experimental stateful Code Interpreter sessions with reusable conversation workspaces
- Agent-managed memory with optional per-agent isolation
- Stable shared-link updates, active-link badges, and personal copies
- Fullscreen artifact previews and Mermaid SVG/PNG export
- In-app Langfuse connections, tenant fanout, and admin session links
- Unified message layouts, multi-part response editing, and full-message copy
- Smooth text fade-in, adaptive streaming, and live MCP tool-catalog refresh
- Stronger SSRF guards for speech, OCR, and web tools
- Provider updates: GPT-5.6, Claude Opus 5 and Sonnet 5, Gemini 3.7 and 3.6 Flash, and Gemini 3.5 Flash-Lite
Click to expand Release Notes
✨ Features
- 🕒 feat: Track terms acceptance timestamp by @berry-13 in #10810
- 🔄 feat: Continue Shared Conversations as Personal Copies by @berry-13 in #13714
- 🪝 feat: HITL Tool Approval Scaffolding (Slice A) by @danny-avila in #12938
- 🧠 feat: Add Memory as an Agent Capability with Inline Tools and Ephemeral Badge by @danny-avila in #13869
- 📇 feat: Agent Contact Visibility with Owner Fallback by @peeeteeer in #13663
- 🪟 feat: Faithful Over-Window Context Estimate via Prune Mirror and Overhead Reserve by @danny-avila in #13959
- 🪭 feat: Add opt-in Langfuse fanout gateway + collector by @upman in #13872
- 🪝 feat: Human-in-the-Loop Runtime - Tool Approval + Ask-User-Question (Slice B) by @danny-avila in #13942
- 🪗 feat: Dock-Style Fisheye Nav Rail With Instant Hover Preview by @danny-avila in #14021
- 🤖 feat: Add Claude Sonnet 5 Support by @danny-avila in #14042
- 🥷 feat: Add
showInMenuOption to Model Specs by @alexkorep in #14034 - 🫷 feat: Exclude File Authoring Tools From Eager Execution by @danny-avila in #14051
- 🪝 feat: Configurable Tool-Approval Policy via Programmatic Hooks by @danny-avila in #14025
- 🧹 feat: Eager HITL Checkpoint Cleanup (Expiry + Deletion) & Full-Wiring E2E by @danny-avila in #14123
- 🧰 feat: Redesign Agent Builder with Unified Tools Marketplace, Skills & Orchestration by @berry-13 in #13952
- 📡 feat: add rum browser page-load diagnostics by @upman in #14106
- 🎚️ feat: Explicit "Use All Skills" Toggle in the Skills Section by @berry-13 in #14125
- 🙋 feat: ask_user_question - agent-initiated questions with durable pause/resume by @danny-avila in #14139
- 🗂️ feat: Per-Agent Memory Partitions by @danny-avila in #14084
- 🤖 feat: Add GPT-5.6 (Sol/Terra/Luna) OpenAI Models by @danny-avila in #14206
- 🪭 feat: support per-run central export suppression by @upman in #14207
- ✨ feat: stateful_code_sessions capability for warm Code API sandbox sessions (experimental) by @danny-avila in #14150
- 🧠 feat: Add GPT-5.6 reasoning.mode + reasoning.context (Responses API) by @danny-avila in #14233
- 🧵 feat: Background Tool Calls for Agents & Model Specs by @danny-avila in #14197
- 🗝️ feat: Encrypted Langfuse Fanout Config by @dustinhealy in #14107
- 🧭 feat: Mid-Run Steering and Queued Messages for Agent Runs by @danny-avila in #14220
- ♨️ feat: Prewarm Stateful Code Sandboxes with Cold-Boot UX Feedback by @danny-avila in #14239
- 📛 feat: Add Client Name Header to Tavily Search Requests by @manisrinivasan2k1 in #14082
- 💬 feat: Explain Steering & Queuing at Every User-Facing Surface by @danny-avila in #14260
- 🖼️ feat: Return Sandbox Images From
read_fileas Viewable Artifacts by @danny-avila in #14277 - feat: add low-noise Redis observability by @upman in #14309
- ✋ feat: Add Reclaim-Gated Controls to In-Flight Steers by @danny-avila in #14321
- 🫧 feat: Float In-Flight Steers Over the Thread with Collapsible Content by @danny-avila in #14365
- ⚡ feat: Add Gemini 3.6 Flash and Gemini 3.5 Flash-Lite Support by @danny-avila in #14369
- 🧵 feat: Native Background Execution for Code Interpreter Tools by @danny-avila in #14386
- ✳️ feat: Claude Opus 5 Support by @danny-avila in #14422
- ⏱️ feat: Configurable HTTP Server Timeouts by @danny-avila in #14481
- 🕶 feat: Generalize Admin Config Secret Redaction by @dustinhealy in #14509
- 🏷️ feat: Activity Groups With Fast-Model Headers by @danny-avila in #14391
- 🗝️ feat: Custom Endpoint API Key Encryption via Array Secret Registry by @danny-avila in #14510
- 🎯 feat: Tool Intent Label Capability (tool_intents) by @danny-avila in #14499
- 🪢 feat: Langfuse Fanout Connection Setting by @danny-avila in #14108
- 🛑 feat: Preemptive Steer - Backend Interrupt & Steer by @danny-avila in #14518
- 🎯 feat: Per-Tool Intent Labels for Model Specs by @danny-avila in #14526
- ⚡ feat: Interrupt & Steer, Client by @danny-avila in #14528
- 🧵 feat: Background-Native Code Execution Tools by @danny-avila in #14532
- 🎯 feat: Render Tool Intent as the Live Tool-Call Label by @danny-avila in #14536
- 🎯 feat: Per-Tool Intent Label Toggles in the Agent Builder by @danny-avila in #14550
- ⚡ feat: Reliable Interrupt & Steer Escalation and Recovery by @danny-avila in #14558
- 💬 feat: Interim Progress Card for Streaming Q&A Calls by @danny-avila in #14576
- 🚦 feat: Configurable Circuit Breakers for Runaway Streamed Tool Args by @danny-avila in #14613
- ⚡ feat: Coalesce Redis Streaming Delta Publications into Windowed Batches by @danny-avila in #14614
- 🔒 feat: Add allowedAddresses Exemption to Speech (STT/TTS) and OCR Config Schemas by @dustinhealy in #14559
- 🌊 feat: Wire Adaptive Stream Smoothing Across Google, Bedrock, and Zero-Disable Semantics by @danny-avila in #14660
- 🔗 feat: Admin Panel Link in Settings for Admins by @dustinhealy in #14662
- 👋 feat: Day-Aware Landing Greeting Schedule by @berry-13 in #14633
- 🔑 feat: Refresh-Capable Google Admin OAuth Sessions by @dustinhealy in #13832
- 🛡️ feat: Add Batched MCP Authority Proofs by @danny-avila in #14688
- 🪝 feat: Add Claude Hook Compatibility Layer by @danny-avila in #14412
- ⛶ feat: add fullscreen artifact previews by @berry-13 in #14585
- 🔌 feat: Add Agent Plugins (Experimental) by @danny-avila in #14704
- 🔗 feat: Shared Conversation Badge and Stable Share Links by @berry-13 in #14712
- 🧜 feat: Open Mermaid Diagrams as Artifacts with SVG/PNG Export by @berry-13 in #14713
- 🪶 feat: Resolve Explicit Subagents Lazily by @danny-avila in #14714
- 📡 feat: Route Web Search and Scrape Egress through the SSRF-safe Agent by @dustinhealy in #14606
- 🎨 feat: Add Versioned Theme Foundation by @danny-avila in #14709
- 🪆 feat: Add Parent Activity Phase Summaries by @danny-avila in #14721
- 🎨 feat: Refine Client Colors and Sharing Dialogs by @berry-13 in #14734
- 🎛️ feat: Adopt Composer Density Tokens by @danny-avila in #14730
- 🍡 feat: Batched User Questions With A Single Bounded Answer Form by @danny-avila in #14737
- 🪝 feat: Execute Agent Plugin Command Hooks by @danny-avila in #14755
- 🚣♀️ feat: Smooth Streaming Text Fade-In by @danny-avila in #14757
- 🪢 feat: add Langfuse session links by @upman in #14776
- 🔖 feat: Bound Parent Activity Phases With an Exclusive End Index by @danny-avila in #14768
- 💬 style: Unify Message Row Layout and Edit Surfaces by @berry-13 in #14770
- 📄 feat: accept PowerPoint template MIME type by @snapydziuba in #14761
- ⚡ feat: Add Gemini 3.7 Flash Support by @danny-avila in #14818
🐛 Fixes
- 🔑 fix: Honor User-Provided MCP API Key Instead of Forcing OAuth by @danny-avila in #13954
- 🪙 fix: Count Quote Tokens on Message Edit by @danny-avila in #13958
- 📋 fix: Route Clipboard Paste Through Upload Options by @dustinhealy in #13957
- 📇 fix: Index sharedlinks updatedAt for Cosmos DB Sorts by @danny-avila in #13979
- 📂 fix: Mount Skill Files Under skills/ in Code Interpreter by @danny-avila in #13961 and #13975
- 🪟 fix: Re-measure Sidebar Chat List on Width Change to Fix Date-Group Spacing by @danny-avila in #13981
- 📏 fix: Make create_file Missing-Content Error Truncation-Aware by @danny-avila in #14043
- fix: use
logAxiosErrorat the RAG file_search/context call sites by @mawburn in #14014 - fix:
stripHeavyErrorFieldsWinston format (defense-in-depth) by @mawburn in #14018 - 📥 fix: Download Original File From Artifact Preview Panel for Office Documents by @berry-13 in #14026
- 🔥 fix: Firebase CDN Initialization Under tsdown CJS Interop by @jakacenta in #14046
- fix: preserve role SHARE permissions across boot in initializeRoles by @mawburn in #14022
- fix: bound peak memory of concurrent base64 attachment encoding by @mawburn in #14023
- 📧 fix: Add .eml (message/rfc822) Support to File Upload by @Zirkonium88 in #13989
- 🚪 fix: Support Admin Redirect Detection for Same-Origin Subpaths by @arjunvijay24 in #14040
- 🩹 fix: Coerce Stringified
edit_fileEdits (JSON-in-JSON) by @danny-avila in #14056 - 🧠 fix: Apply Bedrock thinking config to bare inference-profile model IDs by @danny-avila in #14054
- 🧠 fix: Default Bedrock thinking
maxTokensto model max output by @danny-avila in #14058 - fix: stop the artifact-edit retry loop on unrecoverable 400s by @mawburn in #14060
- 🎣 fix: Surface Resumable Stream Start Errors by @danny-avila in #14072
- 🧯 fix: Harden Principals Cache Invalidation and Lock-Wait Paths by @danny-avila in #14120
- 🏁 fix: Ignore Finalized SSE Transport Errors by @danny-avila in #14114
- fix: fall back to
_idfor user id increateSafeUserby @mawburn in #14083 - 🌏 fix: guard IME composition on Enter in prompt name/labels and dynamic tag inputs by @mahirhir in #13996
- 🗄️ fix: Return Cached Transaction-Support Value on Cache Hit by @Osamaali313 in #13999
- 🧠 fix: Format Reasoning Exports by @danny-avila in #14116
- 🧮 fix: Prevent String Corruption of Numeric Agent Model Parameters by @danny-avila in #14119
- 🧢 fix: Raise Claude Sonnet 4.6 Output Cap by @danny-avila in #14115
- 🧵 fix: Preserve Fenced Markdown Artifacts by @danny-avila in #14121
- 🔒 fix: Prevent Role Grants on Shared Links by @danny-avila in #14137
- 🤐 fix: Exclude Provider Secrets from HITL Pending Actions by @danny-avila in #14136
- ⏳ fix: Defer MCP Connection for Request-Scoped Placeholders on Reinitialize by @danny-avila in #14148
- 🧷 fix: Align Agent File Attachment Ownership by @danny-avila in #14149
- 🧊 fix: Include Conversation Starters in Agent View and List Responses by @serhiizghama in #14142
- ♊ fix: Resolve Local JSON Pointer Refs & Sanitize Tool Search Schema for Gemini by @usnavy13 in #14161
- 🛡️ fix: Guard HITL checkpoint size against MongoDB 16MB limit by @danny-avila in #14157
- 🔡 fix: Normalize Email Case When Issuing Verification Tokens by @VictorEPlus in #14172
- 🪜 fix: Apply Recursion Limit Config to Subagents by @danny-avila in #14185
- 💂 fix: Enforce ALLOW_EMAIL_LOGIN on the Backend Login Route by @lurkerCha in #14180
- 🧩 fix: Allow
compatibilityField in Skill Frontmatter by @danny-avila in #14189 - 📎 fix: Translate Finite
supportedMimeTypesAllowlists to Picker Accept by @danny-avila in #14186 - 🪆 fix: Serve Nested Skill Files Through a Wildcard Route by @danny-avila in #14191
- 🃏 fix: Attach Request-Scoped MCP Servers From the Builder via the
mcp_allWildcard by @adamscross04 in #14177 - 🔍 fix: Sync Conversation Title Updates to MeiliSearch by @danny-avila in #14223
- 👻 fix: Guard Redis Stream Resume Against Disposed HITL Graph by @danny-avila in #14258
- 🤝 fix: Discover MCP OAuth Exchange Methods by @danny-avila in #14256
- 👋 fix: Terminate Streamable HTTP MCP Sessions on Teardown by @danny-avila in #14252
- 🗂️ fix: Route read_file Through the Stateful Code Session by @danny-avila in #14259
- 💭 fix: Default GPT-5.6 Reasoning Requests to Responses API by @jomspk in #14232
- 🔖 fix: Preserve Ephemeral Agent Params and Identity for ask_user_question Resume by @jjhidalgar-celonis in #14254
- 🎫 fix: Strip Reserved Fields From Bedrock
additionalModelRequestFieldsby @danny-avila in #14246 - 📱 fix: Single-Tap Select for Pinned Agents, Model Specs & Models on Touch by @danny-avila in #14272
- 🧽 fix: Clear Deleted Chats From Message Cache by @danny-avila in #14270
- 🧟 fix: Prevent Drained Steer From Re-Queuing After Run-End Race by @danny-avila in #14276
- 🙋 fix: Await
ask_user_questionTool Factory inloadToolsby @danny-avila in #14291 - 🧷 fix: Flush Pending File Deletion on Unmount by @danny-avila in #14293
- 🙋 fix: Stop Answered
ask_user_questionCard From Reopening Its Popover by @danny-avila in #14297 - 🔒 fix: Scope, Cap, and De-Execute the In-Flight Steer Stack by @danny-avila in #14310
- 📱 fix: Don't Connect the Favorites Drag Source on Touch Pointers by @danny-avila in #14312
- 🧵 fix: Harden Request-Scoped MCP Lifecycle by @danny-avila in #14342
- 🪆 fix: Build RAG-API Chart Before Parent to Bundle PostgreSQL Dependency by @Aho-Bakaa in #14262
- 🚪 fix: Keep Owners From Being Locked Out of Their Own Resource When Sharing by @danny-avila in #14347
- 🚏 fix: Route Admin-Configured Document Types to RAG /text on Agent Upload by @danny-avila in #14345
- 🎟️ fix: Claim Idempotency Keys to Dedup Retried Generation Requests and Prevent Double Billing by @danny-avila in #14344
- 🧠 fix: Restore Agent Memory Scope Control in Unified Builder by @danny-avila in #14292
- 🛟 fix: Keep File Uploads Alive With SSE Heartbeats by @MarcAmick in #14295
- 🧩 fix: Preserve Deployment Skill IDs on Agents by @danny-avila in #14368
- 🧭 fix: Keep Message Nav Chevrons Working on In-Thread Steers by @danny-avila in #14377
- 🤐 fix: Withhold MCP OAuth Headers From Untrusted Preconfigured Discovery by @danny-avila in #14379
- 🔗 fix: Preserve resource owner access when sharing (key share diff by stable id) by @jomspk in #14317
- 🪆 fix: Preserve Nested Subagent Delegation by @danny-avila in #14392
- ✋ fix: Enable Submit on First Tool-Approval Decision by @danny-avila in #14393
- 🎞️ fix: Surface Clear Error for Unprocessable Gemini YouTube Videos by @danny-avila in #14396
- 📌 fix: Pin Scroll-to-Bottom Rib in Message Nav by @danny-avila in #14397
- 🫙 fix: Preserve Loaded Message Content When Resume Snapshot Is Empty by @danny-avila in #14399
- 🎯 fix: Correct Off-by-One Rail Scrub After Pinning the Terminus by @danny-avila in #14409
- ♾️ fix: Preserve Resumable Stream Ordering Across Turns by @danny-avila in #14411
- 🧩 fix: Harden Agent Skill Lifecycles End to End by @danny-avila in #14429
- 📧 fix: Restore
invite-userCLI by @unsnow-iac in #14436 - 🔗 fix: Resolve MCP Tool-Key Boundary Against Configured Server Names by @danny-avila in #14448
- 🍃 fix: Strip $-Prefixed Schema Keywords Before Persisting MCP Tool Params by @danny-avila in #14464
- 🔗 fix: Render Shared Links Containing Steers by @danny-avila in #14480
- 🔒 fix: Bound
/files/usageTTL Hold Instead of Clearing It by @danny-avila in #14470 - 🤏 fix: Filter Admin Config Reads by Section-Scoped Read Capability by @dustinhealy in #14472
- 🍃 fix: Amazon DocumentDB Compatibility for Pipeline-Form Updates by @danny-avila in #14495
- 🛡️ fix: validate message feedback payloads by @upman in #14500
- 🧩 fix: Apply Every Entry of Multi-Part Stream Deltas by @danny-avila in #14502
- 🏷️ fix: Re-attribute Agent Content After In-Thread Steers by @danny-avila in #14497
- 🎯 fix: Keep Run Steps and Labels in One Index Space After a Resume Sync by @danny-avila in #14516
- 🪶 fix: Yield Soft Default Model Spec to Agent Picks in Picker-Only Deployments by @danny-avila in #14515
- 🪟 fix: Surface MCP Initialization Errors by @danny-avila in #14529
- 🪃 fix: Resolve User Vars Before the First Post-OAuth Reconnect by @schumajs in #14538
- 🔒 fix: Remove Owner Email from Agent
owner_contactFallback by @danny-avila in #14541 - 📄 fix: Filter Non-PDF Documents on the Anthropic Encode Path by @danny-avila in #14535
- 🎯 fix: Exact Ask-Question Attribution via Interrupt tool_call_id by @danny-avila in #14539
- 🧹 fix: Clean Up MCP OAuth State Mappings on Uninstall + Reject Superseded Callbacks by @danny-avila in #14549
- 🧠 fix: Preserve Deferred Tool Schemas Across HITL Resume by @danny-avila in #14552
- 🦗 fix: Ignore Sequenced Redis Events Without SSE Subscribers by @danny-avila in #14557
- 🔗 fix: Normalize MCP Tool Keys at Every Producer, Resolve Raw Names via Aliases by @danny-avila in #14553
- 🏢 fix: Preserve Tenant Context for Partial Response Saves on Disconnect by @danny-avila in #14567
- 🦗 fix: Deliver Abort Acknowledgements on Zero-Subscriber Replicas by @danny-avila in #14569
- 🏷️ fix: Skip Title Generation for Preempt-Incomplete Turns by @danny-avila in #14571
- 🪧 fix: Guard Admin OAuth Routes When Providers Are Not Configured by @cyphercodes in #14507
- 🔗 fix: Resolve Relative Skill Markdown Links by @berry-13 in #14586
- 🧭 fix: Drop v6-Only MemoryRouter future Prop from Skill Markdown Spec by @danny-avila in #14588
- 🪪 fix: Strip Unresolved Header Placeholders at Final Resolution by @danny-avila in #14595
- 🔒 fix: Single-Flight MCP OAuth Token Refresh per User/Server by @danny-avila in #14596
- 🪺 fix: Keep Preempt-Abandoned Siblings Nested, Make Message Tree Order-Robust by @danny-avila in #14587
- ⌨️ fix: Honor
defaultPreventedin Global Shortcut Dispatch by @danny-avila in #14570 - 🪢 fix: Bind MCP OAuth Secrets to Trusted Endpoints by @danny-avila in #14578
- ⚓ fix: Bind Action Servers to Metadata Ports by @danny-avila in #14575
- 🧱 fix: Enforce Agent Runtime File Trust Boundaries by @danny-avila in #14577
- 📏 fix: Scope Skill Command Query to Text Before the Caret by @danny-avila in #14604
- 🧬 fix: Resolve URL-Named Model Spec to Its Full Preset on Cold Load by @danny-avila in #14610
- ✂️ fix: Truncate Overflowing Activity and Intent Labels in Chat UI by @danny-avila in #14607
- 🚦 fix: Bound, Single-Flight, and Retry Skill File Priming Uploads by @danny-avila in #14611
- 🧹 fix: Exclude Mongo ID From Conversation Updates by @danny-avila in #14631
- ♿️ a11y: improve keyboard operability, focus retention, and accessible naming by @berry-13 in #14600
- 🚏 fix: Localized Guidance for Model-Not-Found Errors by @danny-avila in
557c22d102 - 🛡️ fix: Run message-filter PII patterns on a linear-time regex engine (ReDoS) by @dustinhealy in #14554
- 🪢 fix: disable central fanout media uploads for langfuse by @upman in #14642
- 🧭 fix: Fail Closed When Expected MCP Tools Are Unavailable by @danny-avila in #14646
- 🛂 fix: Honor Claude Document Limits Through Inference Gateways by @danny-avila in #14650
- 🎟️ fix: Reconcile MCP OAuth Readiness Across Pods by @danny-avila in #14629
- 🌊 fix: Preserve Custom Endpoint
streamRateWhenendpoints.allIs Defined by @danny-avila in #14645 - 🔐 fix: Preserve Structured JWT Auth Context by @danny-avila in #14652
- ⏱️ fix: Compile admin file-config MIME patterns on a linear-time engine (ReDoS) by @dustinhealy in #14555
- 🛡️ fix: SSRF-Guard Speech (STT/TTS) and OCR Outbound Requests at Connect Time by @dustinhealy in #14560
- 🔁 fix: Re-Arm Soft Default When a Stored Agent No Longer Resolves by @danny-avila in #14664
- 🔗 fix: Prevent duplicate share rows from clobbering pending role edits (dedupe adds by stable id) by @jomspk in #14655
- 🛟 fix: Stop Agents When Code Resources Cannot Recover by @danny-avila in #14651
- ♿ fix: Restore WCAG AA Contrast for Text Tokens & Hide Edit Action While Streaming by @danny-avila in #14677
- 🩹 fix: Keep Edit Action Fully Hidden While Streaming by @danny-avila in #14687
- 📡 fix: Refresh MCP Tools After List-Changed Notifications by @danny-avila in #14686
- 🧬 fix: Rebind Request Context After Remote Agent Auth by @danny-avila in #14685
- 🧭 fix: Make MCP Catalog Redis Cluster-Safe by @danny-avila in #14717
- 🧬 fix: Normalize Legacy MCP Null Headers by @danny-avila in #14720
- 📁 fix: Consistent Export Filenames Across Formats by @lidonius1122 in #14708
- 🧷 fix: Safely Recover Runtime MCP OAuth Rejections by @danny-avila in #14684
- 🪆 fix: Rebase Activity Phase Bounds over Sparse Content by @danny-avila in #14729
- 📎 fix: Re-enable Send After File Upload by @danny-avila in #14727
- 📸 fix: Guard Screenshot Export Against Main-Thread Freezes by @danny-avila in #14733
- 🔐 fix: Preserve Plugin MCP Provenance Through Registry Storage by @danny-avila in #14744
- 🧭 fix: Re-Anchor Parent Activity Phase Bounds by @danny-avila in #14741
- 🧷 fix: Preserve Elicitation Answers Across Aborts by @danny-avila in #14745
- 📡 fix: Preserve Redis Abort Terminal Delivery by @danny-avila in #14749
- ⌨️ fix: allow file upload shortcut when editing by @likeabas in #14764
- 🛟 fix: Isolate Invalid Skills During GitHub Sync by @berry-13 in #14735
- 🎙️ fix: Align Speech Engine Configuration With Runtime by @berry-13 in #14736
- 🧩 fix: Normalize Malformed MCP Required Schemas by @danny-avila in #14771
- 🧾 fix: Honor Disabled Transactions on the Token-Count Fallback Path by @jtodaroii in #14774
- 🛰️ fix: Attach Request-Scoped MCP Servers by @danny-avila in #14780
- 📱 fix: Show Quote Popup for Block Selections and on Touch Devices by @danny-avila in #14777
- 🪑 fix: Rebase Activity Phase Bounds Onto Compacted Content and Unskip the MCPManager Suite by @danny-avila in #14782
- 🔖 fix: Split Activity Phases at Substantial Text by @danny-avila in #14785
- 🖌️ style: Use correct text colour for answer textarea in dark mode by @lizzykerrigan in #14791
- 🩹 fix: Restore the
@librechat/apiBuild and Remove Legacy Code by @danny-avila in #14808 - 🩹 fix: apply agent updates that match the newest version entry by @mihidumh in #14810
- 💬 style: Right-Align In-Flight Steer Bubbles to the Message UI by @danny-avila in #14814
- 🔌 fix: Preserve MCP
serverInstructionsDeclaration Through Inspection by @danny-avila in #14815 - 🔌 fix: Recover Quietly From Stale MCP SSE Stream Conflicts by @danny-avila in #14816
- 📎 fix: Alias Shell Script MIME Variants to
application/x-shby @danny-avila in #14817
🔧 Refactoring and Performance
- ♻️ refactor: Compute Context Gauge Client-Side, Drop Projection Endpoint by @danny-avila in #13953
- 🪣 refactor: Rate-Limit Token Routes and Cap Remote File Downloads by @danny-avila in #13978
- 🦥 perf: Lazy-Load Agent Version History in Editor by @danny-avila in #13977
- 🛗 perf: Fetch Pinned Agents Directly Past the Global Agents Map by @danny-avila in #13972
- ⚡ perf: memoize FavoritesList and BookmarkNav to prevent re-renders during streaming by @berry-13 in #14011
- 🗺️ refactor: Light Up In-Viewport Ribs at Rest in Message Nav by @danny-avila in #14041
- ⚡ perf: Minimize group membership query in principal resolution by @danny-avila in #14055
- ⚡ perf: Skip Role Route Capability Probe for Own and Default Roles by @danny-avila in #14073
- 🪭 refactor: safe structured failure logging for langfuse fanout gateway by @upman in #14050
- 📉 perf: Skip Redundant Permission Queries on MCP Servers List by @danny-avila in #14077
- ⚡ perf: Persist HITL checkpoints only on pause (lazy checkpointer) by @danny-avila in #14024
- 🗃️ perf: Cache Group Memberships for ACL Principal Resolution by @danny-avila in #14075
- ⚙️ perf: reduce first-load MongoDB round trips by @upman in #14101
- 🎯 style: Center Scroll-to-Bottom Rib in Message Nav Rail by @danny-avila in #14151
- 📉 perf: cache OpenID JWT user documents by @upman in #14187
- 📉 perf: start message queries before file map loads by @upman in #14188
- 🪜 style: Adjust rib dimensions and button sizes in
MessageNavby @danny-avila in #14234 - 🪜 style: Center scroll-to-bottom marker in MessageNav by @danny-avila in #14238
- 🛞 style: Reveal the Steered "?" on Message Hover/Focus by @danny-avila in #14271
- 🙊 refactor: Clarify Ask Question Schema Errors and Retry Guidance by @danny-avila in #14279
- 💬 refactor: Anchor In-Flight Steers Above the Composer by @danny-avila in #14308
- ⚡ perf: Halve Per-Delta Redis Round Trips in Resumable Streams by @danny-avila in #14313
- 🧭 refactor:
web_searchDescription on When To Search vs Answer Directly by @joshbla in #13930 - 🧷 perf: Stabilize Mutation-Dependent Memos in Chat Hooks by @danny-avila in #14328
- 🚰 perf: Suppress No-Op Conversation Writes and Widen-Proof Atom Subscriptions by @danny-avila in #14329
- 🔍 refactor: Surface primary OpenID JWT failure reason in auth failure log by @danny-avila in #14346
- 🧭 perf: Warm Conversation Switches with Single-Navigation Focus Intent by @danny-avila in #14334
- 🧹 perf: Share Voices Store, Gate Timestamp Ticker, Stabilize Greeting Springs by @danny-avila in #14335
- 🎞️ perf: Coalesce Streaming Delta Cache Writes Per Animation Frame by @danny-avila in #14332
- 🎛️ perf: Narrow Composer Subscriptions to Streaming State by @danny-avila in #14333
- 🧬 perf: Memoize Message Spine and Isolate Scroll-Button State by @danny-avila in #14330
- 🪟 perf: Virtualize Search Results and Stop the Per-Query Remount by @danny-avila in #14352
- ⚡ perf: Reduce Agent Chat Startup Latency by @danny-avila in #14423
- 💬 refactor: Raise
ask_user_questionOption Label Cap to 280 Chars by @danny-avila in #14491 - 🪢 refactor: Move Agent Execution Seam Before Initialization by @danny-avila in #14581
- 📉 perf: Bound Early Event Buffering for Detached Generations by @danny-avila in #14612
- 🎨 refactor: adopt the
@librechat/clientdesign system (semantic color tokens + component migration) by @berry-13 in #13879 - 🧩 refactor: Shared UI Design System Tokens by @danny-avila in #14670
- ⚡ perf: Agent List and Model Selector at Scale by @berry-13 in #14601
- 🧭 refactor: make the side panels behave the same way by @berry-13 in #14695
- 🫧 refactor: Fading Pre-Response Dot, Legacy Cursor CSS Removed by @danny-avila in #14772
- 🧱 refactor: Require Broad Config Management for Base Field Mutations by @danny-avila in #14775
- 🖍️ refactor: Typed Console Colors and Hardened Script Helpers by @danny-avila in #14778
- 🧱 refactor: Make Activity Phase Anchor Construction Exhaustive by @danny-avila in #14805
- 🧭 refactor: Resolve Activity Phase Position Once Per Boundary by @danny-avila in #14807
🧪 Tests
- 📐 test: Guard Web Search Description Length by @danny-avila in #14044
- 🛂 test: Cover Tool Approval Workflows End to End by @danny-avila in #14427
- 🧭 test: Cover Agent Handoffs End to End by @danny-avila in #14428
- 🧪 test: Reasoning-Stream Render Perf Benchmark via react-scan by @danny-avila in #14494
- 🎛️ test: Guard Multi-Steer Injection Across Tool Boundaries by @danny-avila in #14498
- 🧪 test: Run mock E2E against Redis in shards by @danny-avila in #14551
- 🎲 test: Replace Microtask Timing Assumptions in Client Specs by @berry-13 in #14653
- 🐘 test: refresh FerretDB harness, registry-derived models, bulkWrite coverage by @danny-avila in #14679
- test(mcp): mock static tool startup sync by @danny-avila in #14711
- 🧪 test(e2e): add Bombadil property exploration by @upman in #14462
- 🧾 test: Pin the Transactions Config Wiring on the Fallback Path by @danny-avila in #14779
📦 Dependencies, Chores & CI
- 📦 chore: bump
@librechat/agentsto v3.2.52 by @danny-avila in #13939 - ⬆️ chore: Migrate off deprecated @ariakit/react-core to @ariakit/react-components by @danny-avila in #13940
- 🧪 ci: Resolve DataTable test infinite re-render by @danny-avila in #13947
- 📦 chore: bump
@librechat/agentsto v3.2.54 by @danny-avila in #14035 - 🔄 chore: Bump
@librechat/agentsto v3.2.55 by @danny-avila in954caef3a3 - 🧪 ci: De-flake ConversationsSection Memoization Spec on Slow Runners by @danny-avila in #14071
- 🧷 chore: Expose Retain Recent Summarization Config by @danny-avila in #14134
- 📦 chore: bump langfuse fanout Go dependencies by @upman in #14126
- ⭐ docs: update Star History section by @berry-13 in #14198
- 📦 chore: Update
@librechat/agentsto v3.2.62 by @danny-avila in #14235 - 📦 chore: Update
@librechat/agentsto v3.2.65 by @danny-avila in #14263 - 🧹 chore: Prune Dangling Images After deployed-update Pull by @danny-avila in #14269
- 🍽️ chore: Drop Pending Composer Draft When Steering or Queuing by @danny-avila in #14289
- 🧩 chore: Prebundle Node Polyfills for Buffer, Process, and Global in Vite
optimizeDepsby @danny-avila in #14354 - 📦 chore: Update
@librechat/agentsto v3.2.66 &npm audit fixby @danny-avila in #14361 - 🧾 ci: Skip Workflows for Markdown-Only Changes by @danny-avila in #14378
- 📦 chore: Update
@librechat/agentsto v3.2.68 by @danny-avila in #14380 - 🚦 ci: Gate Playwright Runs to Maintainers by @danny-avila in #14385
- 🎭 ci: Scope Playwright Runs to Relevant Changes by @danny-avila in #14388
- 🍃 chore: Bump Mongoose to 8.24.1 to Patch Prototype Pollution by @danny-avila in #14461
- 🗺️ chore: Bump PostCSS to 8.5.18 to Patch Source Map Traversal by @danny-avila in #14463
- 📦 chore: bump
@librechat/agentsto v3.3.4 by @danny-avila in #14482 - 🍂 chore: Prune Deprecated Packages From the Dependency Tree by @danny-avila in #14483
- 🌯 chore: Retire Rollup-Era devDependencies After tsdown Migration by @danny-avila in #14496
- 📦 chore: Bump @librechat/agents to v3.3.5 by @danny-avila in #14506
- 📦 chore: bump
@librechat/agentsto v3.3.8 by @danny-avila in #14525 - 🧪 chore: Add the Activity-Label Prose Eval Harness by @danny-avila in #14527
- 🟦 chore: Convert Activity-Label Eval Harness to TypeScript by @danny-avila in #14530
- 📦 chore: bump
@librechat/agentsto v3.3.9 by @danny-avila in #14548 - 📦 chore: bump
@librechat/agentsto v3.3.11 by @danny-avila in #14562 - 📦 chore: update
sanitize-htmlto latest by @danny-avila in #14573 - 🌀 ci: Deterministic Circular Dependency Checks by @danny-avila in #14579
- 🔒 chore: Upgrade react-router-dom to v7.18.2 (security) by @danny-avila in #14582
- 🧪 ci: Settle to render-idle before ConversationsSection memo baselines by @danny-avila in #14590
- 🧹 chore: Migrate Legacy Duplicate Code Files Blocking Dedupe Index by @danny-avila in #14593
- 📦 chore: npm audit by @danny-avila in #14640
- 🛰️ chore: bump
@librechat/agentsto v3.4.0, cover streamed subagent results e2e by @danny-avila in #14647 - chore: Remove Published Credential Defaults by @danny-avila in #14680
- 🐋 chore: add opt-in alternative local stack experiments by @danny-avila in #14678
- ⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes by @berry-13 in #14689
- 📦 chore: bump
@librechat/agentsto v3.4.2 andnpm auditby @danny-avila in #14702 - 🚦 ci: Reduce GitHub Actions Runner Pressure by @berry-13 in #14716
- 🧩 ci: Close Workflow Path-Filter Gaps by @danny-avila in #14728
- 🛻 ci: Move the ESLint Config Sweep Into Its Own Job by @danny-avila in #14742
- 🧷 ci: Enforce Durable Agent Finalization for E2E tests by @danny-avila in #14740
- 🪶 chore: Aggregate Empty MCP Tool Logs by @danny-avila in #14767
- 📦 chore: Update
@librechat/agentsto v3.4.6 by @danny-avila in #14781 - 🌍 ci: Harden Locize Translation Sync by @danny-avila in #14784
- 🔌 chore: Bump the MCP SDK to 1.30.0 and Parse Content-Type Instead of Searching It by @danny-avila in #14820
- ci: gate the e2e activity-phase DOM assertions on the persisted phase by @danny-avila in #14821
🌍 Internationalization
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14053
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14070
- 🌍 i18n: Localize Token Balance Error Message by @Philipp-Voss in #14169
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14266
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14307
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14376
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14406
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14460
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14598
- 🌍 i18n: Update translation.json with latest translations by @danny-avila in #14739
- 🌐 chore: Restore English Localization Source Values by @danny-avila in #14743
New Contributors
- @alexkorep made their first contribution in #14034
- @jakacenta made their first contribution in #14046
- @Zirkonium88 made their first contribution in #13989
- @arjunvijay24 made their first contribution in #14040
- @mahirhir made their first contribution in #13996
- @Osamaali313 made their first contribution in #13999
- @Philipp-Voss made their first contribution in #14169
- @VictorEPlus made their first contribution in #14172
- @adamscross04 made their first contribution in #14177
- @manisrinivasan2k1 made their first contribution in #14082
- @jomspk made their first contribution in #14232
- @jjhidalgar-celonis made their first contribution in #14254
- @Aho-Bakaa made their first contribution in #14262
- @joshbla made their first contribution in #13930
- @unsnow-iac made their first contribution in #14436
- @schumajs made their first contribution in #14538
- @cyphercodes made their first contribution in #14507
- @likeabas made their first contribution in #14764
- @jtodaroii made their first contribution in #14774
- @lizzykerrigan made their first contribution in #14791
- @mihidumh made their first contribution in #14810
- @snapydziuba made their first contribution in #14761
Full Changelog: v0.8.7...v0.8.8-rc1