Skip to content

fix: 修复会话滚动位置异常恢复 - #3019

Merged
BigPizzaV3 merged 2 commits into
BigPizzaV3:mainfrom
130040167:codex/thread-scroll-restore-pr
Nov 11, 2026
Merged

BigPizzaV3 merged 2 commits into
BigPizzaV3:mainfrom
130040167:codex/thread-scroll-restore-pr

Conversation

@130040167

@130040167 130040167 commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

问题

切换或重新打开会话时,未加载完成的容器可能覆盖已保存的位置,长会话也可能恢复到错误位置。点击原生“滚动到底部”后,待执行的恢复任务可能再次将页面拉回旧位置。

修改

  • 只使用当前可见的会话滚动容器,避免空容器覆盖已有记录,并保存是否位于底部。
  • 等设置加载完成后再保存或恢复位置;关闭位置保留时不主动更改滚动位置。
  • 用户主动滚动或点击原生“滚动到底部”时,取消当前会话待执行的位置恢复。

验证

  • 滚动恢复、内置拓展、设置和注入产物相关测试:241 项通过。
  • node scripts/assemble-renderer-inject.mjs --check:通过。
  • npm run vite:build:通过。
  • cargo build --release -p codex-plus-manager --bin codex-plus-plus:通过。
  • 隔离管理器启动冒烟:通过;未覆盖真实会话中的滚动交互。

@BigPizzaV3

Copy link
Copy Markdown
Owner

感谢修复!空容器覆盖已保存位置、记住「是否在底部」、多个 .thread-scroll-container 只取可见的那个、设置加载完之前不保存也不恢复、点原生「滚到底部」时取消还没执行的恢复,这几处都很到位。

有一处需要调整:PR 新增了「设置被明确关闭时,打开会话后主动滚到底部」,涉及 scheduleThreadScrollBottom、pendingBottomNavigation、assets.rs 里的 __CODEX_PLUS_THREAD_SCROLL_RESTORE__ 启动快照,以及 99-startup 里每次 DOM 变动都调用的 syncPendingNavigation。原来的约定是「关着就不动滚动位置」,用户关掉功能后不应该再被改写滚动,这部分也没有对应的 issue。麻烦把这部分去掉(包括 96-builtin-extensions.js 里那条注释的改动),只保留上面的修复,就可以合并了。

@130040167

Copy link
Copy Markdown
Contributor Author

已按建议调整:移除了关闭位置保留时主动滚到底部的逻辑、启动快照,以及 DOM 变化时的提前定位回调;关闭功能后不再主动更改滚动位置。其余位置恢复和原生“滚动到底部”按钮的修复保留。

相关测试 241 项、注入产物检查、前端及 Windows 发布构建均已通过。隔离管理器启动冒烟通过,尚未覆盖真实会话中的滚动交互。

@BigPizzaV3
BigPizzaV3 merged commit f47aa18 into BigPizzaV3:main Nov 11, 2026
2 of 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