mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-09-23 16:45:42 +00:00
|
Some checks are pending
Docker Dev Branch Images Build / build (Dockerfile, lc-dev, node) (push) Waiting to run
Docker Dev Branch Images Build / build (Dockerfile.multi, lc-dev-api, api-build) (push) Waiting to run
GitNexus Index / index (push) Waiting to run
GitNexus Index / post-index (push) Blocked by required conditions
* 🪶 fix: Yield Soft Default Model Spec to Agent Picks in Picker-Only Deployments The `hasEphemeralModelOptions` gate makes the soft default canonical whenever the selector offers no ephemeral endpoint → model options, so lingering endpoint/model residue never strands a new chat on an unselectable endpoint. That gate swept in agent and assistant selections too: under an agents-only allow-list (`addedEndpoints: [agents]`), every New Chat re-armed the soft spec and discarded the agent the user had just selected, with no way to make the choice stick. An agent pick is the one real selection a picker-only deployment offers, so it now yields like any other selection, while endpoint/model residue keeps falling to the soft default. - Add `hasSelectableEntitySelection`: the stored setup yields when it names a non-ephemeral agent_id (or an assistant_id) on an endpoint the allow-list and endpoints config still expose. Ephemeral ids, and picks whose endpoint has since left the allow-list, stay residue so a stale entity cannot strand a new chat. - Invert the three unit cases that asserted the soft default outranking a stored agent under an agents-only allow-list; add coverage for assistants, prioritized configs, ephemeral agent ids, endpoint/model residue, an endpoints config without agents, and the pre-load allow-list path (35 cases, was 29). - Add an e2e regression test: under an intercepted agents-only allow-list, a selected agent survives New Chat and a cold load, while a cleared instance still lands on the soft default. * 🧹 chore: Type the Intercepted Startup Config in the Soft Default E2E The agents-only allow-list interception cast the `/api/config` response to `{ modelSpecs?: Record<string, unknown> }`, discarding the startup-config schema at the exact point the test rewrites an API response — so a future config shape change would go unchecked here. Reuse `TStartupConfig` instead, and only rewrite `modelSpecs` when the response actually carries it rather than fabricating it. |
||
|---|---|---|
| .. | ||
| activity-labels.spec.ts | ||
| agent-file-ownership.spec.ts | ||
| agent-handoffs.spec.ts | ||
| agent-skills-added.spec.ts | ||
| agent-skills.spec.ts | ||
| agents.helpers.ts | ||
| agents.spec.ts | ||
| app-load.spec.ts | ||
| attachment-preview-loop.spec.ts | ||
| auth.spec.ts | ||
| background-tools.spec.ts | ||
| bookmarks.spec.ts | ||
| chat.spec.ts | ||
| conversation-management.spec.ts | ||
| db.ts | ||
| deployment-skills.spec.ts | ||
| enforced-model-specs.spec.ts | ||
| helpers.ts | ||
| isolation.spec.ts | ||
| mcp-allowlist-override.spec.ts | ||
| mcp-ephemeral.spec.ts | ||
| mcp.spec.ts | ||
| memory.spec.ts | ||
| message-tree.spec.ts | ||
| model-spec-branding.spec.ts | ||
| model-spec-icons.spec.ts | ||
| model-spec-skills.spec.ts | ||
| model-spec-starters.spec.ts | ||
| model-switching.spec.ts | ||
| permissions.spec.ts | ||
| projects.spec.ts | ||
| prompts.spec.ts | ||
| quotes.spec.ts | ||
| shared-links.spec.ts | ||
| sidebar.spec.ts | ||
| skill-file-authoring.spec.ts | ||
| soft-default.spec.ts | ||
| steering.spec.ts | ||
| tool-approvals.spec.ts | ||
| two-factor.spec.ts | ||
| usage.spec.ts | ||