@@ -187,11 +187,17 @@ export function ThingsDiff(targetTab) {
187187 fetchAndDiff ( ) ;
188188 viewDirty = false ;
189189 }
190- // Resize editors to fit the container
190+ // Resize editors to fit the container and re-render the overview
191+ // after AceDiff's async event handlers (scroll sync, resize) settle.
191192 if ( diffInstance ) {
192193 const editors = diffInstance . getEditors ( ) ;
193194 editors . left . resize ( ) ;
194195 editors . right . resize ( ) ;
196+ setTimeout ( ( ) => {
197+ if ( diffInstance ) {
198+ renderChangeOverview ( diffInstance . diffs ) ;
199+ }
200+ } , 50 ) ;
195201 }
196202 syncTabs ( tabLink ) ;
197203 }
@@ -420,6 +426,13 @@ export function ThingsDiff(targetTab) {
420426
421427 const svgNS = 'http://www.w3.org/2000/svg' ;
422428
429+ // Ensure AceDiff's connector SVGs don't block minimap clicks.
430+ // AceDiff recreates its gutter SVG asynchronously (on scroll, resize),
431+ // so this must run every time the overview is (re-)rendered.
432+ gutterEl . querySelectorAll ( ':scope > svg:not(.diff-overview)' ) . forEach (
433+ ( svg : SVGElement ) => { svg . style . pointerEvents = 'none' ; }
434+ ) ;
435+
423436 // Reuse existing SVG or create a new one
424437 if ( ! overviewSvg ) {
425438 overviewSvg = document . createElementNS ( svgNS , 'svg' ) ;
@@ -459,11 +472,11 @@ export function ThingsDiff(targetTab) {
459472
460473 rect . addEventListener ( 'click' , ( e ) => {
461474 e . stopPropagation ( ) ;
462- // Scroll both editors without animation. Animation caused a
463- // bounce: each animated frame triggered AceDiff's proportional
464- // scroll sync on the opposite editor, creating oscillation.
475+ // Only scroll the left editor — AceDiff's locked proportional
476+ // scroll sync will position the right editor automatically.
477+ // Scrolling both editors caused a race: AceDiff's throttled
478+ // (16ms) sync handlers would override one or both positions.
465479 editors . left . scrollToLine ( diff . leftStartLine , true , false , ( ) => { } ) ;
466- editors . right . scrollToLine ( diff . rightStartLine , true , false , ( ) => { } ) ;
467480 } ) ;
468481 rect . addEventListener ( 'mouseenter' , ( ) => {
469482 rect . style . fill = 'rgba(58, 140, 154, 0.9)' ;
0 commit comments