Skip to content

Extract floating-panel Answer Outline modules - #2018

Open
0xTotoroX wants to merge 2 commits into
BigPizzaV3:mainfrom
0xTotoroX:codex/stepwise-floating-panel-pr6-outline
Open

Extract floating-panel Answer Outline modules#2018
0xTotoroX wants to merge 2 commits into
BigPizzaV3:mainfrom
0xTotoroX:codex/stepwise-floating-panel-pr6-outline

Conversation

@0xTotoroX

Copy link
Copy Markdown
Contributor

背景与目标

Answer Outline 负责从当前助手回答中识别标题结构,并提供层级展示、当前回答绑定和页面跳转。此前这些逻辑与 Stepwise 建议、面板交互和共享扫描核心混在同一个注入文件中,标题规则或滚动行为的修改会扩大审查范围。

本 PR 将 Answer Outline 专属逻辑归位到 assets/inject/floating-panel/outline/,明确标题解析、层级处理、导航和视图展示的职责边界。它只增加 Outline 源码片段及源码契约测试,不新增第二套回答扫描或网络请求路径,也不改变当前生产注入组合。

变更内容

parser.js

  • 识别语义标题和结构化伪标题。
  • 排除代码块、表格、噪声标题和悬浮窗自有 DOM。
  • 清理标题标记、识别序列号并保留多级层级。
  • 对标题候选进行文档顺序排序、去重和显示层级归一化。
  • 为当前回答标题写入稳定 DOM 标记,并提供清理入口。

navigation.js

  • 定位页面滚动容器并计算安全滚动边界。
  • 提供标题、当前回答、段首和段尾的跳转。
  • 使用方向感知滚动和边界钳制,避免跳转超出可视区域。
  • 管理跳转后的稳定检查、目标高亮和旧滚动清理。

feature.js

  • 将 Outline 刷新绑定到共享的当前回答快照。
  • 在回答仍生成时保持 pending 状态。
  • 使用 Outline epoch 和上下文匹配拒绝过期刷新结果。
  • 在关闭、错误、空结果和成功状态之间清理并更新 Outline 状态。

view.js

  • 生成 Outline 列表、空状态、加载状态和错误状态视图。
  • 保留多级标题缩进与序列号文字对齐策略。
  • 绑定标题跳转、段首/段尾跳转及目标状态同步。

源码契约测试

  • 验证解析、层级归一化、去重、刷新、跳转和视图入口。
  • 验证 Outline 复用共享上下文,不创建第二个回答扫描器。
  • 禁止直接 fetch()、WebSocket、MutationObserver、浏览器运行时 import/export 和 /stepwise/generate
  • 测试读取片段时规范化 CRLF/LF,兼容 Windows checkout。

行为边界

  • 不修改 crates/codex-plus-core/src/assets.rs,当前生产 bundle 和页面行为保持不变。
  • 不包含 Stepwise 建议生成、缓存、模型请求或 API Key 处理。
  • 不包含视觉样式、面板布局、拖动缩放或 Manager 设置。
  • 不新增 Rust DOM 解析器、第二套上下文识别或第二套 CDP Bridge。
  • 不新增浏览器运行时模块加载、目录扫描或网络资源。

验证

  • cargo test -p codex-plus-core --test floating_panel_outline --test cdp_bridge --test bridge_routes146 项通过。
  • cargo check -p codex-plus-core:通过。
  • Outline 四个片段组合后的 node --check:通过。
  • 四个 Outline 文件与完整目标树 T(commit 2258044)逐字节一致,SHA-256 已核对。
  • git diff --check:通过。
  • 最新验证基线为 upstream/main commit 7385664

提交说明

  • 2fa24dd:Answer Outline 解析、导航、生命周期和视图源码。
  • 773c620:Answer Outline 源码契约测试。

两个提交分别对应功能源码与测试覆盖,便于独立审查和回退。

@0xTotoroX
0xTotoroX marked this pull request as ready for review August 27, 2026 04:08
@0xTotoroX
0xTotoroX force-pushed the codex/stepwise-floating-panel-pr6-outline branch from 773c620 to 6b6a029 Compare August 29, 2026 14:00
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