authorgravatar for 62337003+Bil0000@users.noreply.github.comBilal Bakr <62337003+Bil0000@users.noreply.github.com> 2026-08-21 04:17:05+03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-08-20 21:17:05-04:00
log68966c1e6603d6f5d52a4ee227e2b0ee03b7109f
tree176abb3bbaacd0725c8f4fa048b274b1992627ba
parent7107a98a225be85b58ddcd4de02c343af7d4707a
signature Signed by PGP key B5690EEEBB952194

fix(web): add space above composer task tabs (#7740)


1 files changed, 14 insertions(+), 11 deletions(-)

apps/web/src/components/chat/ChatComposer.tsx+14-11
...@@ -2362,6 +2362,17 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)...@@ -2362,6 +2362,17 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
2362 steps={visibleTaskSteps}2362 steps={visibleTaskSteps}
2363 />2363 />
2364 ) : null;2364 ) : null;
2365 const showShoulderTabs =
2366 !props.externalDrawerAttached &&
2367 !showComposerTopDrawer &&
2368 !isTasksDrawerOpen &&
2369 !isComposerCollapsedMobile;
2370 const hasShoulderTab =
2371 showShoulderTabs &&
2372 (stashQueue.length > 0 ||
2373 (visibleTasksProgress !== null &&
2374 visibleTaskSteps !== null &&
2375 visibleTasksProgress.totalSteps > 0));
2365 useEffect(() => {2376 useEffect(() => {
2366 if (visibleTasksProgress === null || visibleTaskSteps === null) {2377 if (visibleTasksProgress === null || visibleTaskSteps === null) {
2367 setIsTasksDrawerOpen(false);2378 setIsTasksDrawerOpen(false);
...@@ -2813,7 +2824,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)...@@ -2813,7 +2824,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
2813 onDragOverCapture={composerMentionDragHandlers.onDragOver}2824 onDragOverCapture={composerMentionDragHandlers.onDragOver}
2814 onDragLeaveCapture={onComposerMentionDragLeaveCapture}2825 onDragLeaveCapture={onComposerMentionDragLeaveCapture}
2815 onDropCapture={composerMentionDragHandlers.onDrop}2826 onDropCapture={composerMentionDragHandlers.onDrop}
2816 className="mx-auto w-full min-w-0 max-w-3xl"2827 className={cn("mx-auto w-full min-w-0 max-w-3xl", hasShoulderTab && "pt-7")}
2817 data-chat-composer-form="true"2828 data-chat-composer-form="true"
2818 >2829 >
2819 {showComposerTopDrawer && (!isTasksDrawerOpen || hasBlockingComposerTopDrawer) ? (2830 {showComposerTopDrawer && (!isTasksDrawerOpen || hasBlockingComposerTopDrawer) ? (
...@@ -2939,12 +2950,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)...@@ -2939,12 +2950,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
2939 />2950 />
2940 ) : null}2951 ) : null}
2941 <div className="relative">2952 <div className="relative">
2942 {visibleTasksProgress &&2953 {showShoulderTabs && visibleTasksProgress && visibleTaskSteps ? (
2943 visibleTaskSteps &&
2944 !isTasksDrawerOpen &&
2945 !props.externalDrawerAttached &&
2946 !showComposerTopDrawer &&
2947 !isComposerCollapsedMobile ? (
2948 <ComposerTasksBadge2954 <ComposerTasksBadge
2949 expanded={false}2955 expanded={false}
2950 hasTrailingShoulder={stashQueue.length > 0}2956 hasTrailingShoulder={stashQueue.length > 0}
...@@ -2954,10 +2960,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)...@@ -2954,10 +2960,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
2954 steps={visibleTaskSteps}2960 steps={visibleTaskSteps}
2955 />2961 />
2956 ) : null}2962 ) : null}
2957 {!props.externalDrawerAttached &&2963 {showShoulderTabs ? (
2958 !showComposerTopDrawer &&
2959 !isTasksDrawerOpen &&
2960 !isComposerCollapsedMobile ? (
2961 <ComposerStashBadge2964 <ComposerStashBadge
2962 count={stashQueue.length}2965 count={stashQueue.length}
2963 menuOpen={isStashMenuOpen}2966 menuOpen={isStashMenuOpen}