From 12c64a6eaed015189d464785010bd9cdbb482ba6 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Wed, 23 Sep 2026 17:00:26 +0200 Subject: [PATCH 1/6] feat: Group the model parameters and drop the ones that cannot act 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. --- .../SidePanel/Parameters/DynamicCheckbox.tsx | 4 +- .../SidePanel/Parameters/DynamicCombobox.tsx | 6 +- .../SidePanel/Parameters/DynamicDropdown.tsx | 6 +- .../SidePanel/Parameters/DynamicInput.tsx | 8 +- .../SidePanel/Parameters/DynamicSlider.tsx | 12 +- .../SidePanel/Parameters/DynamicSwitch.tsx | 8 +- .../SidePanel/Parameters/DynamicTags.tsx | 10 +- .../SidePanel/Parameters/DynamicTextarea.tsx | 12 +- .../components/SidePanel/Parameters/Panel.tsx | 108 ++++++--- .../Parameters/__tests__/groups.spec.ts | 216 +++++++++++++++++ .../components/SidePanel/Parameters/groups.ts | 225 ++++++++++++++++++ client/src/locales/en/translation.json | 4 + packages/data-provider/src/generate.ts | 19 ++ .../data-provider/src/parameterSettings.ts | 7 + 14 files changed, 579 insertions(+), 66 deletions(-) create mode 100644 client/src/components/SidePanel/Parameters/__tests__/groups.spec.ts create mode 100644 client/src/components/SidePanel/Parameters/groups.ts diff --git a/client/src/components/SidePanel/Parameters/DynamicCheckbox.tsx b/client/src/components/SidePanel/Parameters/DynamicCheckbox.tsx index 4e04dec8544..b5720c9cf44 100644 --- a/client/src/components/SidePanel/Parameters/DynamicCheckbox.tsx +++ b/client/src/components/SidePanel/Parameters/DynamicCheckbox.tsx @@ -51,7 +51,7 @@ function DynamicCheckbox({ return (
@@ -64,7 +64,7 @@ function DynamicCheckbox({ > {labelCode ? (localize(label as TranslationKeys) ?? label) : label || settingKey}{' '} {showDefault && ( - + ({localize('com_endpoint_default')}:{' '} {defaultValue != null ? localize('com_ui_yes') : localize('com_ui_no')}) diff --git a/client/src/components/SidePanel/Parameters/DynamicCombobox.tsx b/client/src/components/SidePanel/Parameters/DynamicCombobox.tsx index f708b44d181..1867636cc26 100644 --- a/client/src/components/SidePanel/Parameters/DynamicCombobox.tsx +++ b/client/src/components/SidePanel/Parameters/DynamicCombobox.tsx @@ -72,12 +72,12 @@ function DynamicCombobox({ return (
- + {showLabel === true && (