\\n1348 | \\t\\t\\t{showAnnouncement &&
}\\n1349 | \\t\\t\\t{task ? (\\n1350 | \\t\\t\\t\\t<>\\n1351 | \\t\\t\\t\\t\\t
\\n1364 | \\n1365 | \\t\\t\\t\\t\\t{hasSystemPromptOverride && (\\n1366 | \\t\\t\\t\\t\\t\\t
\\n1367 | \\t\\t\\t\\t\\t\\t\\t\\n1368 | \\t\\t\\t\\t\\t\\t
\\n1369 | \\t\\t\\t\\t\\t)}\\n1370 | \\n1371 | \\t\\t\\t\\t\\t{showCheckpointWarning && (\\n1372 | \\t\\t\\t\\t\\t\\t
\\n1373 | \\t\\t\\t\\t\\t\\t\\t\\n1374 | \\t\\t\\t\\t\\t\\t
\\n1375 | \\t\\t\\t\\t\\t)}\\n1376 | \\t\\t\\t\\t>\\n1377 | \\t\\t\\t) : (\\n1378 | \\t\\t\\t\\t
\\n1379 | \\t\\t\\t\\t\\t{/* Moved Task Bar Header Here */}\\n1380 | \\t\\t\\t\\t\\t{tasks.length !== 0 && (\\n1381 | \\t\\t\\t\\t\\t\\t
\\n1382 | \\t\\t\\t\\t\\t\\t\\t
\\n1383 | \\t\\t\\t\\t\\t\\t\\t\\t{tasks.length < 10 && (\\n1384 | \\t\\t\\t\\t\\t\\t\\t\\t\\t{t(\\\"history:recentTasks\\\")}\\n1385 | \\t\\t\\t\\t\\t\\t\\t\\t)}\\n1386 | \\t\\t\\t\\t\\t\\t\\t\\t\\n1389 | \\t\\t\\t\\t\\t\\t\\t
\\n1390 | \\t\\t\\t\\t\\t\\t
\\n1391 | \\t\\t\\t\\t\\t)}\\n1392 | \\t\\t\\t\\t\\t
0 ? \\\"mt-0\\\" : \\\"\\\"} px-3.5 min-[370px]:px-10 pt-5 transition-all duration-300`}>\\n1394 | \\t\\t\\t\\t\\t\\t
\\n1395 | \\t\\t\\t\\t\\t\\t{telemetrySetting === \\\"unset\\\" &&
}\\n1396 | \\t\\t\\t\\t\\t\\t{/* Show the task history preview if expanded and tasks exist */}\\n1397 | \\t\\t\\t\\t\\t\\t{taskHistory.length > 0 && isExpanded &&
}\\n1398 | \\t\\t\\t\\t\\t\\t
\\n1399 | \\t\\t\\t\\t\\t\\t\\t\\n1404 | \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthe docs\\n1405 | \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n1406 | \\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n1407 | \\t\\t\\t\\t\\t\\t\\t\\t}}\\n1408 | \\t\\t\\t\\t\\t\\t\\t/>\\n1409 | \\t\\t\\t\\t\\t\\t
\\n1410 | \\t\\t\\t\\t\\t\\t
\\n1411 | \\t\\t\\t\\t\\t
\\n1412 | \\t\\t\\t\\t
\\n1413 | \\t\\t\\t)}\\n1414 | \\n1415 | \\t\\t\\t{/* \\n1416 | \\t\\t\\t// Flex layout explanation:\\n1417 | \\t\\t\\t// 1. Content div above uses flex: \\\"1 1 0\\\" to:\\n1418 | \\t\\t\\t// - Grow to fill available space (flex-grow: 1) \\n1419 | \\t\\t\\t// - Shrink when AutoApproveMenu needs space (flex-shrink: 1)\\n1420 | \\t\\t\\t// - Start from zero size (flex-basis: 0) to ensure proper distribution\\n1421 | \\t\\t\\t// minHeight: 0 allows it to shrink below its content height\\n1422 | \\t\\t\\t//\\n1423 | \\t\\t\\t// 2. AutoApproveMenu uses flex: \\\"0 1 auto\\\" to:\\n1424 | \\t\\t\\t// - Not grow beyond its content (flex-grow: 0)\\n1425 | \\t\\t\\t// - Shrink when viewport is small (flex-shrink: 1) \\n1426 | \\t\\t\\t// - Use its content size as basis (flex-basis: auto)\\n1427 | \\t\\t\\t// This ensures it takes its natural height when there's space\\n1428 | \\t\\t\\t// but becomes scrollable when the viewport is too small\\n1429 | \\t\\t\\t*/}\\n1430 | \\t\\t\\t{!task && (\\n1431 | \\t\\t\\t\\t
\\n1432 | \\t\\t\\t\\t\\t
\\n1433 | \\t\\t\\t\\t
\\n1434 | \\t\\t\\t)}\\n1435 | \\n1436 | \\t\\t\\t{task && (\\n1437 | \\t\\t\\t\\t<>\\n1438 | \\t\\t\\t\\t\\t
\\n1439 | \\t\\t\\t\\t\\t\\t {\\n1448 | \\t\\t\\t\\t\\t\\t\\t\\tsetIsAtBottom(isAtBottom)\\n1449 | \\t\\t\\t\\t\\t\\t\\t\\tif (isAtBottom) {\\n1450 | \\t\\t\\t\\t\\t\\t\\t\\t\\tdisableAutoScrollRef.current = false\\n1451 | \\t\\t\\t\\t\\t\\t\\t\\t}\\n1452 | \\t\\t\\t\\t\\t\\t\\t\\tsetShowScrollToBottom(disableAutoScrollRef.current && !isAtBottom)\\n1453 | \\t\\t\\t\\t\\t\\t\\t}}\\n1454 | \\t\\t\\t\\t\\t\\t\\tatBottomThreshold={10} // anything lower causes issues with followOutput\\n1455 | \\t\\t\\t\\t\\t\\t\\tinitialTopMostItemIndex={groupedMessages.length - 1}\\n1456 | \\t\\t\\t\\t\\t\\t/>\\n1457 | \\t\\t\\t\\t\\t
\\n1458 | \\t\\t\\t\\t\\t
\\n1459 | \\t\\t\\t\\t\\t{showScrollToBottom ? (\\n1460 | \\t\\t\\t\\t\\t\\t
\\n1461 | \\t\\t\\t\\t\\t\\t\\t
{\\n1464 | \\t\\t\\t\\t\\t\\t\\t\\t\\tscrollToBottomSmooth()\\n1465 | \\t\\t\\t\\t\\t\\t\\t\\t\\tdisableAutoScrollRef.current = false\\n1466 | \\t\\t\\t\\t\\t\\t\\t\\t}}\\n1467 | \\t\\t\\t\\t\\t\\t\\t\\ttitle={t(\\\"chat:scrollToBottom\\\")}>\\n1468 | \\t\\t\\t\\t\\t\\t\\t\\t\\n1469 | \\t\\t\\t\\t\\t\\t\\t
\\n1470 | \\t\\t\\t\\t\\t\\t
\\n1471 | \\t\\t\\t\\t\\t) : (\\n1472 | \\t\\t\\t\\t\\t\\t
\\n1482 | \\t\\t\\t\\t\\t\\t\\t{primaryButtonText && !isStreaming && (\\n1483 | \\t\\t\\t\\t\\t\\t\\t\\t handlePrimaryButtonClick(inputValue, selectedImages)}>\\n1508 | \\t\\t\\t\\t\\t\\t\\t\\t\\t{primaryButtonText}\\n1509 | \\t\\t\\t\\t\\t\\t\\t\\t\\n1510 | \\t\\t\\t\\t\\t\\t\\t)}\\n1511 | \\t\\t\\t\\t\\t\\t\\t{(secondaryButtonText || isStreaming) && (\\n1512 | \\t\\t\\t\\t\\t\\t\\t\\t handleSecondaryButtonClick(inputValue, selectedImages)}>\\n1528 | \\t\\t\\t\\t\\t\\t\\t\\t\\t{isStreaming ? t(\\\"chat:cancel.title\\\") : secondaryButtonText}\\n1529 | \\t\\t\\t\\t\\t\\t\\t\\t\\n1530 | \\t\\t\\t\\t\\t\\t\\t)}\\n1531 | \\t\\t\\t\\t\\t\\t
\\n1532 | \\t\\t\\t\\t\\t)}\\n1533 | \\t\\t\\t\\t>\\n1534 | \\t\\t\\t)}\\n1535 | \\n1536 | \\t\\t\\t
handleSendMessage(inputValue, selectedImages)}\\n1546 | \\t\\t\\t\\tonSelectImages={selectImages}\\n1547 | \\t\\t\\t\\tshouldDisableImages={shouldDisableImages}\\n1548 | \\t\\t\\t\\tonHeightChange={() => {\\n1549 | \\t\\t\\t\\t\\tif (isAtBottom) {\\n1550 | \\t\\t\\t\\t\\t\\tscrollToBottomAuto()\\n1551 | \\t\\t\\t\\t\\t}\\n1552 | \\t\\t\\t\\t}}\\n1553 | \\t\\t\\t\\tmode={mode}\\n1554 | \\t\\t\\t\\tsetMode={setMode}\\n1555 | \\t\\t\\t\\tmodeShortcutText={modeShortcutText}\\n1556 | \\t\\t\\t/>\\n1557 | \\n1558 | \\t\\t\\t{isProfileDisabled && (\\n1559 | \\t\\t\\t\\t\\n1560 | \\t\\t\\t\\t\\t
\\n1561 | \\t\\t\\t\\t
\\n1562 | \\t\\t\\t)}\\n1563 | \\n1564 | \\t\\t\\t\\n1565 | \\t\\t \\n1566 | \\t)\\n1567 | }\\n1568 | \\n1569 | const ChatView = forwardRef(ChatViewComponent)\\n1570 | \\n1571 | export default ChatView\\n