@@ -745,6 +745,11 @@ const ChatForm = memo(function ChatForm({
745745 onFocus = { handleTextareaFocus }
746746 onBlur = { handleTextareaBlur }
747747 aria-label = { localize ( 'com_ui_message_input' ) }
748+ aria-describedby = {
749+ codeWorkspace . state === 'choose' || codeWorkspace . state === 'missing'
750+ ? `code-workspace-hint-${ index } `
751+ : undefined
752+ }
748753 onClick = { handleFocusOrClick }
749754 style = { { height : 44 , overflowY : 'auto' } }
750755 className = { cn (
@@ -763,13 +768,22 @@ const ChatForm = memo(function ChatForm({
763768 </ div >
764769 </ div >
765770 ) }
771+ { ( codeWorkspace . state === 'choose' || codeWorkspace . state === 'missing' ) && (
772+ < p
773+ id = { `code-workspace-hint-${ index } ` }
774+ role = "status"
775+ className = "px-5 pb-2 text-sm text-text-secondary"
776+ >
777+ { localize ( 'com_error_code_workspace_required' ) }
778+ </ p >
779+ ) }
766780 < div
767781 className = { cn (
768- '@container items-between flex gap-2 pb-2' ,
782+ '@container flex flex-wrap items-center gap-2 px -2 pb-2' ,
769783 isRTL ? 'flex-row-reverse' : 'flex-row' ,
770784 ) }
771785 >
772- < div className = { ` ${ isRTL ? 'mr-2' : 'ml-2' } ` } >
786+ < div className = "shrink-0" >
773787 < AttachFileChat
774788 conversation = { conversation }
775789 disableInputs = { disableInputs }
@@ -808,7 +822,7 @@ const ChatForm = memo(function ChatForm({
808822 { index === 0 && conversationId != null && (
809823 < PendingToolApprovalButton conversationId = { conversationId } />
810824 ) }
811- < div className = "mx-auto flex " />
825+ < div className = "grow " />
812826 < TokenUsage index = { index } conversation = { conversation } isSubmitting = { isSubmitting } />
813827 { SpeechToText && (
814828 < AudioRecorder
@@ -821,7 +835,7 @@ const ChatForm = memo(function ChatForm({
821835 { steering . duringRunActive &&
822836 steering . canControlGeneration &&
823837 ( textValue ?. trim ( ) ?? '' ) !== '' && (
824- < div className = { ` ${ isRTL ? 'ml-2' : 'mr-2' } ` } >
838+ < div className = "shrink-0" >
825839 < InterruptSteerButton
826840 steering = { steering }
827841 getText = { ( ) => methods . getValues ( 'text' ) }
@@ -830,7 +844,7 @@ const ChatForm = memo(function ChatForm({
830844 />
831845 </ div >
832846 ) }
833- < div className = { ` ${ isRTL ? 'ml-2 ' : 'mr-2' } ` } >
847+ < div className = { cn ( 'shrink-0' , isRTL ? 'mr-auto ' : 'ml-auto' ) } >
834848 { isSubmitting &&
835849 ( showStopButton || steering . duringRunActive ) &&
836850 ! answerMode . composerAnswers
0 commit comments