Skip to content

feat(sessions): 检查并隐藏失效本机会话 - #2515

Open
nk33-dev wants to merge 2 commits into
BigPizzaV3:mainfrom
nk33-dev:codex/session-health
Open

nk33-dev wants to merge 2 commits into
BigPizzaV3:mainfrom
nk33-dev:codex/session-health

Conversation

@nk33-dev

Copy link
Copy Markdown

问题

本机会话记录和侧栏索引仍存在、但 rollout 与恢复来源均已丢失时,列表继续显示无法打开的会话。直接删除有误删风险,尤其是远端会话、刚创建尚未落盘的会话和可以从归档或备份恢复的会话。

改动

  • Codex++ 设置页增加“检查并隐藏”和“显示全部”,只改变显示设置,不删除数据库、索引或正文。
  • 后端只读检查数据库、rollout、归档和撤销备份,找出缺少恢复来源的候选。
  • 候选还须由明确本机的 thread/read 确认不存在;隐藏前再次复核恢复来源,检查期间恢复的会话继续显示。
  • 远端、未知主机、新建会话、读取超时、权限错误和接口不支持均保留显示。
  • 隐藏 ID 在本地显示设置中保存;重启先显示,页面可见且复核周期到期时仅复核已隐藏 ID。关闭增强或点击“显示全部”恢复显示;异步旧结果不能覆盖用户的恢复操作。
  • 沿用设置页样式、现有扫描与 RPC 发现入口,注入样式升级保持重载幂等。新 helper 路由不加入第三方扩展白名单。

此 PR 不提供永久删除、备份恢复或自动清空会话,也不保证清除所有侧栏残留。原生接口或数据来源无法完整确认时保留会话。

验证

基于上游 45f1c151,Windows 隔离 worktree:

  • cargo test -p codex-plus-data --test session_health -p codex-plus-launcher --lib --locked --offline:Data lib 152 passed / 2 项既有 ignored;健康检查 11 passed;Launcher lib 32 passed。
  • cargo test -p codex-plus-core --test bridge_routes --locked --offline:36 passed。
  • npm test:561 passed,1 项既有 skipped。
  • cargo check --workspace --locked --offline、npm run check、npm run vite:build、renderer 组装一致性及 git diff --check HEAD 通过。
  • 回归覆盖远端/归档/备份保护、跨库来源、损坏数据拒绝、仅观察 ID 的复核、原生读取确认、新建会话、超时、恢复竞态、虚拟列表节点复用、后台暂停、设置按钮和扫描接线。

未运行完整工作区测试和 clippy,也未进行真实桌面宿主和 macOS/Linux 原生验证。上游已有全仓格式差异,此 PR 保留相关文件的现有格式。测试仅使用临时数据库与 mock RPC,未操作真实用户会话。

@BigPizzaV3 BigPizzaV3 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查结论:Request changes。

[P1] 持久化的失效会话列表没有恢复到用于渲染隐藏状态的 verifiedInvalidSessionIds。

代码在启动时从 localStorage 恢复 invalidSessionIds(60-plugin-marketplace.js:663-664),但 applyInvalidSessionVisibility() 只检查 verifiedInvalidSessionIds(680-684)。因此用户完成一次“检查并隐藏”后,重载页面不会立即隐藏已确认失效的会话,要等自动复查(最长约 5 分钟)后才恢复。

请在恢复持久化状态时同步 verifiedInvalidSessionIds,或调整状态模型保证重载后立即符合持久化契约,并补一条页面重载回归测试。修复后请补跑 Windows artifacts 和 macOS DMG CI。

@nk33-dev

Copy link
Copy Markdown
Author

已按 review 修复,当前 head 为 61731f79:

  • 从 localStorage 恢复失效会话 ID 时,同步恢复用于渲染隐藏状态的 verifiedInvalidSessionIds,页面重载后立即应用持久化隐藏。
  • 页面重载回归现在会在任何后台复核请求发出前断言该会话已隐藏,并继续验证恢复来源出现后会取消隐藏。
  • 本地会话/注入回归:104 passed;TypeScript check、前端 build、bundle check 均通过。

完整构建结果:

上游自动 pull_request run 仍处于 fork 审批等待状态,上述链接是当前 head 的手动 dispatch 结果。请复核。

@nk33-dev
nk33-dev force-pushed the codex/session-health branch from 61731f7 to e05d578 Compare October 14, 2026 01:36
@nk33-dev

nk33-dev commented Oct 14, 2026 •

Copy link
Copy Markdown
Author

已将当前 PR 迁移到 Codex++ 1.8.0 最新 main f6092f29,当前 head 为 e05d5782,GitHub 已重新计算为可合并,无文件冲突。

保留上游实时用量路由并合入会话健康路由;页面重载隐藏回归通过。

上游自动 workflow 仍需维护者批准;以上是同一 workflow 对当前 head 的手动 dispatch 结果。

This branch has not been deployed

No deployments
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.

2 participants