Skip to content

๐ŸŽš๏ธ feat: Group Model Parameters and Hide the Ones That Cannot Act - #16247

Open
berry-13 wants to merge 1 commit into
berry-13/chat-filter-menufrom
berry-13/grouped-model-params
Open

berry-13 wants to merge 1 commit into
berry-13/chat-filter-menufrom
berry-13/grouped-model-params

Conversation

@berry-13

@berry-13 berry-13 commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Part 5 of 6 of the quieter-layout stack, based on #16246 (berry-13/chat-filter-menu).

The parameters panel rendered a provider's parameters in the order the definitions arrived, with nothing to say which belonged together. Keys are now filed under six headings, each with a count of what this conversation has changed in it. A key the map does not know, such as a deployment's own customParams, keeps its place in the last section. Every parameter stays visible: narrow controls sit two to a row and only free text takes the full width. Fifteen parameters now take 954px, down from 1243px.

A definition can now declare the companion it depends on. OpenAI's reasoning summary, mode and context need the reasoning object; a thinking budget needs thinking enabled; a cache lifetime needs cache writes. The panel hides a control while its companion is off, and a section left empty disappears. No parameter changes what it sends; this only hides controls whose values the server was already discarding.

Type of change

  • Feature

Testing

Tested environments/configuration:

  • Linux, Node 24, local build of the stack branch on top of canary
  • Checked in the browser in light and dark mode against a seeded dev account (a project with chats, memories, prompts)

Automated tests:

  • npx tsc --noEmit in client and packages/client
  • npx eslint on every changed file, including the shadcn/* design rules
  • npx jest --findRelatedTests over the changed client files: 437 suites, 5,437 tests passing at the top of the stack

Screenshots / recordings

Before is canary; after is the top of this stack, so an image can also show changes from later PRs in the chain. Chromium, 1440x900 desktop and 390x844 mobile.

Before After
Parameters, light params before, light params after, light
Parameters, dark params before, dark params after, dark

Risk / compatibility

The new field on parameter definitions is optional, so existing and custom definitions behave as before.

Checklist

  • I reviewed my own changes
  • Existing relevant tests pass
  • The change does not introduce new warnings or errors
  • Required documentation PR: N/A

The panel rendered a provider's parameter list in the order the definitions
happen to arrive in, so it asked about temperature, then reasoning, then
whether to resend files, with nothing to say which belonged together. The
keys are filed under six headings now, with a count beside each of what this
conversation has changed inside it, which is what the owner scans for before
reaching for Reset. A key this map has never heard of, which is what a
deployment's own customParams look like, keeps its place in the last section
instead of being guessed at or dropped.

Every parameter stays on screen. A settings panel is read as much as it is
edited, and a disclosure trades seeing the current state at a glance for
vertical space that costs nothing to find elsewhere: the headings are
captions rather than buttons, a control is measured against the row it sits
in rather than padded to a fixed block, and only free text takes the full
width. A number, a toggle or a choice says the same thing in half of a 300px
panel, so two sit side by side and the narrow ones in a section come first,
leaving one ragged edge at the bottom instead of a gap beside every
full-width field. Reset and Save As Preset share the closing row. Fifteen
parameters occupy 954px where the same fifteen took 1243px with four of the
six sections shut.

Grouping alone would still show controls that do nothing. A definition can
now declare what it rides along with: OpenAI's reasoning summary, mode and
context travel inside the reasoning object the Responses API takes and are
dropped by the server without it; a thinking budget is read only while
thinking is enabled; a cache lifetime only while the cache is being written.
Those five declare it, the panel judges each one on the companion's
effective value, and a section left with nothing live disappears rather than
standing empty. The rule lives on the definition rather than in the panel so
a deployment defining its own parameters can state one too.

The custom instructions field caps its own rows. It is sized by a shadow
copy of itself, measured as the panel mounts and before the sidebar has
settled on a width, and that measurement can come back as one word per line;
a CSS max-height was hiding the wrong answer rather than correcting it.

No parameter changes what it sends. This drops controls for values the
server was already discarding.
@berry-13
berry-13 added this pull request to stack #16249 September 23, 2026 15:15
@berry-13
berry-13 marked this pull request as ready for review September 23, 2026 16:42
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
๐Ÿ“ Code Review โœ… Completed 2026-09-23T16:49:05.217220Z 370783e Draft marked ready
๐Ÿ”’ Security Review โœ… Completed 2026-09-23T16:48:25.813682Z 370783e Draft marked ready
โ„น๏ธ 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" or "@codex security review".

Codex reacts with ๐Ÿ‘€ while any review is running, comments if it has suggestions, and reacts with ๐Ÿ‘ once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿ’ก Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 370783eac1

โ„น๏ธ 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".

export interface SettingDefinition {
key: string;
/** Conditions that must all hold, or this parameter does nothing and is not shown. */
dependsOn?: SettingDependency[];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Accept dependsOn in the endpoint config schema

When an operator declares dependsOn in customParams.paramDefinitions, endpointSchema parses the entry through paramDefinitionSchema, which does not include this new property, so Zod strips it before the configuration reaches the client. Consequently, the advertised dependency support silently works only for built-in definitions; add a corresponding nested field to paramDefinitionSchema so it can be configured in librechat.yaml.

AGENTS.md reference: AGENTS.md:L66-L68

Useful? React with ๐Ÿ‘ย / ๐Ÿ‘Ž.

},
reasoning_summary: {
key: 'reasoning_summary',
dependsOn: [{ key: 'useResponsesApi', equals: true }],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve reasoning controls for reasoning-object endpoints

For a custom OpenAI-compatible endpoint configured with reasoningFormat: reasoningObject, applyReasoningConfig deliberately sends reasoning_summary, reasoning_mode, and reasoning_context through modelKwargs.reasoning without requiring useResponsesApi; these unconditional dependencies now hide controls that previously worked unless the user enables a transport mode the gateway may not support. Availability needs to account for the endpoint's reasoning format rather than treating useResponsesApi as the sole capability signal.

AGENTS.md reference: AGENTS.md:L31-L34

Useful? React with ๐Ÿ‘ย / ๐Ÿ‘Ž.

@danny-avila danny-avila added the ๐Ÿ—บ๏ธ Chat UI Shell codegraph: the taxonomy area this belongs to (classifier, confidence โ‰ฅ 0.9) label Sep 24, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

๐Ÿ—บ๏ธ Chat UI Shell codegraph: the taxonomy area this belongs to (classifier, confidence โ‰ฅ 0.9)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants