Skip to content

fix(inject): 持久化模型选择器折叠状态,跨重启不再退回全展开 (#3073) - #3080

Open
koeria wants to merge 2 commits into
BigPizzaV3:mainfrom
koeria:fix/issue-3073
Open

koeria wants to merge 2 commits into
BigPizzaV3:mainfrom
koeria:fix/issue-3073

Conversation

@koeria

@koeria koeria commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

问题

折叠分组 id 只存在页面内存里(重注入经 viewState 交接),Codex 重启后即丢失;且 codexPlusModelPickerObserveList 换列表节点时会主动清空 state.collapsed。因此网关变更/重启后选择器退回全部展开(#3073)。collapsedGroups.v1 这个 localStorage 键只存供应商归属,从未存折叠状态。

修复(最小改动,均在 assets/inject/renderer-inject/71-model-picker-groups.js)

  • 新增 localStorage 键 codexPlus.modelPicker.collapsedList.v1,与归属缓存分开存折叠分组 id 列表。
  • codexPlusModelPickerLoadView 时合并持久化的折叠 id;不按当前分组裁剪(重启后目录可能晚于菜单出现,先裁剪会误删仍存在分组的折叠状态)。
  • 所有折叠变更点(标题点击、键盘 ←/→、全部展开/折叠、最近使用自动展开)即时落盘。
  • 换列表节点时不再清空折叠集合。
  • 新增组仍按默认展开显示(恢复只针对持久化过的 id)。

测试

新增 assets/inject/model-picker-collapse-persist.test.cjs(node:test + vm 抽取分片函数):

  • 重启后新实例从 localStorage 恢复折叠 id(含空串过滤);
  • 折叠变更落盘内容正确;
  • 坏 JSON 不抛错不污染状态;
  • 结构断言:ObserveList 换节点不清空折叠集合。

本地 node --test assets/inject/model-picker-collapse-persist.test.cjs assets/inject/model-picker-groups-scan.test.cjs assets/inject/model-picker-decor.test.cjs:10 pass / 0 fail。

Fixes #3073

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.

[Bug]: 网关变更并重新启动 Codex 后,模型选择器退回全部展开

1 participant