Repository navigation
🔌 feat: Custom Endpoints List and Editor Drawer (Wave 2) - #165
Conversation
Purpose-built AI providers editor (WS9, AP-1…AP-10).
Custom endpoints editor (Wave 2, WS10).
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
The configured-only filter now treats a path holding an unsaved value as set: provider groups, generic rows, sections and table-of-contents entries stay shown, so a pending edit of an unset setting never disappears behind the filter. isPathSet moves to counts.ts as the single rule.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0585188471
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Collapsed provider cards and groups summarized a pending API key as plain text. Secret fields (as the field renderer detects them) now show the masked placeholder; environment references stay visible.
Undo inserted a removed endpoint at its loaded position in the shortened pending list, so undoing B after deleting A and B from [A, B, C] gave [C, B]. It now goes back before the first surviving endpoint that was loaded after it.
…ues Only In a profile, the first pending edit of an inherited endpoint is not yet a stored override, so the set-values-only filter hid the row as soon as its drawer closed. Edited rows now stay listed.
Override a built-in parameter appended only { key, default }. LibreChat expands librechat.yaml definitions at startup but serves an override's as stored, and its client replaces the built-in definition with it whole, so the parameter lost its type, component and label. The full built-in definition is now stored (optionType custom, as LibreChat expands it), and a definition that differs from its built-in only in its default still opens as a default override.
The headers editor remembered every focused text input, header names included, so picking a placeholder after focusing a name wrote it into the name. Key/value inputs now carry data-kv-part, only value inputs are tracked, and with no value focused the placeholder is copied instead.
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Custom endpoints editor (Wave 2, WS10).
Replaces the stack of 25+ identical 3,000px accordion cards on the Custom endpoints tab with a compact list and an editor drawer.
List. Each row shows:
A filter matches names, hosts and model ids. Pending deletions stay listed with Undo, and are read from the page's collection edits, so they survive Discard → Undo. The TOC, Ctrl+K and the review's Go to field open the editor at the field.
Editor drawer (with section nav):
Every overridden field has a Revert action, and unsaved fields have Edited/Undo.
Validation. Inline, before saving:
Create flow. Starts from provider templates (OpenRouter, Groq, Mistral, DeepSeek, xAI, Together AI, Perplexity, Fireworks, Ollama, Blank). Create stays disabled until the endpoint is complete, and a filled-in draft asks before it is discarded.
Profiles. Inherited endpoints are read-only until 'Override for ', and saves write only the changed keys. Creating a name Base already uses is redirected to overriding it. 'Set values only' narrows the list to the profile's own endpoints.
Shared plumbing (additive):
Tests. Unit and RTL tests for validation, the renderer, parameter definitions, pricing and the tag input. The live-gated Playwright journeys are updated, including a new CE-1 test. axe reports 0 violations in light and dark.
Change Type
Testing
npx tsc --noEmit(clean),npx vitest run(1933 tests pass) andnpx eslint src/ e2e/(clean).librechat.yaml: acceptance criteria at 1440 and 390 px, light and dark, with screenshots.bun run test:lint-rulesandvite buildpass.Test Configuration:
dev(data-provider 0.8.527) with MongoDB 8.2Checklist