Skip to content

fix: 删除会话时同步清理侧边栏索引 - #2092

Merged
BigPizzaV3 merged 3 commits into
BigPizzaV3:mainfrom
130040167:codex/fix-sidebar-delete
Sep 9, 2026
Merged

fix: 删除会话时同步清理侧边栏索引#2092
BigPizzaV3 merged 3 commits into
BigPizzaV3:mainfrom
130040167:codex/fix-sidebar-delete

Conversation

@130040167

@130040167 130040167 commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

问题现象

删除 Codex++ 会话后,侧边栏仍显示旧会话;点击后提示 no rollout found for thread id,无法恢复。
可见 #2073

原因

删除流程只清理主线程数据库、rollout 文件和部分 session_index,没有同步清理 .codex-global-state.json 中的 projectless-thread-ids/线程元数据,也没有清理 sqlite/codex-dev.db 的 local_thread_catalog 等目录缓存,造成索引与实际存储不一致。

解决方案

  • 删除成功后按 thread ID 原子清理全局状态中的线程引用。
  • 参数化删除 local_thread_catalog、thread_timeline_ledger、local_thread_catalog_scan_entries 中的目标行。
  • 统一清理 session_index.jsonl。
  • 主线程记录已不存在但残留索引存在时,支持降级清理。
  • 增加回归测试,确认其他会话不受影响。

@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.

当前删除流程新增了 .codex-global-state.json、local_thread_catalog 等侧边栏索引清理,但 undo 流程仍只恢复数据库、rollout 和 session_index.jsonl,没有恢复这些新删除的索引数据。\n\n请让删除操作记录可恢复的全局状态/目录缓存内容,或在 undo 时根据线程数据安全重建,并补充“删除后侧边栏消失,undo 后侧边栏索引完整恢复”的回归测试。否则用户执行 undo 后会得到正文已恢复但侧边栏仍缺失的部分恢复状态。

现象:删除会话后 Codex++ 侧边栏仍显示旧会话,点击提示 no rollout found。

原因:删除流程只清理主线程数据库、rollout 文件和部分 session_index,未同步清理 projectless-thread-ids 与 local_thread_catalog 等侧边栏索引。

方案:删除成功后按 thread ID 原子清理全局状态、目录缓存和 session_index;主存储缺失时也支持清理残留索引,并补充回归测试。
删除备份记录线程对应的全局状态和目录缓存,undo 时仅恢复缺失条目,并增加侧边栏删除与恢复测试。
@130040167
130040167 force-pushed the codex/fix-sidebar-delete branch from 0b56934 to cbff41a Compare September 4, 2026 15:49
@130040167

Copy link
Copy Markdown
Contributor Author

审查意见已逐项修复,且本 PR 与 #2093 保持文件范围完全独立。

  • 删除时将 .codex-global-state.jsonlocal_thread_catalogthread_timeline_ledger 等侧边栏索引与 session_index.jsonl 一并按 thread ID 清理。
  • 删除备份包含上述侧边栏数据;undo 只补回当前缺失条目,不覆盖删除后用户产生的新状态。
  • 通用会话、Codex 线程和自动化运行三种管理工具删除路径统一记录/恢复侧边栏索引;同时兼容 local:<id> 形式的全局线程 ID。
  • 回归测试:cargo test -p codex-plus-data --test storage_adapter(27/27 通过);cargo check -p codex-plus-data 通过。

当前分支已 rebase 到上游最新 48d4315,最新提交为 cbff41a,可合并状态为 MERGEABLE

@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.

复审通过。已核验:storage_adapter 27/27 通过(本机,与你声称一致);删除流程同步清理 .codex-global-state.json / local_thread_catalog / thread_timeline_ledger + session_index.jsonl,undo 从备份按 thread ID 只补回缺失条目、不覆盖删除后的新状态,三种会话类型统一路径、并兼容 local:。新增的 delete_codex_thread_clears_sidebar_global_state_and_catalog_cache 等回归测试覆盖到位。已基于最新 main,三平台 CI 全绿,可与 #2093 独立合并(不同文件区)。

@BigPizzaV3
BigPizzaV3 merged commit 29e835f into BigPizzaV3:main Sep 9, 2026
3 checks passed
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