Skip to content

修复每日 Token 跨日统计、主题及新版顶栏兼容问题 - #77

Closed
kts-kris wants to merge 5 commits into
BigPizzaV3:mainfrom
kts-kris:fix/daily-token-usage-issues-35-37-62
Closed

修复每日 Token 跨日统计、主题及新版顶栏兼容问题#77
kts-kris wants to merge 5 commits into
BigPizzaV3:mainfrom
kts-kris:fix/daily-token-usage-issues-35-37-62

Conversation

@kts-kris

@kts-kris kts-kris commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

背景

该 PR 替代存在冲突的 #61,并在原有修复基础上吸收、扩展 #82 提出的新版顶栏兼容方案。

本次处理 #35#37,并回归已关闭的 #62,重点解决以下用户问题:

  • 首次打开或重启后,今日 Token 只显示脚本加载后的局部用量;
  • 长时间复用的旧任务无法正确计入当天;
  • 历史回填与实时采集可能重复相加;
  • 深色模式、价格设置滚动和输入焦点体验异常;
  • Codex/Codex++ 顶栏结构变化后,统计入口漂移、重叠或错误变成 compact icon。

处理内容与用户价值

1. 独立补齐最近 5 日历史用量

  • 适配新版 Codex renderer RPC,通过 localThreadCatalog 获取任务,通过 workspaceFiles.read 读取本机 session JSONL;
  • 保留旧 app-server dispatcher 作为兼容回退;
  • 未安装或无法使用 Codex Token Usage 时,仍可独立完成统计;
  • 本地仅滚动保留最近 5 日数据。

用户价值: 重启 Codex、首次打开插件或切换历史任务后,不再只看到当前页面产生的局部用量,也不强制安装另一个统计插件。

2. 修复跨日累计和重复计数

  • 按每条 token_count 的真实时间归档,不再依赖 JSONL 文件创建日期;
  • 对相邻 total_token_usage 做差分,累计值重置时回退到 last_token_usage
  • 按日期和 Model 聚合输入、输出、缓存输入、推理 Token 与请求次数;
  • 只有全部候选 session 成功读取后才推进历史覆盖边界,并清理已被历史数据覆盖的旧实时记录。

用户价值: 避免累计值直接相加造成虚高,也避免长期复用任务产生漏算。

3. 修复主题、输入和价格面板

  • 增加 Codex 实际使用的 html.electron-dark 样式;
  • 日期和价格输入在刷新期间保持编辑状态;
  • 价格设置展开后,详情面板受视口约束并可纵向滚动;
  • 更新默认 OpenAI Model 价格参考项,用户自定义字段仍优先。

用户价值: 深色模式下可读,编辑不丢焦点,Model 较多时仍能滚动看到底部内容。

4. 吸收并扩展 #82 的新版顶栏兼容

  • 优先识别 ApplicationMenuTopBar,并支持 menubar 和旧 .app-header-tint
  • 针对当前 Codex++ 1.2.52 实际 DOM,增加“顶部、全宽、可拖拽”的 header.draggable 几何回退,并优先选择 fixed 顶栏;
  • 删除无约束的通用 header 回退,避免把会话内容区的窄标题栏误认为应用顶栏;
  • 无工具栏锚点时,默认右侧安全距离从 280px 调整为原生窗口控制区的 132px
  • 后出现的原生按钮继续通过动态障碍检测触发左移,空间不足时才切换 compact icon。

用户价值: 新建会话、加载旧会话、窗口缩放或原生按钮后出现时,统计入口都保持在真正的窗口顶栏,不遮挡按钮,也不会在空间充足时错误缩成 icon。

5. 大会话性能回归

保留 day cache、版本签名、时间索引匹配和 MutationObserver 工具扫描 debounce。

226 个 turn、314 条工具事件的回归场景未发现性能退化。

版本与清单

  • 脚本版本:1.4.18
  • index.json 版本与脚本一致;
  • SHA-256:51cfffe284ae331e4aeb5c60b2d5fe5547cb2b16c8dd90b9e2b67a7ad92d2807

自动化验证

node --check scripts/codex-daily-token-usage.js
node tests/codex-daily-token-usage.test.js
node --test tests/*.test.js
CODEX_DAILY_TOKEN_USAGE_SCRIPT=... node ../test-codex-daily-token-usage.js
git diff --check

验证结果:

  • 仓库完整测试 12/12 通过;
  • 外层历史统计与布局测试通过;
  • 覆盖新版顶栏、menubar、旧顶栏、当前 fixed draggable 顶栏和会话窄 header 排除;
  • 覆盖动态障碍左移、空间充足时保持完整形态;
  • 增加脚本版本、index.json 版本和 SHA-256 一致性检查。

真实环境验证

环境:Codex++ 1.2.52,Codex Desktop 26.818.41509

  • 当前 renderer 中不存在 ApplicationMenuTopBar.app-header-tintmenubar,脚本正确选择顶部全宽 fixed draggable header;
  • 根节点父级为 BODY,定位为 fixed
  • 入口与现有顶栏按钮重叠数为 0
  • 动态插入占用入口位置的按钮后,入口从 left=1384 自动左移到 left=1263
  • 左移后保持完整形态,没有错误进入 compact;
  • 按钮移除后入口恢复原位;
  • 热加载前后今日 Token 总量均为 4,374,092,未发生数据丢失或重复累计。

Closes #35
Closes #37

#62 已关闭,本 PR 仅做回归验证。

Related to #82

@Rat0323

Rat0323 commented Aug 23, 2026

Copy link
Copy Markdown

我针对新版 Codex++ 顶栏迁移仍存在的两处兼容点提交了配套 PR #82https://github.com/BigPizzaV3/CodexPlusPlusScriptMarket/pull/82。当前 #77 head 仍使用旧的 .app-header-tint / 通用 header 回退,并保留 280px 默认右侧预留;#82 只修改这部分定位逻辑、清单哈希和回归测试,完整仓库测试 15/15 通过。若 #77 先合并,请将 #82 的定位修复同步到后续版本。

@kts-kris kts-kris changed the title 修复每日 Token 跨日统计、主题与布局兼容问题 修复每日 Token 跨日统计、主题及新版顶栏兼容问题 Aug 24, 2026
@kts-kris

Copy link
Copy Markdown
Contributor Author

感谢 @Rat0323 提供 #82 和完整复现信息。相关修复已在提交 665b4e7 中吸收到本 PR,并基于真实 renderer 做了进一步兼容:

  • 支持 ApplicationMenuTopBarmenubar 和旧 .app-header-tint
  • 删除无约束的通用 header 回退;
  • 默认右侧安全距离改为 132px
  • 针对当前 Codex++ 1.2.52 中上述三个选择器均不存在的实际 DOM,增加顶部全宽 header.draggable 回退,并优先选择 fixed 顶栏,避免误选会话内容区的窄 header。

验证结果:仓库测试 12/12 通过,外层专项测试通过。真实 Codex renderer 中,入口与现有顶栏按钮重叠数为 0;动态插入占位按钮后入口自动左移、保持非 compact,按钮移除后恢复原位;热加载前后今日 Token 总量保持一致。

PR 版本已更新为 1.4.18,说明、市场清单版本和 SHA-256 已同步。

@BigPizzaV3

Copy link
Copy Markdown
Owner

当前与 main 存在冲突,请先 rebase/解决冲突后重新提交。

@kts-kris

Copy link
Copy Markdown
Contributor Author

已按维护者意见处理:没有在旧冲突分支上继续合并,而是从最新 main90e8415)重建干净分支,定点移植 1.4.18 脚本和测试,并且只更新 index.json 中本插件条目。新分支仅领先 main 1 个提交,merge-tree 检查无冲突,仓库测试 12/12 与外层专项测试均通过。新的 PR:#84

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: codex-daily-token-usage script causes UI layout corruption Codex Daily Token Usage 暗黑模式、输入框和趋势悬浮显示异常

3 participants