From c77a22d4c6b3a8bb4d4bbdb636774b2aa2c2da3b Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Wed, 30 Jul 2025 17:43:11 -0700 Subject: [PATCH] Add render counter in debug mode (#5242) Co-authored-by: Jacob Richman --- .../cli/src/ui/components/DebugProfiler.tsx | 32 +++++++++++++++++++ packages/cli/src/ui/components/Footer.tsx | 3 ++ 2 files changed, 35 insertions(+) create mode 100644 packages/cli/src/ui/components/DebugProfiler.tsx diff --git a/packages/cli/src/ui/components/DebugProfiler.tsx b/packages/cli/src/ui/components/DebugProfiler.tsx new file mode 100644 index 00000000..89c40a91 --- /dev/null +++ b/packages/cli/src/ui/components/DebugProfiler.tsx @@ -0,0 +1,32 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { Text, useInput } from 'ink'; +import { useEffect, useRef, useState } from 'react'; +import { Colors } from '../colors.js'; + +export const DebugProfiler = () => { + const numRenders = useRef(0); + const [showNumRenders, setShowNumRenders] = useState(false); + + useEffect(() => { + numRenders.current++; + }); + + useInput((input, key) => { + if (key.ctrl && input === 'b') { + setShowNumRenders((prev) => !prev); + } + }); + + if (!showNumRenders) { + return null; + } + + return ( + Renders: {numRenders.current} + ); +}; diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx index af3d8437..acc55870 100644 --- a/packages/cli/src/ui/components/Footer.tsx +++ b/packages/cli/src/ui/components/Footer.tsx @@ -13,6 +13,8 @@ import process from 'node:process'; import Gradient from 'ink-gradient'; import { MemoryUsageDisplay } from './MemoryUsageDisplay.js'; +import { DebugProfiler } from './DebugProfiler.js'; + interface FooterProps { model: string; targetDir: string; @@ -48,6 +50,7 @@ export const Footer: React.FC = ({ return ( + {debugMode && } {vimMode && [{vimMode}] } {nightly ? (