为了优化小屏幕和窄终端下的用户体验,Footer组件现在支持响应式显示,会根据终端宽度自动调整显示内容的详细程度。
解决窄屏幕下Footer信息过载的问题,在保留关键信息的同时,简化次要信息的显示。
示例:
v1.0.161(22.19.0) | (92% context left) | Model: Claude-Sonnet-4.5
显示内容:
- ✅ 完整版本号 + Node.js版本
- ✅ 完整上下文百分比文本
- ✅ 完整模型名称(带"Model:"标签)
示例:
v1.0.161 | 92% | Sonnet-4.5
显示内容:
- ✅ 版本号(不含Node.js版本)
- ✅ 上下文百分比(仅数字)
- ✅ 简化的模型名称(移除供应商前缀)
优化措施:
- ❌ 移除Node.js版本号(次要信息)
- ❌ 移除"context left"文本
- ❌ 移除"Model:"标签
- ✂️ 缩短模型名称
packages/cli/src/ui/
├── components/
│ └── Footer.tsx # Footer组件(已更新)
└── utils/
├── footerUtils.ts # 工具函数
└── footerUtils.test.ts # 单元测试
根据终端宽度返回显示配置:
interface FooterDisplayConfig {
showNodeVersion: boolean; // 是否显示Node版本
simplifyContext: boolean; // 是否简化上下文显示
simplifyModel: boolean; // 是否简化模型名称
level: 'full' | 'compact'; // 显示级别
}智能缩短版本号显示:
includeNodeVersion=true:v1.0.161(22.19.0)includeNodeVersion=false:v1.0.161
智能缩短模型名称:
simplified=false:Claude-3.5-Sonnetsimplified=true:Sonnet
支持的模型供应商:
- Claude:
Claude-3.5-Sonnet→Sonnet - Gemini:
Gemini-2.0-Flash→Flash - GPT:
GPT-4→4 - OpenAI:
OpenAI-GPT4→GPT4
格式化上下文显示:
simplified=false:(92% context left)simplified=true:92%
import { getFooterDisplayConfig, getShortVersion, getShortModelName, getContextDisplay } from '../utils/footerUtils.js';
export const Footer: React.FC<FooterProps> = ({
version,
model,
promptTokenCount,
terminalWidth = 80,
...props
}) => {
// 获取显示配置
const displayConfig = getFooterDisplayConfig(terminalWidth);
// 计算显示内容
const versionDisplay = version ? getShortVersion(version, displayConfig.showNodeVersion) : null;
const contextPercentage = ((1 - percentage) * 100).toFixed(0);
const contextDisplay = getContextDisplay(parseInt(contextPercentage), displayConfig.simplifyContext);
const modelShortDisplay = getShortModelName(modelDisplay, displayConfig.simplifyModel);
return (
<Box>
<Text>{versionDisplay}</Text>
<Text>{contextDisplay}</Text>
<Text>{modelShortDisplay}</Text>
</Box>
);
};运行单元测试:
npm test -- footerUtils.test.ts测试覆盖:
- ✅ 版本号缩短逻辑
- ✅ 模型名称简化(多种供应商)
- ✅ 上下文显示格式化
- ✅ 显示配置生成
- ✅ 集成测试(完整显示流程)
┌────────────────────────────────────────────────────────────────────┐
│ v1.0.161(22.19.0) | (92% context left) | Model: Claude-Sonnet-4.5 │
└────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ v1.0.161 | 92% | Sonnet-4.5 │
└──────────────────────────────────────────────┘
| 终端宽度 | 显示级别 | Node版本 | 上下文文本 | 模型前缀 |
|---|---|---|---|---|
| ≥80列 | 完整 | ✅ | ✅ | ✅ |
| 60-79列 | 简化 | ❌ | ❌ | ❌ |
此优化与现有的小窗口优化系统完美整合:
- useSmallWindowOptimization: 控制整体UI简化
- Footer响应式: 专门优化Footer信息密度
两者可以协同工作,在极小窗口下提供最佳体验。
- 动态阈值: 根据实际内容长度动态调整阈值
- 用户配置: 允许用户自定义显示级别
- 更多信息: 在极窄屏幕下支持信息轮播
- 国际化: 支持不同语言下的智能缩写
更新日期: 2025-09-30 版本: 1.0.0