## danny-avila/LibreChat — v0.8.7…v0.8.8-rc1

_357+ commits._

### Features
- **⚡ feat: Add Gemini 3.7 Flash Support (#14818)** (24d111f)
- **🪢 feat: add Langfuse session links (#14776)** (9980b62)
- **🪆 feat: Add Parent Activity Phase Summaries (#14721)** (a3cec67)
- **🎨 feat: Add Versioned Theme Foundation (#14709)** (c3a429d)
- **🧪 test(e2e): add Bombadil property exploration (#14462)** (7cf4c3f)
- **🔌 feat: Add Agent Plugins (Experimental) (#14704)** (5c939d1)
- **⛶ feat: add fullscreen artifact previews (#14585)** (667d97d)
- **🪝 feat: Add Claude Hook Compatibility Layer (#14412)** (493ffce)
- **🛡️ feat: Add Batched MCP Authority Proofs (#14688)** (a5b10c7)
- **🐋 chore: add opt-in alternative local stack experiments (#14678)** (5ee910e)
- **🔒 feat: Add allowedAddresses Exemption to Speech (STT/TTS) and OCR Config Schemas (#14559)** (4cec1a6)

### Fixes
- **📎 fix: Alias Shell Script MIME Variants to `application/x-sh` (#14817)** (5e464bc)
- **🔌 fix: Recover Quietly From Stale MCP SSE Stream Conflicts (#14816)** (6cbfd82)
- **🔌 fix: Preserve MCP `serverInstructions` Declaration Through Inspection (#14815)** (0654efb)
- **🩹 fix: apply agent updates that match the newest version entry (#14810)** (da390fa)
- **🩹 fix: Restore the `@librechat/api` Build and Remove Legacy Code (#14808)** (abc669a)
- **🔖 fix: Split Activity Phases at Substantial Text (#14785)** (05ed7ad)
- **🪑 fix: Rebase Activity Phase Bounds Onto Compacted Content and Unskip the MCPManager Suite (#14782)** (bcbe26a)
- **📱 fix: Show Quote Popup for Block Selections and on Touch Devices (#14777)** (155f71f)
- **🛰️ fix: Attach Request-Scoped MCP Servers (#14780)** (1a3e2ae)
- **🧾 fix: Honor Disabled Transactions on the Token-Count Fallback Path (#14774)** (e696b07)
- **🧩 fix: Normalize Malformed MCP Required Schemas (#14771)** (861cfe8)
- **🎙️ fix: Align Speech Engine Configuration With Runtime (#14736)** (5ff282f)
- **🛟 fix: Isolate Invalid Skills During GitHub Sync (#14735)** (92a8058)
- **⌨️ fix: allow file upload shortcut when editing (#14764)** (db43121)
- **📡 fix: Preserve Redis Abort Terminal Delivery (#14749)** (b2128a7)
- **🧷 fix: Preserve Elicitation Answers Across Aborts (#14745)** (88e08c9)
- **🧭 fix: Re-Anchor Parent Activity Phase Bounds (#14741)** (236ee6c)
- **🔐 fix: Preserve Plugin MCP Provenance Through Registry Storage (#14744)** (ba29a6c)
- **📸 fix: Guard Screenshot Export Against Main-Thread Freezes (#14733)** (c93609c)
- **📎 fix: Re-enable Send After File Upload (#14727)** (9bb5994)
- **🪆 fix: Rebase Activity Phase Bounds over Sparse Content (#14729)** (09cbd54)
- **🧷 fix: Safely Recover Runtime MCP OAuth Rejections (#14684)** (7fc6202)
- **📁 fix: Consistent Export Filenames Across Formats (#14708)** (26bcbb7)
- **🧬 fix: Normalize Legacy MCP Null Headers (#14720)** (6bff5ba)
- **🧭 fix: Make MCP Catalog Redis Cluster-Safe (#14717)** (1bd4455)
- **🧬 fix: Rebind Request Context After Remote Agent Auth (#14685)** (ed9542e)
- **📡 fix: Refresh MCP Tools After List-Changed Notifications (#14686)** (1bccc2b)
- **🩹 fix: Keep Edit Action Fully Hidden While Streaming (#14687)** (51ed1fa)
- **♿ fix: Restore WCAG AA Contrast for Text Tokens & Hide Edit Action While Streaming (#14677)** (0db511f)
- **🛟 fix: Stop Agents When Code Resources Cannot Recover (#14651)** (5ff46d8)
- **🔗 fix: Prevent duplicate share rows from clobbering pending role edits (dedupe adds by stable id) (#14655)** (8d5c298)
- **🔁 fix: Re-Arm Soft Default When a Stored Agent No Longer Resolves (#14664)** (1367672)
- **🛡️ fix: SSRF-Guard Speech (STT/TTS) and OCR Outbound Requests at Connect Time (#14560)** (96404bf)
- **⏱️ fix: Compile admin file-config MIME patterns on a linear-time engine (ReDoS) (#14555)** (0e14d91)
- **🔐 fix: Preserve Structured JWT Auth Context (#14652)** (dd159c4)
- **🌊 fix: Preserve Custom Endpoint `streamRate` When `endpoints.all` Is Defined (#14645)** (3051079)
- **🎟️ fix: Reconcile MCP OAuth Readiness Across Pods (#14629)** (56175af)
- **🛂 fix: Honor Claude Document Limits Through Inference Gateways (#14650)** (9b7a307)
- **🧭 fix: Fail Closed When Expected MCP Tools Are Unavailable (#14646)** (489bc02)
- **🪢 fix: disable central fanout media uploads for langfuse (#14642)** (7775f25)
- **🛡️ fix: Run message-filter PII patterns on a linear-time regex engine (ReDoS) (#14554)** (3f0a1ec)
- **🚏 fix: Localized Guidance for Model-Not-Found Errors** (557c22d)
- **🧹 fix: Exclude Mongo ID From Conversation Updates (#14631)** (22642df)
- **🚦 fix: Bound, Single-Flight, and Retry Skill File Priming Uploads (#14611)** (120ee2a)
- **✂️ fix: Truncate Overflowing Activity and Intent Labels in Chat UI (#14607)** (5029dd4)
- **🧬 fix: Resolve URL-Named Model Spec to Its Full Preset on Cold Load (#14610)** (f738810)
- **📏 fix: Scope Skill Command Query to Text Before the Caret (#14604)** (6bbbee7)
- **🧱 fix: Enforce Agent Runtime File Trust Boundaries (#14577)** (b119780)
- **⚓ fix: Bind Action Servers to Metadata Ports (#14575)** (178e61b)
- **🪢 fix: Bind MCP OAuth Secrets to Trusted Endpoints (#14578)** (db6ba53)
- **⌨️ fix: Honor `defaultPrevented` in Global Shortcut Dispatch (#14570)** (cdb60e7)
- **🪺 fix: Keep Preempt-Abandoned Siblings Nested, Make Message Tree Order-Robust (#14587)** (cdf437d)
- **🔒 fix: Single-Flight MCP OAuth Token Refresh per User/Server (#14596)** (928b14f)
- **🪪 fix: Strip Unresolved Header Placeholders at Final Resolution (#14595)** (7e74f8e)
- **🧭 fix: Drop v6-Only MemoryRouter future Prop from Skill Markdown Spec (#14588)** (105f0c6)
- **🔗 fix: Resolve Relative Skill Markdown Links (#14586)** (c2d8252)
- **🪧 fix: Guard Admin OAuth Routes When Providers Are Not Configured (#14507)** (3551c1b)
- **🏷️ fix: Skip Title Generation for Preempt-Incomplete Turns (#14571)** (3191f69)
- **🦗 fix: Deliver Abort Acknowledgements on Zero-Subscriber Replicas (#14569)** (9fbea04)
- **🏢 fix: Preserve Tenant Context for Partial Response Saves on Disconnect (#14567)** (3dc5532)
- **🔗 fix: Normalize MCP Tool Keys at Every Producer, Resolve Raw Names via Aliases (#14553)** (6f45a9e)
- **🦗 fix: Ignore Sequenced Redis Events Without SSE Subscribers (#14557)** (de033b7)
- **🧠 fix: Preserve Deferred Tool Schemas Across HITL Resume (#14552)** (60ca751)
- **🧹 fix: Clean Up MCP OAuth State Mappings on Uninstall + Reject Superseded Callbacks (#14549)** (78ec194)
- **🎯 fix: Exact Ask-Question Attribution via Interrupt tool_call_id (#14539)** (1e1de6e)
- **📄 fix: Filter Non-PDF Documents on the Anthropic Encode Path (#14535)** (f0d3bcb)
- **🔒 fix: Remove Owner Email from Agent `owner_contact` Fallback (#14541)** (8e165eb)
- **🪃 fix: Resolve User Vars Before the First Post-OAuth Reconnect (#14538)** (ad74a28)
- **🪟 fix: Surface MCP Initialization Errors (#14529)** (8af6414)

### Backend
- **🚀 chore: Prepare v0.8.8-rc1 (#14394)** (eaef87f)
- **🔌 chore: Bump the MCP SDK to 1.30.0 and Parse Content-Type Instead of Searching It (#14820)** (2f0cd2e)
- **📄 feat: accept PowerPoint template MIME type (#14761)** (6c46fd1)
- **💬 style: Right-Align In-Flight Steer Bubbles to the Message UI (#14814)** (7694428)
- **🖌️ style: Use correct text colour for answer textarea in dark mode (#14791)** (5bd7457)
- **💬 style: Unify Message Row Layout and Edit Surfaces (#14770)** (d920328)
- **🧭 refactor: Resolve Activity Phase Position Once Per Boundary (#14807)** (78eb0c9)
- **🧱 refactor: Make Activity Phase Anchor Construction Exhaustive (#14805)** (619ed2f)
- **🌍 ci: Harden Locize Translation Sync (#14784)** (6755544)
- **🔖 feat: Bound Parent Activity Phases With an Exclusive End Index (#14768)** (df6e15a)
- **🧾 test: Pin the Transactions Config Wiring on the Fallback Path (#14779)** (c44d11e)
- **📦 chore: Update `@librechat/agents` to v3.4.6 (#14781)** (298a3d9)
- **🖍️ refactor: Typed Console Colors and Hardened Script Helpers (#14778)** (3a3a8dc)
- **🧱 refactor: Require Broad Config Management for Base Field Mutations (#14775)** (8f1f961)
- **🪶 chore: Aggregate Empty MCP Tool Logs (#14767)** (dccef82)
- **🫧 refactor: Fading Pre-Response Dot, Legacy Cursor CSS Removed (#14772)** (8f1f43f)
- **🚣‍♀️ feat: Smooth Streaming Text Fade-In (#14757)** (ae24461)
- **🪝 feat: Execute Agent Plugin Command Hooks (#14755)** (ee8c0ab)
- **🧷 ci: Enforce Durable Agent Finalization for E2E tests (#14740)** (e108955)
- **🛻 ci: Move the ESLint Config Sweep Into Its Own Job (#14742)** (01e9d11)
- **🌐 chore: Restore English Localization Source Values (#14743)** (ea6f9e3)
- **🌍 i18n: Update translation.json with latest translations (#14739)** (60fe67d)
- **🍡 feat: Batched User Questions With A Single Bounded Answer Form (#14737)** (7347cfc)
- **🎛️ feat: Adopt Composer Density Tokens (#14730)** (d89b11d)
- **🎨 feat: Refine Client Colors and Sharing Dialogs (#14734)** (f7d9f36)
- **🧩 ci: Close Workflow Path-Filter Gaps (#14728)** (dfd4d9d)
- **📡 feat: Route Web Search and Scrape Egress through the SSRF-safe Agent (#14606)** (87a8b9a)
- **🪶 feat: Resolve Explicit Subagents Lazily (#14714)** (54d7f04)
- **🧜 feat: Open Mermaid Diagrams as Artifacts with SVG/PNG Export (#14713)** (8da5156)
- **🔗 feat: Shared Conversation Badge and Stable Share Links (#14712)** (152dcf4)
- **🚦 ci: Reduce GitHub Actions Runner Pressure (#14716)** (82de3bc)
- **🧭 refactor: make the side panels behave the same way (#14695)** (92d4705)
- **📦 chore: bump `@librechat/agents` to v3.4.2 and `npm audit` (#14702)** (ef38f36)
- **⚡ perf: Agent List and Model Selector at Scale (#14601)** (39f5f9d)
- **⚙️ ci: Bump GitHub Actions to Node.js 24 Runtimes (#14689)** (9e6d677)
- **🐘 test: refresh FerretDB harness, registry-derived models, bulkWrite coverage (#14679)** (c570517)
- **🫆 chore: Remove Published Credential Defaults (#14680)** (1596df7)
- **🔑 feat: Refresh-Capable Google Admin OAuth Sessions (#13832)** (6d2f292)
- **👋 feat: Day-Aware Landing Greeting Schedule (#14633)** (e3b8e30)
- **🧩 refactor: Shared UI Design System Tokens (#14670)** (bd5c1ad)
- **🎲 test: Replace Microtask Timing Assumptions in Client Specs (#14653)** (dfe9ed0)
- **🔗 feat: Admin Panel Link in Settings for Admins (#14662)** (c6bb773)
- **🌊 feat: Wire Adaptive Stream Smoothing Across Google, Bedrock, and Zero-Disable Semantics (#14660)** (33c8801)
- **🎨 refactor: adopt the `@librechat/client` design system (semantic color tokens + component migration) (#13879)** (4f5c9fe)
- **🛰️ chore: bump `@librechat/agents` to v3.4.0, cover streamed subagent results e2e (#14647)** (45cc53c)
- **⚡ feat: Coalesce Redis Streaming Delta Publications into Windowed Batches (#14614)** (58cdd9c)
- **📦 chore: npm audit (#14640)** (1bbe7df)
- **♿️ a11y: improve keyboard operability, focus retention, and accessible naming (#14600)** (26ba2c2)
- **🚦 feat: Configurable Circuit Breakers for Runaway Streamed Tool Args (#14613)** (ccf4301)
- **📉 perf: Bound Early Event Buffering for Detached Generations (#14612)** (b807292)
- **🌍 i18n: Update translation.json with latest translations (#14598)** (664290c)
- **🧹 chore: Migrate Legacy Duplicate Code Files Blocking Dedupe Index (#14593)** (2d606a9)
- **🧪 ci: Settle to render-idle before ConversationsSection memo baselines (#14590)** (ed25ae5)
- **💬 feat: Interim Progress Card for Streaming Q&A Calls (#14576)** (2fb0311)
- **🪢 refactor: Move Agent Execution Seam Before Initialization (#14581)** (59395a6)
- **🔒 chore: Upgrade react-router-dom to v7.18.2 (security) (#14582)** (96499f0)
- **🌀 ci: Deterministic Circular Dependency Checks (#14579)** (ad0f72d)
- **📦 chore: update `sanitize-html` to latest (#14573)** (b253b62)
- **📦 chore: bump `@librechat/agents` to v3.3.11 (#14562)** (b9ca391)
- **⚡ feat: Reliable Interrupt & Steer Escalation and Recovery (#14558)** (e7f1838)
- **🎯 feat: Per-Tool Intent Label Toggles in the Agent Builder (#14550)** (a67b0c1)
- **🧪 test: Run mock E2E against Redis in shards (#14551)** (52b2ebf)
- **📦 chore: bump `@librechat/agents` to v3.3.9 (#14548)** (f5e8feb)
- **🟦 chore: Convert Activity-Label Eval Harness to TypeScript (#14530)** (ad4ed67)
- **🎯 feat: Render Tool Intent as the Live Tool-Call Label (#14536)** (ff9d895)
- **🧵 feat: Background-Native Code Execution Tools (#14532)** (d6c2dc5)
- **⚡ feat: Interrupt & Steer (Initial UI) (#14528)** (3f02efd)
- **🎯 feat: Per-Tool Intent Labels for Model Specs (#14526)** (d5819be)

### Tests
- **test(mcp): mock static tool startup sync (#14711)** (ccb43bf)

### Chore
- **ci: gate the e2e activity-phase DOM assertions on the persisted phase (#14821)** (d4c64d4)

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