Skip to content

Release sync - #16476

Merged
danny-avila merged 10 commits into
mainfrom
dev
Sep 29, 2026
Merged

danny-avila merged 10 commits into
mainfrom
dev

Conversation

@danny-avila

Copy link
Copy Markdown
Collaborator

Pull Request

Before submitting, please review the Contributing Guide.

Documentation changes belong in the LibreChat documentation repository.

Summary

How it works

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Performance improvement
  • Breaking change
  • Documentation
  • Translation
  • Tests / tooling / CI

Testing

Tested environments/configuration:

Automated tests:

Screenshots / recordings

Risk / compatibility

Checklist

  • I reviewed my own changes
  • Relevant tests have been added or updated
  • Existing relevant tests pass
  • The change does not introduce new warnings or errors
  • User-facing or complex behavior is documented where necessary
  • Required dependency changes have been merged/published
  • Required documentation PR:

danny-avila and others added 10 commits September 28, 2026 15:45
… Starts (#16453)

* 🔁 fix: Retry Code API Rate Limits That Reject Before a Workspace Call Starts

* 🔁 fix: Bound Workspace Rate Limit Retries by Code API Budget

* 🔗 fix: Isolate Code API Retry Default from Utility Graph

* 🧩 fix: Type the Shared Code API Retry Default

* 🔁 fix: Keep Workspace Admission Retry Budgets Independent

---------

Co-authored-by: Lia <lia@librechat.ai>
* 🔲 fix: Anchor Quote Popup to Visible Selection

* 🔲 fix: Keep Cross-Container Quotes Anchored to Visible Text

* 🔲 perf: Bound Quote Geometry Walk to Selected Text

---------

Co-authored-by: Lia <lia@librechat.ai>
* fix: validate principal config overrides against configSchema

Reject admin config writes whose fields fail configSchema, and drop
invalid fields from stored overrides at merge time so the base value
from librechat.yaml survives.

* fix: require the merge key on partial custom endpoint overrides

* test: register a dedicated user for config override scenarios

* test: log in once per worker in config override scenarios

* fix: strip invalid overrides under dotted record keys

* fix: ignore a stored overrides document that is not an object

* fix: reject indexed patches into merged-by-name override arrays

* fix: match union options by shape, apply supplied-value refinements, reject paths past scalars

* refactor: validate config overrides on the merged result instead of the patch

* test: cover record refinements on written config fields

* fix: validate config field writes on top of the stored override

* fix: attribute id-addressed issues to their item and keep valid sections after repairs

* fix: judge field writes by what they change, over the principal's tombstoned base

* fix: validate whole-document config writes on the principal's tombstoned base

* fix: report config override issues as stable codes instead of schema messages

* fix: reject indexed writes into keyed arrays and keep filtered MCP servers out of validation state

* fix: judge each override layer only on the values it supplies

* fix: reject merged-by-key array items that are not objects

* fix: report repeated merge keys on the items the keyed merge discards

* fix: reject keys a union option drops when another option defines them
* ⏩ fix: Clarify Steering Timing and First-Response Fallback

* style: Format First-Response Tooltip Choice

* 💬 fix: Avoid Implying the First Conversation Has Not Started

* fix: Explain the Steer Sooner Enter Override

---------

Co-authored-by: Lia <lia@librechat.ai>
* 🥧 fix: Show Failed Call Fractions and Preview Age

* 🗑️ chore: Remove Unused Failure Labels

* 🕒 test: Verify Live Failure Close Times

* 🧵 fix: Select Accessible Badge Labels Without Nested Ternaries

* 🪆 fix: Show One Failure Pill for Live Phase Groups

---------

Co-authored-by: Lia <lia@librechat.ai>
* 🔀 fix: Resolve SplitText Direction From Its Own Text Under RTL

SplitText wraps every grapheme and every word in its own inline-block box, so
the bidi algorithm never sees the text as one run. Under an RTL document the
boxes lay out right to left, and a Latin greeting or agent name on the landing
page renders mirrored, letter by letter and word by word.

The paragraph and each word box now carry dir="auto", so direction resolves
from the first strong character of the text itself: the paragraph decides word
order and each word decides its own letter order. RTL text still lays out
right to left, and mixed greetings render each part correctly.

Claude-Session: https://claude.ai/code/session_01EhJ8HUVBZ53ArUzgXDnxom

* 🐛 fix: Preserve RTL Greeting Word Order

---------

Co-authored-by: Lia <lia@librechat.ai>
Co-authored-by: Lia <lia@librechat.ai>
…Budget (#16464)

* ⏱️ fix: Fit Workspace Command Timeouts Inside the Configured Request Budget

* ⏱️ fix: Make Workspace Command Admission Reserve Configurable

* 🧪 test: Match Steering E2E Labels on Dev

* ⏱️ fix: Reject Impossible Workspace Command Admission Reserves

* 🧪 test: Match Failed Call Count in Dev E2E

* ⏱️ fix: Bound Workspace Admission Headroom and Document Its Budget

* ⏱️ fix: Validate Default Workspace Command Admission Reserve

---------

Co-authored-by: Lia <lia@librechat.ai>
@danny-avila
danny-avila merged commit 63363a7 into main Sep 29, 2026
75 checks passed
@danny-avila
danny-avila deployed to legacy-mirror September 29, 2026 03:24 — with GitHub Actions Active
@danny-avila
danny-avila deployed to legacy-mirror September 29, 2026 03:24 — with GitHub Actions Active

This branch was successfully deployed

1 active deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants