| ... | @@ -9,7 +9,11 @@ import { AlertTriangleIcon, XIcon } from "lucide-react"; | ... | @@ -9,7 +9,11 @@ import { AlertTriangleIcon, XIcon } from "lucide-react"; |
| 9 | | 9 | |
| 10 | import type { DraftId } from "../../composerDraftStore"; | 10 | import type { DraftId } from "../../composerDraftStore"; |
| 11 | import { useT3ProjectFileScripts } from "../../hooks/useT3ProjectFileScripts"; | 11 | import { useT3ProjectFileScripts } from "../../hooks/useT3ProjectFileScripts"; |
| 12 | import type { EnvMode, EnvironmentOption } from "../BranchToolbar.logic"; | 12 | import { |
| | 13 | shouldShowEnvironmentIndicator, |
| | 14 | type EnvMode, |
| | 15 | type EnvironmentOption, |
| | 16 | } from "../BranchToolbar.logic"; |
| 13 | import { BranchToolbar } from "../BranchToolbar"; | 17 | import { BranchToolbar } from "../BranchToolbar"; |
| 14 | import { BranchToolbarEnvironmentSelector } from "../BranchToolbarEnvironmentSelector"; | 18 | import { BranchToolbarEnvironmentSelector } from "../BranchToolbarEnvironmentSelector"; |
| 15 | import GitActionsControl from "../GitActionsControl"; | 19 | import GitActionsControl from "../GitActionsControl"; |
| ... | @@ -78,6 +82,14 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { | ... | @@ -78,6 +82,14 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { |
| 78 | props.environmentId, | 82 | props.environmentId, |
| 79 | props.activeProjectScripts ? props.gitCwd : null, | 83 | props.activeProjectScripts ? props.gitCwd : null, |
| 80 | ); | 84 | ); |
| | 85 | // Same rule as the composer strip: a lone remote machine still gets a row, |
| | 86 | // shown as a static label because there is nothing to pick. |
| | 87 | const canPickEnvironment = props.availableEnvironments.length > 1; |
| | 88 | const showEnvironment = shouldShowEnvironmentIndicator({ |
| | 89 | activeEnvironment: |
| | 90 | props.availableEnvironments.find((env) => env.environmentId === props.environmentId) ?? null, |
| | 91 | canPickEnvironment, |
| | 92 | }); |
| 81 | const branchToolbarProps = { | 93 | const branchToolbarProps = { |
| 82 | showGitControls: props.isGitRepo, | 94 | showGitControls: props.isGitRepo, |
| 83 | environmentId: props.environmentId, | 95 | environmentId: props.environmentId, |
| ... | @@ -138,7 +150,7 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { | ... | @@ -138,7 +150,7 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { |
| 138 | ) : null} | 150 | ) : null} |
| 139 | | 151 | |
| 140 | <div className="flex flex-col"> | 152 | <div className="flex flex-col"> |
| 141 | {density === "full" && props.availableEnvironments.length > 1 ? ( | 153 | {density === "full" && showEnvironment ? ( |
| 142 | <BranchToolbarEnvironmentSelector | 154 | <BranchToolbarEnvironmentSelector |
| 143 | displayMode="panel" | 155 | displayMode="panel" |
| 144 | autoEnvironmentLabel={props.autoEnvironmentLabel} | 156 | autoEnvironmentLabel={props.autoEnvironmentLabel} |
| ... | @@ -146,7 +158,9 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { | ... | @@ -146,7 +158,9 @@ export function ThreadDetailsPanel(props: ThreadDetailsPanelProps) { |
| 146 | envLocked={props.envLocked} | 158 | envLocked={props.envLocked} |
| 147 | environmentId={props.environmentId} | 159 | environmentId={props.environmentId} |
| 148 | availableEnvironments={props.availableEnvironments} | 160 | availableEnvironments={props.availableEnvironments} |
| 149 | onEnvironmentChange={props.onEnvironmentChange} | 161 | {...(canPickEnvironment |
| | 162 | ? { onEnvironmentChange: props.onEnvironmentChange } |
| | 163 | : {})} |
| 150 | /> | 164 | /> |
| 151 | ) : null} | 165 | ) : null} |
| 152 | | 166 | |