diff --git a/packages/cli/src/ui/components/LoadingIndicator.test.tsx b/packages/cli/src/ui/components/LoadingIndicator.test.tsx
index ba161062..9e647208 100644
--- a/packages/cli/src/ui/components/LoadingIndicator.test.tsx
+++ b/packages/cli/src/ui/components/LoadingIndicator.test.tsx
@@ -97,13 +97,25 @@ describe('', () => {
it('should display the elapsedTime correctly when Responding', () => {
const props = {
currentLoadingPhrase: 'Working...',
- elapsedTime: 8,
+ elapsedTime: 60,
};
const { lastFrame } = renderWithContext(
,
StreamingState.Responding,
);
- expect(lastFrame()).toContain('(esc to cancel, 8s)');
+ expect(lastFrame()).toContain('(esc to cancel, 1m)');
+ });
+
+ it('should display the elapsedTime correctly in human-readable format', () => {
+ const props = {
+ currentLoadingPhrase: 'Working...',
+ elapsedTime: 125,
+ };
+ const { lastFrame } = renderWithContext(
+ ,
+ StreamingState.Responding,
+ );
+ expect(lastFrame()).toContain('(esc to cancel, 2m 5s)');
});
it('should render rightContent when provided', () => {
diff --git a/packages/cli/src/ui/components/LoadingIndicator.tsx b/packages/cli/src/ui/components/LoadingIndicator.tsx
index 88a66b31..6e1bc758 100644
--- a/packages/cli/src/ui/components/LoadingIndicator.tsx
+++ b/packages/cli/src/ui/components/LoadingIndicator.tsx
@@ -11,6 +11,7 @@ import { Colors } from '../colors.js';
import { useStreamingContext } from '../contexts/StreamingContext.js';
import { StreamingState } from '../types.js';
import { GeminiRespondingSpinner } from './GeminiRespondingSpinner.js';
+import { formatDuration } from '../utils/formatters.js';
interface LoadingIndicatorProps {
currentLoadingPhrase?: string;
@@ -50,7 +51,7 @@ export const LoadingIndicator: React.FC = ({
{streamingState === StreamingState.WaitingForConfirmation
? ''
- : ` (esc to cancel, ${elapsedTime}s)`}
+ : ` (esc to cancel, ${elapsedTime < 60 ? `${elapsedTime}s` : formatDuration(elapsedTime * 1000)})`}
{/* Spacer */}
{rightContent && {rightContent}}