From 015e93491f85f0340093841dce62e11026219f2d Mon Sep 17 00:00:00 2001 From: Shine1i Date: Thu, 5 Mar 2026 11:56:40 +0100 Subject: [PATCH] feat(recipe-studio): persist advanced collapsible states across components and sessions --- .../recipe-studio/dialogs/llm/general-tab.tsx | 9 ++-- .../dialogs/samplers/category-dialog.tsx | 7 ++- .../dialogs/seed/seed-dialog.tsx | 7 ++- .../dialogs/validators/validator-dialog.tsx | 9 ++-- .../src/features/recipe-studio/types/index.ts | 8 ++++ .../recipe-studio/utils/import/importer.ts | 47 ++++++++++++++++++- .../utils/payload/build-payload.ts | 28 +++++++++++ .../recipe-studio/utils/payload/types.ts | 2 + 8 files changed, 106 insertions(+), 11 deletions(-) diff --git a/studio/frontend/src/features/recipe-studio/dialogs/llm/general-tab.tsx b/studio/frontend/src/features/recipe-studio/dialogs/llm/general-tab.tsx index 90ba25f822..eb342c26de 100644 --- a/studio/frontend/src/features/recipe-studio/dialogs/llm/general-tab.tsx +++ b/studio/frontend/src/features/recipe-studio/dialogs/llm/general-tab.tsx @@ -20,7 +20,7 @@ import { } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; -import { type ReactElement, type RefObject, useMemo, useState } from "react"; +import { type ReactElement, type RefObject, useMemo } from "react"; import { useRecipeStudioStore } from "../../stores/recipe-studio"; import type { LlmConfig } from "../../types"; import { isLikelyImageValue } from "../../utils/image-preview"; @@ -151,7 +151,7 @@ export function LlmGeneralTab({ }, [imageColumnOptions, imageContext.column_name, seedColumns]); const traceModeId = `${config.id}-trace-mode`; const reasoningToggleId = `${config.id}-reasoning-content`; - const [advancedOpen, setAdvancedOpen] = useState(false); + const advancedOpen = config.advancedOpen === true; return (
@@ -358,7 +358,10 @@ export function LlmGeneralTab({

)}
- + onUpdate({ advancedOpen: open })} + >