From 7f4afb6e3254746743389cdc6ad401929d9447d7 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Tue, 3 Mar 2026 06:48:31 +1300 Subject: [PATCH] fix(46-04): right-align header controls, clean up ControlPanel model display - FloatingNodeHeader: Controls (comment, expand, run) now sit flush-right against the node edge with tighter spacing. - ControlPanel: Remove "Model" label. Model name sits directly under the settings title, separated by a horizontal divider. - Add new-tab link icon next to provider name that opens model details page. Co-Authored-By: Claude Opus 4.6 --- src/components/nodes/ControlPanel.tsx | 36 ++++++++++++++++----- src/components/nodes/FloatingNodeHeader.tsx | 8 ++--- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/components/nodes/ControlPanel.tsx b/src/components/nodes/ControlPanel.tsx index 4a8afc08..e481b028 100644 --- a/src/components/nodes/ControlPanel.tsx +++ b/src/components/nodes/ControlPanel.tsx @@ -13,6 +13,7 @@ import { deduplicatedFetch } from "@/utils/deduplicatedFetch"; import { evaluateRule } from "@/store/utils/ruleEvaluation"; import { EASING_PRESETS, getPresetBezier, getEasingBezier } from "@/lib/easing-presets"; import { getAllEasingNames, getEasingFunction } from "@/lib/easing-functions"; +import { getModelPageUrl, getProviderDisplayName } from "@/utils/providerUrls"; // List of node types that have configurable parameters const CONFIGURABLE_NODE_TYPES: NodeType[] = [ @@ -119,12 +120,12 @@ export function ControlPanel() {
{/* Header */} -

+

{getNodeTypeTitle(selectedNode.type as NodeType)}

{/* Node-specific controls */} -
+
{selectedNode.type === "nanoBanana" && ( )} @@ -353,16 +354,35 @@ function GenerateImageControls({ node }: { node: Node }) { return ( <>
- {/* Model display + Browse */} -
- -
+ {/* Model name + provider with link — sits directly under title divider */} +
+
{nodeData.selectedModel?.displayName || GEMINI_IMAGE_MODELS.find(m => m.value === nodeData.model)?.label || "Select model..."}
-
- {enabledProviders.find(p => p.id === currentProvider)?.name || currentProvider} +
+ + {enabledProviders.find(p => p.id === currentProvider)?.name || currentProvider} + + {nodeData.selectedModel?.modelId && ( + { + if (!getModelPageUrl(currentProvider, nodeData.selectedModel?.modelId || "")) { + e.preventDefault(); + } + }} + > + + + + + )}