diff --git a/desktop/src/components/chat/ChatInput.test.tsx b/desktop/src/components/chat/ChatInput.test.tsx
index cd9953e2..869c2990 100644
--- a/desktop/src/components/chat/ChatInput.test.tsx
+++ b/desktop/src/components/chat/ChatInput.test.tsx
@@ -320,9 +320,16 @@ describe('ChatInput file mentions', () => {
render()
+ const panel = screen.getByTestId('chat-input-panel')
+ expect(panel).toHaveClass('rounded-xl')
+ expect(panel).not.toHaveClass('rounded-b-none')
+
expect(await screen.findByRole('button', { name: /Select branch: main/ })).toBeInTheDocument()
expect(screen.getByText('Current worktree')).toBeInTheDocument()
expect(screen.queryByText('Select a project...')).not.toBeInTheDocument()
+ const branchButton = screen.getByRole('button', { name: /Select branch: main/ })
+ expect(panel).toContainElement(branchButton.parentElement)
+ expect(branchButton.parentElement).toHaveClass('bg-transparent')
})
it('uses the persisted message count to keep reopened sessions in context mode while history loads', async () => {
diff --git a/desktop/src/components/chat/ChatInput.tsx b/desktop/src/components/chat/ChatInput.tsx
index 1e74add3..eecfccf9 100644
--- a/desktop/src/components/chat/ChatInput.tsx
+++ b/desktop/src/components/chat/ChatInput.tsx
@@ -151,6 +151,7 @@ export function ChatInput({ variant = 'default', compact = false }: ChatInputPro
const useCompactControls = compact || isMobileComposer
const iconOnlyAction = compact || isMobileComposer
const activeLaunchWorkDir = showLaunchControls ? (launchWorkDir || resolvedWorkDir || '') : (resolvedWorkDir || '')
+ const embedLaunchControlsInHero = isHeroComposer && !useCompactControls && showLaunchControls
const pendingSlashUiAction = !isMemberSession && input.trim().startsWith('/')
? resolveSlashUiAction(input.trim().slice(1))
: null
@@ -802,7 +803,7 @@ export function ChatInput({ variant = 'default', compact = false }: ChatInputPro
+
+ {embedLaunchControlsInHero && (
+
+
+
+ )}
- {!isMemberSession && (
+ {!isMemberSession && !embedLaunchControlsInHero && (