Repository navigation
Keep AI team hover responsive with large previews - #1794
Merged
Merged
Conversation
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.
Moving the pointer across AI team cards could repeatedly parse every member’s long Markdown response, including cards below the screen. This blocked hover and keyboard input on the UI loop.
Unchanged fitted excerpts now reuse rendered rows in a 64-shape cache cleared on page close. Text, clipping/interruption state, geometry, ink and inline-code path facts invalidate reuse. Offscreen member cards retain keyboard stops and card positions without formatting their metadata, previews or borders; keyboard reveal and offset clamping paint newly visible cards in the same frame.
Validation:
make pr-readypassed, including the complete touchedtui3and untaggede2esuites, build, vet, manual gates and structural laws.TestTeamsLargeOverviewPointerAndLivePreviewpassed against the built terminal: a live manager exchange, 120 saved members with long replies, 600 pointer motions, physical wheel scrolling, resize and opening the correct member. All five final call records used OpenRouterdeepseek/deepseek-v4.1-flash, including auxiliary roles.Warm
BenchmarkTeamsHoverresults with approximately 48 KiB replies (median of three five-iteration samples):Benchmark review: the recorded medians match this table. At 12 members, warm redraws are approximately 144× faster and allocate 99.55% fewer bytes; at 120 members, they are approximately 553× faster and allocate 99.82% fewer bytes. Across the three samples, the 120-member baseline ranged from 359–451 ms and the candidate from 0.62–0.73 ms. The 1,000-member candidate ranged from 4.51–6.54 ms; no matching baseline was recorded for that size.
Each sample averages five redraws after warming the excerpt cache, with three samples per size. These results measure selected-team body construction with long saved replies; they do not measure cold page opening, end-to-end input latency, streaming cache misses, or the All teams hierarchy. The separate live terminal test verifies input, scrolling and member navigation. Timings are diagnostic; regression gates assert reuse and geometry rather than time limits. The first visible excerpt still renders on a cache miss, and target bookkeeping remains linear in member count.
Actual terminal captures and model receipts are preserved locally. Direct PR attachment upload is unavailable; no evidence files are committed to the source repository.