Repository navigation
Conversation
Author
|
Owner: toad-close-lifecycle (existing divider/render-rejection implementation and verification owner); Codex integrates/installs. Full diff read against current main e8716b9: still needed, not superseded. Main still opens preserve_history/range_changed for rejected render results; this branch deletes that unnecessary layout work by consuming the retention owner result. Remaining: current-main integration and installed rejection/valid-render behavior. Existing diagnostic explicitly shows drag latency still broken; no 16 ms or performance-success claim. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix
Rejected transcript render results no longer invalidate page geometry.
TranscriptFragment.hold_linesreports whether it retained rows for its current block source.TranscriptLinesRenderTask.holdreturns that result after its existing width/theme/link-context check.TranscriptPageView._publishconsumes every result and returns before opening a history change when none were retained. A history change itself keeps the reader and can interrupt an unfinished layout, so suppressing onlyrange_changedinside that scope was insufficient.No new state, cache, debounce, budget, worker, CSS or Textual change. Genuine width measurement, range/filter changes and explicit detail changes retain their existing invalidation paths. The live meter now includes mouse input, not just keys/wheel.
Owner and consumer evidence
Before: both retention methods returned
None, including rejection, so_publishalways invalidated geometry.After: source acceptance is decided once by
TranscriptFragment.hold_lines; render applicability is decided once byTranscriptLinesRenderTask.current_for; the page consumes their result instead of inventing another validity check.Complete production search over Toad/Core/Textual:
Two direct fragment consumers:
TranscriptLinesRenderTask.holdforwards acceptance;TranscriptLinesRenderTask.showowns an explicit shown-state change and keeps its independent invalidation even if prepared rows are rejected. Two task consumers:_publishnow uses acceptance;LineHistory.prepare_fragmentsalready loops against canonicalfragment.lines_for(width, theme)and has no layout side effect to suppress. No other production consumers found.The same existing refactor-audit parser inspected 282 Toad / 321 Core / 250 Textual / 38 ACP / 105 Pydantic modules before/after, with zero parse omissions. Evidence:
/home/ts/.cache/agent-scratch/toad-sidebar-drag-9579/render-owners-{before,after}.txt. AST does not prove dynamic binding; the live run follows.Verification
holdreturned False for 242 left / 100 right publication results, and True exactly when fragment retention returned True. Both production owners were exercised through the application.Screen._finish_stepped_layoutcallbacks. The exact frame/latency figures and scenario limits are in the single series row indocs/performance/scroll-series.md; no fixed scrolling acceptance is claimed.render-owners-final.txt, same module totals and zero parse omissions. Source replacement rejection is source-verified but was not forced with fabricated data.