v0.8.7-rc1
Pre-release
Pre-release
ποΈ Highlights
- Access, Auth, and MCP: Shared-link ACLs, OpenID role sync/token reuse, MCP OBO, request-scoped MCP flows, resumable cleanup, and OAuth/proxy hardening.
- Agents, Skills, and Projects: Chat projects, skill file authoring tools, deployment/GitHub Skills, scoped sync status, model-spec controls/starters, and marketplace access.
- Safety and Admin: Configurable message PII filtering and hardened model-spec Subagent controls.
- Observability and Operations: Auth-isolated RUM proxying with outcome metrics, auth fallback telemetry, opt-in Redis command tracing, Langfuse scores, Node 24 Docker builds, and stronger CI.
- Conversation UX: Immediate titles, hover timestamps, message-nav scrubbing, stable branches, sanitized shares, deploy recovery, and route reload fixes.
- Providers and Reasoning: Claude Fable 5, GPT-5.5/frontier defaults, native Anthropic custom endpoints, protected user URLs, provider headers, and Gemini/Imagen/Bedrock fixes.
- Streaming and Performance: Memoized Markdown streaming, per-tool
onResult, real-time context, opt-in cost display, scoped token config caches, subagent billing, lazy loading, andtsdownbuilds.
Click to expand Release Notes
What's Changed
β¨ Features
- π feat: Use SecretInput for Sensitive Fields by @berry-13 in #12955
- π‘ feat: Add Authenticated Proxy Mode for Browser RUM Telemetry by @upman in #13464
- π feat: Add On-Behalf-Of (OBO) token exchange support for MCP server connections by @jcbartle in #13429
- πͺ feat: Add OpenID Role Sync by @danny-avila in #13415
- ποΈ feat: Retain Agent Files During All-Data Retention by @danny-avila in #13477
- π feat: Add Credential-Free Playwright Smoke Suite with a Local Mock LLM by @teresama in #13472
- β‘ feat: Immediate Conversation Title Generation by @danny-avila in #13395
- π°οΈ feat: Add Auth Fallback Observability by @danny-avila in #13488
- π feat: Add Granular Access Control to Shared Links via ACL System by @AtefBellaaj in #13051
- ποΈ feat: Add Private Chat Projects by @danny-avila in #13467
- ποΈ feat: Add Focus Management and Drag-to-Scrub to MessageNav by @danny-avila in #13497
- ποΈ feat: Add Agent File Authoring Tools by @danny-avila in #13435
- π feat: Improve Skill Authoring Guidance by @danny-avila in #13517
- π§ feat: Scope Model Spec Skills by @danny-avila in #13522
- ποΈ feat: Add Deployment Skill Directory by @danny-avila in #13523
- πͺ feat: Surface Agent Marketplace in Model Selector by @danny-avila in #13553
- π± feat: Support Soft Default Model Spec by @danny-avila in #13554
- β³ feat: Make OpenID Token Reuse Window Configurable by @pboers1988 in #13546
- π feat: Surface Message Feedback as Langfuse Scores by @graphaelli in #13544
- π§© feat: Enable Model Spec Subagents by @danny-avila in #13598
- π‘οΈ feat: Configurable Message PII Filter by @dustinhealy in #13602
- π feat: Add Claude Fable 5 Support by @danny-avila in #13628
- π°οΈ feat: Add GPT-5.5 + Frontier OpenAI Models, Drop Deprecated Defaults by @danny-avila in #13636
- 𧬠feat: Add GitHub Skill Sync by @danny-avila in #13293
- π·οΈ feat: Surface Model Spec Branding on Landing and Selector by @danny-avila in #13662
- π feat: Real-Time Context Window & Token Usage Tracking by @danny-avila in #13670
- π¬ feat: Report Tool Results Per Call via
onResultChannel by @danny-avila in #13698 - β feat: Show Message Timestamps on Hover by @danny-avila in #13709
- π¬ feat: Conversation Starters for Model Specs by @danny-avila in #13710
- πΎ feat: Persist Context Breakdown & Branch/Total Usage Cost by @danny-avila in #13734
- πΈ feat: Per-Agent Endpoint Token Config in Multi-Endpoint Billing by @danny-avila in #13738
- πͺ feat: Context Gauge UX, Hover Snapshot, Click Breakdown, Currency, Cost-On-By-Default by @danny-avila in #13739
- π¨ feat: Custom Headers on Built-in Provider Endpoints by @danny-avila in #13742
π °οΈ feat: Native Anthropic Provider for Custom Endpoints by @danny-avila in #13748
π Fixes
- π fix: Preserve Custom Endpoint Reasoning Params by @danny-avila in #13447
- πͺ fix: Apply Isolation Plugin to Distinct Queries by @danny-avila in #13457
- πͺ fix: Preserve Grouped Tool Expansion During Streaming by @danny-avila in #13462
- π fix: Gate RUM Proxy Route on the RUM_ENABLED Flag by @upman in #13475
- π·οΈ fix: Prevent Bedrock Cache Tokens from Inflating Completion Count by @joohan-lee in #13468
- πͺ€ fix: Reload Messages When Reopening a Chat from a Non-Chat Route by @danny-avila in #13501
- π¦ fix: Gate Chat Starts During Readiness by @danny-avila in #13502
- π§· fix: Bind Agent File Context to Current Turn by @danny-avila in #13506
- πΌ fix: Harden Shared-Link Message Sanitization with an Allowlist by @danny-avila in #13510
- πΌοΈ fix: Upgrade Framer Motion for Vite 8 Compatibility by @dlew in #13512
- πͺ‘ fix: Handle Missing Skill File Upsert Metadata by @danny-avila in #13520
- π» fix: Clear Project-Scoped Landing When the Selected Project Is Deleted by @danny-avila in #13525
- π§ fix: Restore Empty Skill Allowlist Catalog by @danny-avila in #13526
- πͺ¦ fix: Add Durable MCP Config Tombstones by @danny-avila in #13534
- π fix: Handle Multiple Concurrent MCP OAuth Login Prompts by @janluedemann-esome in #13200
- π fix: Reuse MCP OAuth Authorization URL by @danny-avila in #13532
- πͺͺ fix: Filter ACL Principal Details by @danny-avila in #13524
- πΌοΈ fix: Support Known Endpoint Group Icons by @danny-avila in #13542
- π fix: Contain Markdown Table Overflow by @danny-avila in #13543
- π fix: Preserve Provider Document Uploads by @danny-avila in #13550
- π οΈ fix: Enable Gemini Mixed Tool Config by @danny-avila in #13538
- π¦ fix: Guard Auth Continuation with Dedicated Limiter by @danny-avila in #13555
- π·οΈ fix: Categorize Auth Tokens by Flow Type by @danny-avila in #13556
- π fix: Scope Attachment Usage to Request Owner by @danny-avila in #13557
- π fix: Normalize Verification Flow Error Responses by @danny-avila in #13558
- π fix: Reconcile Agent Action Credential Merges by @danny-avila in #13559
- π§Ό fix: Prevent Shared Link Caching and Strengthen Log Redaction by @danny-avila in #13561
- π©Ή fix: Double-Assert Partial Test Fixture in EndpointIcon by @danny-avila in #13567
- π©Ή fix: Bump GitNexus to 1.6.5 and Fail-Soft the PR Index Job by @danny-avila in #13569
- π·οΈ fix: Preserve Generated Conversation Title on Stop by @danny-avila in #13568
- π» fix: Replay MCP OAuth Prompts for Coalesced Connections by @danny-avila in #13565
- π fix: Resolve Env Variables in MCP OAuth URL Fields by @rene84 in #13573
- πΏ fix: Anchor Post-Auth MCP Stream to Submission Message Tree by @danny-avila in #13582
- π§ fix: Add Per-User Throttle to 2FA Continuation Attempts by @danny-avila in #13583
- π fix: Preserve Project Scope Through Enforced Model Specs by @danny-avila in #13586
- πͺ fix: Preserve Model Spec Icons Across Stream Resume and Abort by @danny-avila in #13603
- π§ fix: Bound Memory Agent Input by @danny-avila in #13606
- π· fix: Preserve disabled build info flag in loadDefaultInterface by @ethanlaj in #13608
- βοΈ fix: Deduplicate Skill Bodies Across Fresh Primes and History by @danny-avila in #13610
- π fix: Prefer Imagen-Specific Location over Default Google Region by @pedrojreis in #13613
- π¬ fix: Coalesce Auth Recovery into a Single Refresh Flight by @danny-avila in #13618
- π§΅ fix: Reject Preliminary Parent Follow-Ups by @danny-avila in #13619
- β³ fix: Extend and Decouple MCP OAuth Flow Timeouts by @danny-avila in #13622
- β fix: Sanitize MCP Tool Schemas for Gemini/Vertex Compatibility by @danny-avila in #13623
- π« fix: Hide Empty Agents Endpoint from Model Selector by @danny-avila in #13624
- ποΈ fix: Resolve MCP Runtime User and Request Placeholders by @danny-avila in #13626
- π fix: Suppress Expected Speech Synthesis Cancellation Errors by @upman in #13627
- ποΈ fix: Resolve Speech Recognition CJS/ESM Import Shape by @upman in #13631
- π³οΈ fix: Guard Sparse Content Parts in Message Nav Preview by @upman in #13632
- ποΈ fix: Stream File Authoring Previews from Partial Tool Args by @danny-avila in #13634
- π₯ fix: ChatGPT Conversation Import Failures by @danny-avila in #13637
- πͺΆ fix: Prevent Soft Default Model Spec from Overriding User Selections by @danny-avila in #13642
- π§ fix: Mobile Sidebar Navigation on Projects View by @danny-avila in #13647
- π« fix: Forward User Auth Headers on Model Fetch by @Ivan-Apro in #13616
- πͺ fix: Align Mobile Sidebar Toggle Gating with JS Breakpoint Across Views by @danny-avila in #13654
- π fix: Sidebar Chat List Width Tracking and Stale Row Measurements by @danny-avila in #13655
- π· fix: Reject Client-Supplied Subagent Configuration by @danny-avila in #13660
- π fix: Carry Request-Scoped MCP Tools into PTC Execution by @danny-avila in #13669
- π fix: Reuse Request-Scoped MCP Connections per Run by @danny-avila in #13673
- π fix: Scan All Message Roles in messageFilter.pii by @dustinhealy in #13677
- π fix: Auto-Recover from Stale Service Worker Assets After Deploys by @danny-avila in #13686
- π₯ fix: Send First OpenID Audience on Authorization Requests by @danny-avila in #13694
- π fix: Preserve Ephemeral MCP Selections Across Model Switches by @danny-avila in #13697
- π¬ fix: Prevent Viewed Conversations from Re-Arming the Soft Default Spec by @danny-avila in #13699
- πͺ’ fix: Prune Dangling Skill IDs from Agent Allowlists by @danny-avila in #13702
- ποΈ fix: Gate Request-Scoped MCP Servers Out of Persistent Tool Cache by @danny-avila in #13672
- π§Ύ fix: Bill Subagent Child-Run Model Usage in Parent Transactions by @danny-avila in #13683
- π§ fix: Honor NO_PROXY for OpenID requests when PROXY is set by @danny-avila in #13716
- π fix: Centralize Outbound Proxy Handling by @danny-avila in #13726
- πΏ fix: Preserve Viewed Branch on Sibling-Tree Churn by @danny-avila in #13732
- π¨ fix: Gate message hover-reveal controls on hover capability, not width by @danny-avila in #13712
- π fix: Render Web Search Favicons on Raw SERP Results During Streaming by @danny-avila in #13741
- π’ fix: Prevent "approximately" tildes from rendering as markdown subscript by @danny-avila in #13743
- πͺ fix: Correct Context Usage Gauge After Summarization by @danny-avila in #13744
- π fix: Isolate RUM Telemetry Proxy Auth from App Auth by @danny-avila in #13765
- π«· fix: Withhold Anthropic Custom Headers From User URLs by @danny-avila in #13767
- ποΈ fix: Scope Skill Sync Status by @danny-avila in #13771
- ποΈ fix: Scope Token Config Cache by @danny-avila in #13770
- πͺ’ fix: Tie MCP Cleanup To Resumable Runs by @danny-avila in #13769
π§ Refactoring and Performance
- π refactor: Scope Role Cache Keys by Isolation Context by @danny-avila in #13454
- ποΈ refactor: Scope App-Config Override Cache by Isolation Context by @danny-avila in #13455
- π©» refactor: Replace Opaque OAuth Errors with Structured Failure Diagnostics by @danny-avila in #13471
- π refactor: Agent Avatar Conversation Icons and Streaming Indicators by @danny-avila in #13563
- ποΈ refactor: Prioritize Deployment Skills over Persisted Duplicates by @danny-avila in #13575
- π§ perf: Memoize Completed Markdown Blocks During Streaming by @danny-avila in #13576
- β‘ perf: Migrate data-schemas Build to tsdown with isolatedDeclarations by @danny-avila in #13578
- β‘οΈ refactor: Migrate @librechat/api Build to tsdown by @danny-avila in #13595
- β‘ refactor: Migrate data-provider Build to tsdown by @danny-avila in #13597
- β‘ refactor: Migrate @librechat/client Build to tsdown by @danny-avila in #13596
- π¦ chore: Declare runtime deps externalized by tsdown in @librechat/api by @danny-avila in #13600
- π refactor: Attach Message Context to Langfuse Feedback Scores by @danny-avila in #13604
- βοΈ refactor: Lazy-load HEIC upload conversion by @upman in #13638
- βοΈ refactor: lazy-load React Query Devtools by @upman in #13639
- βοΈ refactor: Lazy load locale resources by @upman in #13640
- βοΈ refactor: Brotli asset serving behind a feature toggle by @upman in #13641
- π€« refactor: Silent MCP OAuth Refresh on Mid-Session 401 by @danny-avila in #13369
- π‘ refactor: Gate Noisy Redis OTEL Instrumentation by @danny-avila in #13764
- π§Ύ refactor: Disable Context Cost By Default by @danny-avila in #13768
π§ͺ Tests
- π§ͺ test: Add E2E Regression For 2FA framer-motion Crash by @danny-avila in #13513
- π test: Run Mock E2E Suite Through createRun With In-Process Fake Model by @danny-avila in #13508
- π² test: Add E2E Coverage for Message Tree Streaming by @danny-avila in #13570
- β ci: Add mock e2e coverage for agents, prompts, MCP, and chat flows by @teresama in #13589
π¦ Dependencies, Chores & CI
- π·οΈ ci: Sync Helm Chart Tags by @danny-avila in #13446
- π³ chore: Upgrade Docker Builds To Node 24 by @danny-avila in #13448
- βοΈ ci: Fix Helm Tag Sync Workflow Planning by @danny-avila in #13451
- β‘ chore: Upgrade Vite For Node 24 by @danny-avila in #13450
- πΌ ci: Guard Scoped Model Applies the Isolation Plugin by @danny-avila in #13458
- πͺͺ ci: Fix Helm Tag Sync Git Auth by @danny-avila in #13460
- π€« chore: Quiet Repetitive Log Noise from Balance, CloudFront, and Capability Paths by @danny-avila in #13461
- π refactor: Reduce Frontend Build Warning Noise by @danny-avila in #13463
- π ci: Fix Locize Sync CDN Mode by @danny-avila in #13465
- β‘ refactor: Change Minifier from 'terser' to 'oxc' in Vite Config by @danny-avila in #13476
- π§ ci: Use System Chrome for Mock E2E by @danny-avila in #13481
- πͺ§ chore: Generalize Project Name Placeholder by @danny-avila in #13514
- π¦ chore: npm audit fix by @danny-avila in #13515
- πͺΉ feat: Collapse Empty Projects Section in the Sidebar by Default by @danny-avila in #13531
- π§ chore: Update ESLint config, Import Sorting script, Test Sharding, Bump @librechat/agents by @danny-avila in #13552
- π· ci: Type-check the Client Workspace by @danny-avila in #13560
- π¦ chore: Update Turbo to v2.9.16 by @danny-avila in #13564
- β¬οΈ chore: Bump TypeScript to 5.9.3 by @danny-avila in #13584
- π§ chore: Enforce isolatedDeclarations in data-schemas tsconfig by @danny-avila in #13593
- π· ci: Add API runtime smoke (boot the production image) to docker-smoke by @danny-avila in #13605
- β chore: Upgrade @google/genai SDK to ^2.8.0 by @danny-avila in #13625
- π¦ chore: Bump @librechat/agents to v3.2.32 by @danny-avila in #13633
- π¦ chore: Bump jest-junit to v17.0.0 by @danny-avila in
f074bd9 - π¦ chore: Bump @librechat/agents to v3.2.33 by @danny-avila in
e25373d - π° ci: Close Leaked Redis Clients in Cache Integration Tests by @danny-avila in #13649
- πͺ ci: Shard Windows Frontend Unit Tests by @danny-avila in #13651
- ποΈ ci: Cache Dependencies and Builds in Cache Integration Tests by @danny-avila in #13652
- π€ ci: Cache and Authenticate HF Model Downloads in GitNexus Index by @danny-avila in #13653
- β« ci: Bump GitNexus to 1.6.7 to Fix Embeddings Index Timeout by @danny-avila in #13658
- ποΈ chore: Use Element Access over
any-Casts in Registry Cache Spec by @danny-avila in #13664 - π¦ chore: Update Turbo package to v2.9.17 by @danny-avila in
eebbde7 - π§Ή ci: Relieve disk pressure on GitNexus deploy by @danny-avila in #13666
- π¦ chore: npm audit fix by @danny-avila in #13701
- πͺ fix: Cross-Platform Absolute-Path Check in tsdown neverBundle Predicates by @danny-avila in #13700
- β¨ v0.8.7-rc1 by @danny-avila in #13592
- π chore: Bump Helm chart version to 2.0.6 by @danny-avila in
5986a1c6d2
π Internationalization
- π i18n: Update translation.json with latest translations by @danny-avila in #13466, #13482, #13505, #13766
New Contributors
- @jcbartle made their first contribution in #13429
- @teresama made their first contribution in #13472
- @joohan-lee made their first contribution in #13468
- @graphaelli made their first contribution in #13544
- @rene84 made their first contribution in #13573
- @pedrojreis made their first contribution in #13613
- @Ivan-Apro made their first contribution in #13616
Full Changelog: v0.8.6...v0.8.7-rc1