Codex 本地中转 v1.10.0
Codex Provider Hub v1.10.0
本版本由已验证的功能变更说明自动生成。
2026-09-03-share-card-phone-ratio
- 类型:fix
- 发布级别:patch
- 目标:1. 导出的战报 PNG 不再带外围白边:去掉画布四周 28px 透明边距与烘焙阴影,卡片满幅导出(透明区在聊天工具白底上显示为白边,即用户所见)。
- 卡片改为手机屏比例 9:19.5(逻辑 360×780,3× 导出恰为 1080×2340,主流手机屏幕分辨率)。
- 实际改动:-
proxy_static/src/share-card.js:terminalCardTheme()改为cardWidth: 360、cardHeight: 640(9:16)、新增cornerRadius: 16、移除margin(满幅导出)。 proxy_static/src/components/ShareCardDialog.vue:画布属性 360×640;整卡圆角裁剪绘制(标题栏顶部圆角、扫描线随裁剪、restore 后圆角描边);hero 数字 56px 带超宽自适应缩号;新增"今日时段分布"小节——数据来自GET /api/usage-timeline?usage_window=today(Promise.all 并入,失败降级占位),24 个小时位渐变细条(高度∝该小时 tokens)、右上"峰值 X · HH:00"、00/06/12/18/23 刻度;页脚锚定底部。proxy_static/src/styles.css:.share-card-canvas-terminal圆角 16px、max-width 340px,与导出图一致。- 测试:
tests/share_card.test.js主题断言更新;tests/local_proxy_vue_ui.test.js画布 360×640、时段分布、today 时间线请求、无烘焙阴影断言。 proxy_static/dist/:重建(index-BAE2UGRC.js / index-DtB-Aow- 为本轮构建产物)。- 兼容性:- 纯前端视觉;导出文件名不变;dist 重建。
- 风险:- today 时间线接口偶发失败:降级为占位文案,不影响其余卡面。
- 验证结果:-
node --test tests/share_card.test.js tests/local_proxy_vue_ui.test.js→ 36/36 通过(2026-09-03 19:22)。 - 假数据 harness 浏览器截图逐项核对:满幅圆角无白边、9:16 紧凑比例、hero 大数字、输入/输出/缓存、构成条、时段分布(渐变细条+峰值 5.2M · 10:00+刻度)、页脚光标,全部正常无重叠溢出(2026-09-03 19:25)。
node --test tests/*.test.js全部通过;python -m unittest discover -s tests -p "test_*.py"→ 555 项全部通过;npm run build --prefix proxy_static构建成功(2026-09-03 19:27)。- PR:pending
2026-09-03-usage-chart-toggle-width
- 类型:fix
- 发布级别:patch
- 目标:用量趋势视图右上角"趋势/热力/累计"图表类型切换按钮在空间不足时文字被压成两行("趋/势"),视觉拥挤;加宽按钮并禁止换行。
- 实际改动:-
proxy_static/src/styles.css:.usage-chart-toggle增加flex-shrink: 0;.usage-chart-toggle-button增加min-width: 48px; white-space: nowrap,内边距 12→14px。 tests/local_proxy_vue_ui.test.js:新增 "usage trend chart toggle stays on one line" 断言。proxy_static/dist/:随本轮重建。- 兼容性:- 纯 CSS;dist 重建。
- 风险:- 极窄屏(<380px)下工具行可能溢出:按钮 nowrap 后整组约 160px,加上时间范围选择器仍在常见手机宽度内。
- 验证结果:-
node --test tests/local_proxy_vue_ui.test.js→ 26/26 通过(含新增断言)(2026-09-03 19:22)。 node --test tests/*.test.js全部通过;python -m unittest discover -s tests -p "test_*.py"→ 555 项全部通过(2026-09-03 19:27)。- PR:pending
2026-09-03-usage-trend-animated-charts
- 类型:feature
- 发布级别:minor
- 目标:按用户确认的需求重构用量趋势视图:
- 尺寸与比例修复:图表区紧凑固定高度(约 240–280px),热力图等比缩放居中、列少时不再被拉伸成竖构图巨图;整体留白收紧。
- 图型差异化:去掉同质的面积/折线/柱状三选一,换成三个不同家族的图型——时序趋势图(面积+合计线合一,动画版)、日历热力/时段矩阵、累计冲击线+大数字(G18 Draw-in + Counter 风格)。
- 动画:入场画入(quarticOut 快进快停)、热力格 stagger 依次出现、大数字滚动;悬停图表重播;指标轮播(tokens ↔ 请求数 ↔ 成功率,5 秒自动切换、悬停暂停、可手动切换);
prefers-reduced-motion自动降级为静态且不轮播。零新增依赖(rAF + CSS)。
- 实际改动:-
proxy_static/src/components/UsageTrendView.vue:图表区整体重写——- 图型改为 趋势/热力/累计 三项(
normalizeChart将旧持久化值line/bars/area映射到trend); - 趋势图按指标维度渲染(tokens=输入/输出堆叠面积+合计线;requests=请求面积+线;success=成功率线),路径改
<path>; - 热力图
finishHeatGeom:按可用宽高等比计算 cell(clamp 10–26px)、SVG 显式宽高居中不再拉伸(修复 7 天窗口竖构图巨图 bug)、格子 stagger 入场(每格 12ms、总延迟上限 600ms); - 累计冲击线:
cumulativeLinePath/cumulativeAreaPath桶累计曲线 + 右上角大数字滚动(counterDisplay); - 动画引擎:
quarticOut缓动 + rAF 画入(DRAW_MS=900,strokeDashoffset绑定)、scheduleHoverReplay(最小间隔 1.5s)、prefers-reduced-motion全降级; - 指标轮播:
CAROUSEL_MS=5000自动切换(悬停/隐藏暂停、热力图不轮播)、指标药丸可手动切换; - 30 秒自动刷新只更新数据并重播入场。
- 图型改为 趋势/热力/累计 三项(
proxy_static/src/styles.css:.usage-chart固定 260px 高并居中;.usage-heat-svg/.usage-chart-heat;usage-heat-pop关键帧与 stagger;.usage-metric-pill(.is-active);.usage-cumulative-number/label(大数字 24px Space Grotesk);@media (prefers-reduced-motion: reduce)关闭动画;清理旧 mean/bar/拉伸规则;小字号用calc(var(--font-meta) - 1px)维持全库小字号治理约束。tests/local_proxy_vue_ui.test.js:图型断言重写(三图型、METRICS、quarticOut、reduced-motion、轮播、热力 clamp、固定高度 CSS、旧图型不残留)。proxy_static/dist/:重建(index-D7SZ50xP.js / index-Cxx8pZPt.css)。- 兼容性:- 纯前端;localStorage 图表键沿用,旧值映射兼容;30 秒自动刷新改为仅更新数据不重播入场。
- 风险:1. 动画在大量桶(如 all 窗口数百天)下性能:stagger 总时长封顶、画入用单 path 一次 rAF。
- 轮播打扰读数:默认 5 秒、悬停即停、药丸常显当前指标;reduced-motion 不轮播。
- 热力列数极多(all 多年)时 cell 到下限 10px:容器内横向滚动兜底。
- 验证结果:- 组件脚本 stub 数值抽查(2026-09-03 18:29):7 天热力 96×210(紧凑不再放大)、24 小时 668×54 单行、30 天 174×210;累计曲线单调递增、路径 7 点 x 递增且终点贴右边界;指标元数据 tokens/requests/success 就绪。
node --test tests/local_proxy_vue_ui.test.js→ 25/25 通过(含重写图型断言);node --test tests/*.test.js全部通过。python -m unittest discover -s tests -p "test_*.py"→ 555 项全部通过;npm run build --prefix proxy_static构建成功(2026-09-03 18:30)。- PR:#81
2026-09-03-usage-view-padding
- 类型:fix
- 发布级别:patch
- 目标:用量趋势视图与供应商/请求等视图一致,具备左右页面边距和
surface-soft背景内容区,不再左右顶格。 - 实际改动:-
proxy_static/src/styles.css:.usage-view补齐padding: 18px 20px 20px; background: var(--surface-soft),子元素width: min(1520px, 100%); margin-inline: auto限宽居中(与.requests-view同一口径);窄屏媒体查询补.usage-view { padding: 16px 12px; }。 tests/local_proxy_vue_ui.test.js:新增 "usage trend view matches the shared page padding and content width" 样式断言。proxy_static/dist/:重建(index-BF0iKsD1.js / index-BTBZCZE2.css)。- 兼容性:- 纯 CSS 视觉修复;dist 重建。
- 风险:- 限宽 1520px 后超宽屏下图表变窄:与请求视图同一内容宽度,观感一致,属预期。
- 验证结果:-
node --test tests/local_proxy_vue_ui.test.js→ 26/26 通过(含新增断言)(2026-09-03 18:54)。 - 浏览器实测(2026-09-03 18:56):从源码启动的服务加载新构建,用量趋势视图标题/汇总卡/图表均与请求视图一致出现左右边距与浅色背景区,不再顶格。
node --test tests/*.test.js全部通过;python -m unittest discover -s tests -p "test_*.py"→ 555 项全部通过;npm run build --prefix proxy_static构建成功(2026-09-03 18:57)。- PR:#82