Skip to content

feat(qt): wire real history scrollbar to source reading anchor - #326

Merged
JavaZeroo merged 9 commits into
mainfrom
agent/qt-scrollbar/record-hidden-retention-2e7373117ea0
Nov 7, 2026
Merged

JavaZeroo merged 9 commits into
mainfrom
agent/qt-scrollbar/record-hidden-retention-2e7373117ea0

Conversation

@JavaZeroo-Bot

@JavaZeroo-Bot JavaZeroo-Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

背景

#29 主线已有 HistoryViewport、显示投影、源阅读锚点、滚轮、选择/Copy 与 Find。本切片把既有 Win32 滚动条历史浏览策略迁移到正式 Qt 正常主屏,使用真实 QScrollBar 公共入口,不依赖未合并 Paste。

内容

  • 主屏右侧真实垂直滚动条:值只是当前显示页 top,不当作稳定源 ID;拖动/页区/按键最终走 HistoryViewport 的源 rank/行身份锚点。
  • 阅读旧历史时新输出保持源锚点;滚动条值随当前页面同步;回到底部重新 following;淘汰按最早保留行/身份钳制;缩窄/扩大后继续显示同源锚点,Find reveal 同步滚动条。
  • 滚动条出现时其宽度进入现有 Qt→core→ConPTY 网格路径(无第二 resize/存储模型);未出现时不占用。
  • 既有滚轮、Ctrl+Shift+Home/End、拖选/Copy、终端输入合同保持不变。

验证

边界

  • 离屏 Qt;不宣称物理呈现/DPI、备用屏/TUI、自动滚动/选词选行、配置持久化或性能阈值。
  • feat(qt): add bounded system paste entries #324 仍等待用户决定;BCD/VM/v2、旧失败与未跟踪脚本不变;未触发 Codex review。

最终补充验收

当前 head e9db6db 的10项CI成功,Qt run42337771647/job128298480653 的11项正式路径测试通过。五阶段观测保留期望/实际尺寸、child PID和nonce;该CI在清空后先收到80×24旧尺寸,再收到81×24正确尺寸,两个回报均保留,未将transport完成当child ACK。本地PID10108与CI PID8732是独立运行,不混同。公开Find、拖选/Copy注入writer与正确child输入已验证;注入writer不代表真实CF。

Windows总回归run42337771663首次text_actions在stage84失败(actions geometry lost terminal selection),attempt2成功;保留失败与一次恢复记录,根因未独立确认,不宣称缺陷已修复。

Add a vertical Qt scrollbar to the main screen. Its value is only the current
display page top; navigation goes through HistoryViewport's rank/identity
anchor, including new output while reading, bottom-follow, eviction clamping,
resize and Find reveal. The scrollbar extent enters the existing Qt->core->ConPTY
grid width path when visible; no second resize/store model is added.

Extend the formal history regression with real mouse drag/page and scrollbar
key events, exact source top/page identity, new-output anchor stability,
narrow/restore, Find synchronization and two-session isolation. Fixed-layout
legacy tests explicitly disable the scrollbar reservation in their own process
so their pre-existing 80x24 fixtures remain unchanged; the scrollbar-enabled
product path is covered by the history test.
…rage

Add a scrollbar-enabled size test: default no history (no scrollbar), finite
real-child history (scrollbar appears and reserves width), narrow/restore, and
ED3 clear (scrollbar disappears). Each stage independently queries the real
child GetConsoleScreenBufferInfo and compares Qt grid, core requested/transport
and child buffer/window, with the Session child identity.

Extend the enabled history test with the real Ctrl+Shift+F/query/Escape entry,
public mouse drag + Ctrl+Shift+C through an injected writer (source text, not
real CF), and a third recording child for correct post-Find input delivery.
Wire the new test into CMake/CI; fixed-layout tests still disable only the
scrollbar reservation in their own process.
…e settles

Do not treat a single early child reply or a stale size as final; query the same
real child repeatedly until its buffer/window, Qt grid and core transport agree,
while still failing on timeout. This removes a hosted-run timing mismatch.
@JavaZeroo
JavaZeroo merged commit 0dae679 into main Nov 7, 2026
11 of 12 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