summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor Mullen <[email protected]>2025-05-16 22:26:03 -0700
committerN. Taylor Mullen <[email protected]>2025-05-16 22:29:12 -0700
commite486d84d6a627ce2563ac2313d55c46a663d4bc0 (patch)
tree51292d72486b16caeb2ebab24c731c9755b293da
parente0b88dc8da3667bf4ba172a334a176d08fb0129d (diff)
feat: Patch console.debug and display only in debug mode
- Patches `console.debug` in `ConsolePatcher.tsx` to capture debug messages. - Updates `ConsoleOutput` to only display debug messages when `debugMode` is enabled. - Passes `debugMode` prop from `App.tsx` to `ConsoleOutput`. Fixes https://github.com/google-gemini/gemini-cli/issues/397
-rw-r--r--packages/cli/src/ui/App.tsx2
-rw-r--r--packages/cli/src/ui/components/ConsolePatcher.tsx24
2 files changed, 22 insertions, 4 deletions
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index e607955a..70ece34f 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -409,7 +409,7 @@ export const App = ({
cliVersion={cliVersion}
geminiMdFileCount={geminiMdFileCount}
/>
- <ConsoleOutput />
+ <ConsoleOutput debugMode={config.getDebugMode()} />
</Box>
</Box>
);
diff --git a/packages/cli/src/ui/components/ConsolePatcher.tsx b/packages/cli/src/ui/components/ConsolePatcher.tsx
index 7070fbe4..366aef43 100644
--- a/packages/cli/src/ui/components/ConsolePatcher.tsx
+++ b/packages/cli/src/ui/components/ConsolePatcher.tsx
@@ -10,7 +10,7 @@ import util from 'util';
interface ConsoleMessage {
id: Key;
- type: 'log' | 'warn' | 'error';
+ type: 'log' | 'warn' | 'error' | 'debug';
content: string;
}
@@ -18,16 +18,24 @@ interface ConsoleMessage {
// This ensures IDs are unique across messages.
let messageIdCounter = 0;
-export const ConsoleOutput: React.FC = () => {
+interface ConsoleOutputProps {
+ debugMode: boolean;
+}
+
+export const ConsoleOutput: React.FC<ConsoleOutputProps> = ({ debugMode }) => {
const [messages, setMessages] = useState<ConsoleMessage[]>([]);
useEffect(() => {
const originalConsoleLog = console.log;
const originalConsoleWarn = console.warn;
const originalConsoleError = console.error;
+ const originalConsoleDebug = console.debug;
const formatArgs = (args: unknown[]): string => util.format(...args);
- const addMessage = (type: 'log' | 'warn' | 'error', args: unknown[]) => {
+ const addMessage = (
+ type: 'log' | 'warn' | 'error' | 'debug',
+ args: unknown[],
+ ) => {
setMessages((prevMessages) => [
...prevMessages,
{
@@ -42,17 +50,23 @@ export const ConsoleOutput: React.FC = () => {
console.log = (...args: unknown[]) => addMessage('log', args);
console.warn = (...args: unknown[]) => addMessage('warn', args);
console.error = (...args: unknown[]) => addMessage('error', args);
+ console.debug = (...args: unknown[]) => addMessage('debug', args);
return () => {
console.log = originalConsoleLog;
console.warn = originalConsoleWarn;
console.error = originalConsoleError;
+ console.debug = originalConsoleDebug;
};
}, []);
return (
<Box flexDirection="column">
{messages.map((msg) => {
+ if (msg.type === 'debug' && !debugMode) {
+ return null;
+ }
+
const textProps: { color?: string } = {};
let prefix = '';
@@ -65,6 +79,10 @@ export const ConsoleOutput: React.FC = () => {
textProps.color = 'red';
prefix = 'ERROR: ';
break;
+ case 'debug':
+ textProps.color = 'gray';
+ prefix = 'DEBUG: ';
+ break;
case 'log':
default:
prefix = 'LOG: ';