Skip to content

feat(accounts): 记录并展示账号最后切换时间(语义与时区修正) - #2403

Open
qxo wants to merge 4 commits into
jlcodes99:mainfrom
qxo:feat-switch-time
Open

qxo wants to merge 4 commits into
jlcodes99:mainfrom
qxo:feat-switch-time

Conversation

@qxo

@qxo qxo commented Sep 12, 2026

Copy link
Copy Markdown

目标

让账号卡片上的时间真正表示“上次切换到该账号的时间”,并修复时间显示的时区偏移。

背景与意图

上游的时间展示有两处失真:

  1. 语义失真last_used 在导入/更新(apply_payload)和配额刷新时都会被写成当前时间——卡片上显示的其实是“最近刷新/导入时间”,不是切号时间。
  2. 时区失真:部分 WebView 的 ICU 时区库解析 IANA 名称失败会静默回退 UTC,时间偏移 N 小时。

本分支逐一修正:last_used 只在真实切号动作时记录;时区由 Rust 侧读取 OS 真实偏移。

实现要点

  • 切号才记录:各平台账号模块新增 touch_last_used(),在 inject_*_account(切号)命令中调用;删除导入/刷新路径上的 last_used 误写(cursor、grok、trae 等)。qoder 扫描合并时保留已有真实切号时间,仅全新导入回退为当前时间
  • 时区修正:新增 get_local_timezone 命令(chrono::Local 读 OS 偏移),localTimeZone.ts 启动时缓存,格式化按 UTC + offset 渲染,绕开 WebView 时区库
  • 统一展示:新组件 AccountLastUsed 渲染各账号卡片时间区,下拉可在“切换时间 / 刷新时间”间切换;两者皆无时回退“从未切换”(CodeBuddy 系有刷新时间,其它平台该项禁用)
  • 设置持久化:新 useUiConfigStore(localStorage),全局默认模式在设置页“时间显示”中选择;单卡片临时覆盖不持久化,切回全局模式自动清除

用户可见

  • 账号卡片时间区:默认显示切换时间,可按卡片临时切换为刷新时间
  • 设置 → 通用:新增“时间显示”项(切换时间 / 刷新时间),全局默认生效
  • 时间不再无故跳变(刷新配额不再被误认为“切换”),且时区偏移修复

规模

4 提交 · 48 文件 · +478/−47,覆盖 10 个平台账号模块与对应账号页;locale 中英新增文案,无既有 key 改写。

qxo added 4 commits September 12, 2026 02:13
- 在所有平台的账号切换命令中调用 touch_last_used
- 新增 AccountLastUsed 组件,替换卡片和表格中的创建时间展示
- 切换成功后刷新账号列表以更新最后使用时间
- 补充中英文文案
- 仅在真正切换账号时更新 last_used,移除登录/刷新时的误写
- 新增 get_local_timezone 命令,绕开 WebView 时区回退 UTC 问题
- 未切换过的账号显示为“—”,并将文案从“最后切换”改为“切换时间
将「显示切换时间/刷新时间」两个开关改为单一时间显示模式,账号卡片和列表的时间区域支持下拉切换切换时间与刷新时间,并新增单卡片临时覆盖能力。
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.

1 participant