You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adopt the GitHub-diff pattern: the whole row is the hover target, and the '+' renders inside the hovered block's own row (leading edge, vertically centered on the row under the pointer). This structurally eliminates the travel-gap bug class — there is no journey between trigger and target, so grace timers, pinning, and re-anchor suppression all become unnecessary and can be deleted.
Design questions for the plan: hover target = block bounding box or full canvas row width (including padding strips)? What does the affordance do on blocks that already carry marker cards? Interaction with text selection (the '+' must not intercept drag-selection over the row).
Test scenarios to inherit from the gate finding: right-edge hover, page-padding/margin strips, tall multi-line blocks, rapid vertical mouse travel.
Origin
At pir-1237's dev-approval gate (2026-08-05), reviewer testing of the shipped #1236 fix (grace timers + pin-on-overlay-hover) surfaced residual UX gaps the damping approach cannot close:
Proposal (reviewer's, endorsed at gate)
Adopt the GitHub-diff pattern: the whole row is the hover target, and the '+' renders inside the hovered block's own row (leading edge, vertically centered on the row under the pointer). This structurally eliminates the travel-gap bug class — there is no journey between trigger and target, so grace timers, pinning, and re-anchor suppression all become unnecessary and can be deleted.
Scope notes
PIR — supersedes approved layout decisions, design-sensitive. Related: #1236 (interim fix), #863 (current layout contract), #1107 (composer), #1237 (keyboard parity).