@@ -13,7 +13,6 @@ import {
1313import { useConnectivity } from "../../../hooks/useConnectivity" ;
1414import { track } from "../../../shell/analytics" ;
1515import { useOptionalAuthenticatedClient } from "../../auth/authClient" ;
16- import { useUserRepositoryIntegration } from "../../integrations/useIntegrations" ;
1716import { PromptInput } from "../../message-editor/components/PromptInput" ;
1817import { useDraftStore } from "../../message-editor/draftStore" ;
1918import type { EditorHandle } from "../../message-editor/types" ;
@@ -25,14 +24,9 @@ import {
2524 type AgentAdapter ,
2625 useSettingsStore ,
2726} from "../../settings/settingsStore" ;
28- import {
29- type WorkspaceMode ,
30- WorkspaceModeSelect ,
31- } from "../../task-detail/components/WorkspaceModeSelect" ;
32- import { useCloudModeEnabled } from "../../task-detail/hooks/useCloudModeEnabled" ;
27+ import type { WorkspaceMode } from "../../task-detail/components/WorkspaceModeSelect" ;
3328import { usePreviewConfig } from "../../task-detail/hooks/usePreviewConfig" ;
3429import { useTaskCreation } from "../../task-detail/hooks/useTaskCreation" ;
35- import { resolveWorkspaceModePreference } from "../../task-detail/hooks/workspaceModePreference" ;
3630import { trackAndCreateCanvas } from "../createCanvasAnalytics" ;
3731import { channelFeedQueryKey } from "../hooks/useChannelFeed" ;
3832import {
@@ -64,8 +58,8 @@ interface ChannelHomeComposerProps {
6458// of TaskInput: it reuses the same task-creation pipeline (model/mode/reasoning
6559// preview config + useTaskCreation) but drops the repo/branch pickers — channel
6660// tasks run repo-less and the agent attaches a repo lazily if it needs one. The
67- // starter-prompt suggestions render in the parent above the box; this owns the
68- // local/cloud selector.
61+ // starter-prompt suggestions render in the parent above the box. Channel tasks
62+ // always run in the cloud, so there's no local/cloud selector.
6963export const ChannelHomeComposer = forwardRef <
7064 ChannelHomeComposerHandle ,
7165 ChannelHomeComposerProps
@@ -108,9 +102,6 @@ export const ChannelHomeComposer = forwardRef<
108102 const {
109103 lastUsedAdapter,
110104 setLastUsedAdapter,
111- lastUsedWorkspaceMode,
112- setLastUsedWorkspaceMode,
113- setLastUsedLocalWorkspaceMode,
114105 allowBypassPermissions,
115106 defaultInitialTaskMode,
116107 lastUsedInitialTaskMode,
@@ -124,30 +115,9 @@ export const ChannelHomeComposer = forwardRef<
124115 [ setLastUsedAdapter ] ,
125116 ) ;
126117
127- const cloudModeEnabled = useCloudModeEnabled ( ) ;
128- const { hasGithubIntegration } = useUserRepositoryIntegration ( ) ;
129-
130- // Repo-less channel tasks only run local or cloud (worktree needs a repo), so
131- // collapse any lingering worktree preference down to local for the initial pick.
132- const [ workspaceMode , setWorkspaceModeState ] = useState < WorkspaceMode > ( ( ) =>
133- resolveWorkspaceModePreference ( {
134- preferredMode : lastUsedWorkspaceMode === "cloud" ? "cloud" : "local" ,
135- cloudModeEnabled,
136- hasGithubIntegration,
137- lastUsedLocalWorkspaceMode : "local" ,
138- } ) ,
139- ) ;
140- const [ selectedCloudEnvId , setSelectedCloudEnvId ] = useState < string | null > (
141- null ,
142- ) ;
143- const setWorkspaceMode = useCallback (
144- ( mode : WorkspaceMode ) => {
145- setWorkspaceModeState ( mode ) ;
146- setLastUsedWorkspaceMode ( mode ) ;
147- if ( mode !== "cloud" ) setLastUsedLocalWorkspaceMode ( mode ) ;
148- } ,
149- [ setLastUsedWorkspaceMode , setLastUsedLocalWorkspaceMode ] ,
150- ) ;
118+ // Channel tasks always run in the cloud — the local/cloud pick is removed, so
119+ // the mode is fixed here and the default cloud environment is used.
120+ const workspaceMode : WorkspaceMode = "cloud" ;
151121
152122 const { modeOption, modelOption, thoughtOption, isLoading, setConfigOption } =
153123 usePreviewConfig ( adapter ) ;
@@ -247,10 +217,7 @@ export const ChannelHomeComposer = forwardRef<
247217 sessionId,
248218 selectedDirectory : "" ,
249219 workspaceMode,
250- sandboxEnvironmentId :
251- workspaceMode === "cloud" && selectedCloudEnvId
252- ? selectedCloudEnvId
253- : undefined ,
220+ sandboxEnvironmentId : undefined ,
254221 editorIsEmpty,
255222 adapter,
256223 executionMode : currentExecutionMode ,
@@ -311,22 +278,6 @@ export const ChannelHomeComposer = forwardRef<
311278
312279 return (
313280 < div className = "flex w-full flex-col" >
314- { /* Canvas generation always runs in the cloud, so the local/cloud pick
315- doesn't apply while canvas mode is armed. */ }
316- { ! canvasArmed && (
317- < div className = "mb-2 flex items-center gap-2" >
318- < WorkspaceModeSelect
319- value = { workspaceMode }
320- onChange = { setWorkspaceMode }
321- overrideModes = { [ "local" , "cloud" ] }
322- selectedCloudEnvironmentId = { selectedCloudEnvId }
323- onCloudEnvironmentChange = { setSelectedCloudEnvId }
324- size = "1"
325- disabled = { isBusy }
326- />
327- </ div >
328- ) }
329-
330281 < PromptInput
331282 ref = { editorRef }
332283 sessionId = { sessionId }
0 commit comments