+
{isPreparingWorktree ? (
Preparing worktree...
) : null}
diff --git a/apps/web/src/routes/_chat.$threadId.tsx b/apps/web/src/routes/_chat.$threadId.tsx
index 2593eb7605a11a529cee7966c844b77c14f189fe..ccd2002777272e91af88e02a5f773f169f65b8ad 100644
--- a/apps/web/src/routes/_chat.$threadId.tsx
+++ b/apps/web/src/routes/_chat.$threadId.tsx
@@ -15,6 +15,7 @@ const DIFF_INLINE_LAYOUT_MEDIA_QUERY = "(max-width: 1180px)";
const DIFF_INLINE_SIDEBAR_WIDTH_STORAGE_KEY = "chat_diff_sidebar_width";
const DIFF_INLINE_DEFAULT_WIDTH = "clamp(28rem,48vw,44rem)";
const DIFF_INLINE_SIDEBAR_MIN_WIDTH = 26 * 16;
+const COMPOSER_COMPACT_MIN_LEFT_CONTROLS_WIDTH_PX = 208;
const DiffPanelSheet = (props: {
children: ReactNode;
@@ -91,8 +92,23 @@ const DiffPanelInlineSidebar = (props: {
composerViewport.clientWidth - viewportPaddingLeft - viewportPaddingRight,
);
const formRect = composerForm.getBoundingClientRect();
+ const composerFooter = composerForm.querySelector("[data-chat-composer-footer='true']");
+ const composerRightActions = composerForm.querySelector(
+ "[data-chat-composer-actions='right']",
+ );
+ const composerRightActionsWidth = composerRightActions?.getBoundingClientRect().width ?? 0;
+ const composerFooterGap = composerFooter
+ ? Number.parseFloat(window.getComputedStyle(composerFooter).columnGap) ||
+ Number.parseFloat(window.getComputedStyle(composerFooter).gap) ||
+ 0
+ : 0;
+ const minimumComposerWidth =
+ COMPOSER_COMPACT_MIN_LEFT_CONTROLS_WIDTH_PX +
+ composerRightActionsWidth +
+ composerFooterGap;
const hasComposerOverflow = composerForm.scrollWidth > composerForm.clientWidth + 0.5;
const overflowsViewport = formRect.width > viewportContentWidth + 0.5;
+ const violatesMinimumComposerWidth = composerForm.clientWidth + 0.5 < minimumComposerWidth;
if (previousSidebarWidth.length > 0) {
wrapper.style.setProperty("--sidebar-width", previousSidebarWidth);
@@ -100,7 +116,7 @@ const DiffPanelInlineSidebar = (props: {
wrapper.style.removeProperty("--sidebar-width");
}
- return !hasComposerOverflow && !overflowsViewport;
+ return !hasComposerOverflow && !overflowsViewport && !violatesMinimumComposerWidth;
},
[],
);