Migrate console to coreEvents.emitFeedback or debugLogger (#15219)

This commit is contained in:
Adib234
2025-12-29 15:46:10 -05:00
committed by GitHub
parent dcd2449b1a
commit 10ae84869a
66 changed files with 564 additions and 425 deletions
@@ -12,6 +12,7 @@ import type { LoadedSettings } from '../../config/settings.js';
import { KeypressProvider } from '../contexts/KeypressContext.js';
import { act } from 'react';
import { waitFor } from '../../test-utils/async.js';
import { debugLogger } from '@google/gemini-cli-core';
vi.mock('@google/gemini-cli-core', async (importOriginal) => {
const actual =
@@ -101,7 +102,7 @@ describe('EditorSettingsDialog', () => {
await waitFor(() => {
const frame = lastFrame() || '';
if (!frame.includes('> Apply To')) {
console.log(
debugLogger.debug(
'Waiting for scope focus. Current frame:',
JSON.stringify(frame),
);
@@ -166,7 +167,7 @@ describe('EditorSettingsDialog', () => {
const frame = lastFrame() || '';
if (!frame.includes('(Also modified')) {
console.log(
debugLogger.debug(
'Modified message test failure. Frame:',
JSON.stringify(frame),
);
@@ -24,6 +24,7 @@ import {
EDITOR_DISPLAY_NAMES,
} from '@google/gemini-cli-core';
import { useKeypress } from '../hooks/useKeypress.js';
import { coreEvents } from '@google/gemini-cli-core';
interface EditorDialogProps {
onSelect: (
@@ -68,7 +69,10 @@ export function EditorSettingsDialog({
)
: 0;
if (editorIndex === -1) {
console.error(`Editor is not supported: ${currentPreference}`);
coreEvents.emitFeedback(
'error',
`Editor is not supported: ${currentPreference}`,
);
editorIndex = 0;
}
@@ -8,6 +8,7 @@ import { vi, describe, it, expect, beforeEach } from 'vitest';
import * as processUtils from '../../utils/processUtils.js';
import { renderWithProviders } from '../../test-utils/render.js';
import { IdeTrustChangeDialog } from './IdeTrustChangeDialog.js';
import { debugLogger } from '@google/gemini-cli-core';
describe('IdeTrustChangeDialog', () => {
beforeEach(() => {
@@ -39,8 +40,8 @@ describe('IdeTrustChangeDialog', () => {
});
it('renders a generic message and logs an error for NONE reason', () => {
const consoleErrorSpy = vi
.spyOn(console, 'error')
const debugLoggerWarnSpy = vi
.spyOn(debugLogger, 'warn')
.mockImplementation(() => {});
const { lastFrame } = renderWithProviders(
<IdeTrustChangeDialog reason="NONE" />,
@@ -48,7 +49,7 @@ describe('IdeTrustChangeDialog', () => {
const frameText = lastFrame();
expect(frameText).toContain('Workspace trust has changed.');
expect(consoleErrorSpy).toHaveBeenCalledWith(
expect(debugLoggerWarnSpy).toHaveBeenCalledWith(
'IdeTrustChangeDialog rendered with unexpected reason "NONE"',
);
});
@@ -9,6 +9,7 @@ import { theme } from '../semantic-colors.js';
import { useKeypress } from '../hooks/useKeypress.js';
import { relaunchApp } from '../../utils/processUtils.js';
import { type RestartReason } from '../hooks/useIdeTrustListener.js';
import { debugLogger } from '@google/gemini-cli-core';
interface IdeTrustChangeDialogProps {
reason: RestartReason;
@@ -28,7 +29,7 @@ export const IdeTrustChangeDialog = ({ reason }: IdeTrustChangeDialogProps) => {
let message = 'Workspace trust has changed.';
if (reason === 'NONE') {
// This should not happen, but provides a fallback and a debug log.
console.error(
debugLogger.warn(
'IdeTrustChangeDialog rendered with unexpected reason "NONE"',
);
} else if (reason === 'CONNECTION_CHANGE') {
@@ -15,7 +15,7 @@ import {
calculateTransformedLine,
} from './shared/text-buffer.js';
import type { Config } from '@google/gemini-cli-core';
import { ApprovalMode } from '@google/gemini-cli-core';
import { ApprovalMode, debugLogger } from '@google/gemini-cli-core';
import * as path from 'node:path';
import type { CommandContext, SlashCommand } from '../commands/types.js';
import { CommandKind } from '../commands/types.js';
@@ -577,8 +577,8 @@ describe('InputPrompt', () => {
});
it('should handle errors during clipboard operations', async () => {
const consoleErrorSpy = vi
.spyOn(console, 'error')
const debugLoggerErrorSpy = vi
.spyOn(debugLogger, 'error')
.mockImplementation(() => {});
vi.mocked(clipboardUtils.clipboardHasImage).mockRejectedValue(
new Error('Clipboard error'),
@@ -592,14 +592,14 @@ describe('InputPrompt', () => {
stdin.write('\x16'); // Ctrl+V
});
await waitFor(() => {
expect(consoleErrorSpy).toHaveBeenCalledWith(
expect(debugLoggerErrorSpy).toHaveBeenCalledWith(
'Error handling clipboard image:',
expect.any(Error),
);
});
expect(mockBuffer.setText).not.toHaveBeenCalled();
consoleErrorSpy.mockRestore();
debugLoggerErrorSpy.mockRestore();
unmount();
});
});
@@ -24,7 +24,7 @@ import { useKeypress } from '../hooks/useKeypress.js';
import { keyMatchers, Command } from '../keyMatchers.js';
import type { CommandContext, SlashCommand } from '../commands/types.js';
import type { Config } from '@google/gemini-cli-core';
import { ApprovalMode } from '@google/gemini-cli-core';
import { ApprovalMode, debugLogger } from '@google/gemini-cli-core';
import {
parseInputForHighlighting,
parseSegmentsFromTokens,
@@ -354,7 +354,7 @@ export const InputPrompt: React.FC<InputPromptProps> = ({
const offset = buffer.getOffset();
buffer.replaceRangeByOffset(offset, offset, textToInsert);
} catch (error) {
console.error('Error handling clipboard image:', error);
debugLogger.error('Error handling clipboard image:', error);
}
}, [buffer, config]);
@@ -12,7 +12,7 @@ import { theme } from '../semantic-colors.js';
import { StreamingState } from '../types.js';
import { UpdateNotification } from './UpdateNotification.js';
import { GEMINI_DIR, Storage } from '@google/gemini-cli-core';
import { GEMINI_DIR, Storage, debugLogger } from '@google/gemini-cli-core';
import * as fs from 'node:fs/promises';
import os from 'node:os';
@@ -66,7 +66,7 @@ export const Notifications = () => {
});
await fs.writeFile(screenReaderNudgeFilePath, 'true');
} catch (error) {
console.error('Error storing screen reader nudge', error);
debugLogger.error('Error storing screen reader nudge', error);
}
}
};
@@ -42,7 +42,7 @@ import {
type SettingsValue,
TOGGLE_TYPES,
} from '../../config/settingsSchema.js';
import { debugLogger } from '@google/gemini-cli-core';
import { coreEvents, debugLogger } from '@google/gemini-cli-core';
import { keyMatchers, Command } from '../keyMatchers.js';
import type { Config } from '@google/gemini-cli-core';
import { useUIState } from '../contexts/UIStateContext.js';
@@ -254,7 +254,11 @@ export function SettingsDialog({
if (key === 'general.vimMode' && newValue !== vimEnabled) {
// Call toggleVimEnabled to sync the VimModeContext local state
toggleVimEnabled().catch((error) => {
console.error('Failed to toggle vim mode:', error);
coreEvents.emitFeedback(
'error',
'Failed to toggle vim mode:',
error,
);
});
}
@@ -10,6 +10,7 @@ import stringWidth from 'string-width';
import { theme } from '../../semantic-colors.js';
import { toCodePoints } from '../../utils/textUtils.js';
import { useOverflowActions } from '../../contexts/OverflowContext.js';
import { debugLogger } from '@google/gemini-cli-core';
let enableDebugLog = false;
@@ -28,7 +29,7 @@ function debugReportError(message: string, element: React.ReactNode) {
if (!enableDebugLog) return;
if (!React.isValidElement(element)) {
console.error(
debugLogger.warn(
message,
`Invalid element: '${String(element)}' typeof=${typeof element}`,
);
@@ -44,10 +45,13 @@ function debugReportError(message: string, element: React.ReactNode) {
const lineNumber = elementWithSource._source?.lineNumber;
sourceMessage = fileName ? `${fileName}:${lineNumber}` : '<Unknown file>';
} catch (error) {
console.error('Error while trying to get file name:', error);
debugLogger.warn('Error while trying to get file name:', error);
}
console.error(message, `${String(element.type)}. Source: ${sourceMessage}`);
debugLogger.warn(
message,
`${String(element.type)}. Source: ${sourceMessage}`,
);
}
interface MaxSizedBoxProps {
children?: React.ReactNode;
@@ -10,7 +10,12 @@ import os from 'node:os';
import pathMod from 'node:path';
import * as path from 'node:path';
import { useState, useCallback, useEffect, useMemo, useReducer } from 'react';
import { coreEvents, CoreEvent, unescapePath } from '@google/gemini-cli-core';
import {
coreEvents,
CoreEvent,
debugLogger,
unescapePath,
} from '@google/gemini-cli-core';
import {
toCodePoints,
cpLen,
@@ -1411,7 +1416,7 @@ function textBufferReducerLogic(
break;
default: {
const exhaustiveCheck: never = dir;
console.error(
debugLogger.error(
`Unknown visual movement direction: ${exhaustiveCheck}`,
);
return state;
@@ -1751,7 +1756,7 @@ function textBufferReducerLogic(
default: {
const exhaustiveCheck: never = action;
console.error(`Unknown action encountered: ${exhaustiveCheck}`);
debugLogger.error(`Unknown action encountered: ${exhaustiveCheck}`);
return state;
}
}
@@ -2173,7 +2178,11 @@ export function useTextBuffer({
newText = newText.replace(/\r\n?/g, '\n');
dispatch({ type: 'set_text', payload: newText, pushToUndo: false });
} catch (err) {
console.error('[useTextBuffer] external editor error', err);
coreEvents.emitFeedback(
'error',
'[useTextBuffer] external editor error',
err,
);
} finally {
coreEvents.emit(CoreEvent.ExternalEditorClosed);
if (wasRaw) setRawMode?.(true);