diff --git a/packages/cli/src/ui/components/SessionSummaryDisplay.tsx b/packages/cli/src/ui/components/SessionSummaryDisplay.tsx index d4a0a11d6e7..6975f757aa4 100644 --- a/packages/cli/src/ui/components/SessionSummaryDisplay.tsx +++ b/packages/cli/src/ui/components/SessionSummaryDisplay.tsx @@ -14,5 +14,9 @@ interface SessionSummaryDisplayProps { export const SessionSummaryDisplay: React.FC = ({ duration, }) => ( - + ); diff --git a/packages/cli/src/ui/components/StatsDisplay.tsx b/packages/cli/src/ui/components/StatsDisplay.tsx index f901b6f9d22..3b425124241 100644 --- a/packages/cli/src/ui/components/StatsDisplay.tsx +++ b/packages/cli/src/ui/components/StatsDisplay.tsx @@ -178,7 +178,7 @@ const ModelUsageTable: React.FC<{ : `Model Usage`; return ( - + {/* Header */} @@ -379,6 +379,7 @@ interface StatsDisplayProps { duration: string; title?: string; quotas?: RetrieveUserQuotaResponse; + footer?: string; selectedAuthType?: string; userEmail?: string; tier?: string; @@ -390,6 +391,7 @@ export const StatsDisplay: React.FC = ({ duration, title, quotas, + footer, selectedAuthType, userEmail, tier, @@ -433,6 +435,13 @@ export const StatsDisplay: React.FC = ({ ); }; + const renderFooter = () => { + if (!footer) { + return null; + } + return {footer}; + }; + return ( = ({ pooledLimit={pooledLimit} pooledResetTime={pooledResetTime} /> + {renderFooter()} ); }; diff --git a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap index acaa85ea142..63c7507e5aa 100644 --- a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap @@ -17,12 +17,13 @@ exports[` > renders the summary display with a title 1` │ » API Time: 50.2s (100.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Input Tokens Cache Reads Output Tokens │ │ ──────────────────────────────────────────────────────────────────────────── │ │ gemini-2.5-pro 10 500 500 2,000 │ │ │ │ Savings Highlight: 500 (50.0%) of input tokens were served from the cache, reducing costs. │ +│ │ +│ Tip: Resume a previous session using gemini --resume or /resume │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; diff --git a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap index aa6c52b2a49..3cd067db6f7 100644 --- a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap @@ -112,11 +112,11 @@ exports[` > Conditional Rendering Tests > hides Efficiency secti │ » API Time: 100ms (100.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Input Tokens Cache Reads Output Tokens │ │ ──────────────────────────────────────────────────────────────────────────── │ │ gemini-2.5-pro 1 100 0 100 │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; @@ -155,7 +155,6 @@ exports[` > Quota Display > renders pooled quota information for │ » API Time: 0s (0.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ auto Usage │ │ 65% usage remaining │ │ Usage limit: 1,100 │ @@ -166,6 +165,7 @@ exports[` > Quota Display > renders pooled quota information for │ ──────────────────────────────────────────────────────────── │ │ gemini-2.5-pro - │ │ gemini-2.5-flash - │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; @@ -185,11 +185,11 @@ exports[` > Quota Display > renders quota information for unused │ » API Time: 0s (0.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Usage remaining │ │ ──────────────────────────────────────────────────────────── │ │ gemini-2.5-flash - 50.0% resets in 2h │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; @@ -209,11 +209,11 @@ exports[` > Quota Display > renders quota information when quota │ » API Time: 100ms (100.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Usage remaining │ │ ──────────────────────────────────────────────────────────── │ │ gemini-2.5-pro 1 75.0% resets in 1h 30m │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; @@ -271,7 +271,6 @@ exports[` > renders a table with two models correctly 1`] = ` │ » API Time: 19.5s (100.0%) │ │ » Tool Time: 0s (0.0%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Input Tokens Cache Reads Output Tokens │ │ ──────────────────────────────────────────────────────────────────────────── │ @@ -279,6 +278,7 @@ exports[` > renders a table with two models correctly 1`] = ` │ gemini-2.5-flash 5 15,000 10,000 15,000 │ │ │ │ Savings Highlight: 10,500 (40.4%) of input tokens were served from the cache, reducing costs. │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; @@ -299,13 +299,13 @@ exports[` > renders all sections when all data is present 1`] = │ » API Time: 100ms (44.8%) │ │ » Tool Time: 123ms (55.2%) │ │ │ -│ │ │ Model Usage │ │ Model Reqs Input Tokens Cache Reads Output Tokens │ │ ──────────────────────────────────────────────────────────────────────────── │ │ gemini-2.5-pro 1 50 50 100 │ │ │ │ Savings Highlight: 50 (50.0%) of input tokens were served from the cache, reducing costs. │ +│ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `;