Skip to content

Finish Replay focus reveal before publishing - #192

Merged
snkmcb merged 1 commit into
mainfrom
codex/linear-replay-focus-reveal
Nov 10, 2026
Merged

snkmcb merged 1 commit into
mainfrom
codex/linear-replay-focus-reveal

Conversation

@snkmcb

@snkmcb snkmcb commented Nov 9, 2026

Copy link
Copy Markdown
Member

Summary

After #189–#191, Replay stages layout and paint before installing a replacement view. When a resize or replacement needed to reveal recovered focus, finish_update called back into settle and reentered finalization. Command-driven focus also applied the same scroll updates separately.

Apply focus reveal offsets through one helper. During finalization, complete the optional second layout and focus recovery in place, then refresh pointers and publish the generation and its semantic observation. This preserves the public API, Replay v1/v2 encoding, focus reveal policy, and the step commit and rollback boundaries.

Candidate review

Area Evidence Scope and tradeoff
Runtime ReplayPlayer::finish_update reentered via settle, and reveal repeated the offset writes. Addressed here. Preserve both focus recovery passes when a second layout is needed and publish only after pointer refresh.
Widget #186–#188 consolidated numeric draft parts, axis adjustment and geometry lookup. SplitPaneDispatcher::dispatch and ScrollbarDispatcher::dispatch still have similar move, release and cancellation branches. Leave drag handling with its controls until a shared contract is clear. Capture and geometry invalidation differ.
Style / Paint build_paint_list converts fill, fallback and opacity within the traversal and emits backend-independent commands. Revisit at the next fill extension. Extracting the conversion must preserve visibility and draw order.
Tests / CI The prior hosted Core contracts step took 299 s. The current local CTest phase took 27.72 s, with replay_serialization at 27.69 s. Measure serialization fixture setup before considering any change to coverage. Hosted end-to-end and local test-only timings have different scope. Prior run

Verification

  • Windows x64 Debug Core contracts passed 64/64, including Replay, host updates, serialization and offscreen runner. The reused build took 0.35 s to configure, 9.80 s to build and 27.72 s to test with two build workers and four CTest workers.
  • The window-free Hierarchy / Inspector smoke passed in 184.30 s.
  • Changed-file clang-format 23.1.1, documentation, release metadata, the 28 CI selection checks and git diff --check passed.

@snkmcb
snkmcb merged commit 32a527b into main Nov 10, 2026
3 checks passed
@snkmcb
snkmcb deleted the codex/linear-replay-focus-reveal branch November 10, 2026 04:55
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