diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7172ecc..2563846 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -386,8 +386,13 @@ function App() { const [isAppearanceModalOpen, setIsAppearanceModalOpen] = useState(false); - // Log Panel - const [logPanelHeight, setLogPanelHeight] = useState(200); + // Log Panel: 最小高度按“工具栏 + 1 条日志行(微增)”限制 + const LOG_PANEL_TOOLBAR_HEIGHT = 32; + const LOG_PANEL_SINGLE_ROW_HEIGHT = 39; + const LOG_PANEL_MIN_VISIBLE_ROWS = 1; + const LOG_PANEL_MIN_HEIGHT = LOG_PANEL_TOOLBAR_HEIGHT + (LOG_PANEL_SINGLE_ROW_HEIGHT * LOG_PANEL_MIN_VISIBLE_ROWS); + const LOG_PANEL_MAX_HEIGHT = 800; + const [logPanelHeight, setLogPanelHeight] = useState(Math.max(200, LOG_PANEL_MIN_HEIGHT)); const [isLogPanelOpen, setIsLogPanelOpen] = useState(false); const logResizeRef = React.useRef<{ startY: number, startHeight: number } | null>(null); const logGhostRef = React.useRef(null); @@ -416,7 +421,10 @@ function App() { const handleLogResizeUp = (e: MouseEvent) => { if (logResizeRef.current) { const delta = logResizeRef.current.startY - e.clientY; - const newHeight = Math.max(100, Math.min(800, logResizeRef.current.startHeight + delta)); + const newHeight = Math.max( + LOG_PANEL_MIN_HEIGHT, + Math.min(LOG_PANEL_MAX_HEIGHT, logResizeRef.current.startHeight + delta) + ); setLogPanelHeight(newHeight); } diff --git a/frontend/src/components/LogPanel.tsx b/frontend/src/components/LogPanel.tsx index 2a11295..c67ccf8 100644 --- a/frontend/src/components/LogPanel.tsx +++ b/frontend/src/components/LogPanel.tsx @@ -29,6 +29,8 @@ const LogPanel: React.FC = ({ height, onClose, onResizeStart }) = }; const bgMain = getBg('#1f1f1f'); const bgToolbar = getBg('#2a2a2a'); + const logScrollbarThumb = darkMode ? 'rgba(255, 255, 255, 0.34)' : 'rgba(0, 0, 0, 0.26)'; + const logScrollbarThumbHover = darkMode ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.36)'; const columns = [ { @@ -113,8 +115,9 @@ const LogPanel: React.FC = ({ height, onClose, onResizeStart }) = {/* List */} -
+
= ({ height, onClose, onResizeStart }) = // scroll={{ y: height - 32 }} // Let flex handle it /> + ); };