@@ -1287,6 +1287,12 @@ export const dispatchTelegramMessage = async ({
12871287 lastAnswerBlockButtons = undefined ;
12881288 }
12891289 } ;
1290+ const repositionDraftLaneForNewMessage = ( lane : DraftLaneState ) => {
1291+ // Reposition instead of delete-then-repost: the replacement must land
1292+ // before deferred cleanup or Telegram can jump and retain a stale preview.
1293+ lane . stream ?. rotateToNewMessageDeferringDelete ( ) ;
1294+ resetDraftLaneState ( lane ) ;
1295+ } ;
12901296 const rotateLaneForNewMessage = async ( lane : DraftLaneState ) => {
12911297 if ( ! lane . hasStreamedMessage && typeof lane . stream ?. messageId ( ) !== "number" ) {
12921298 resetDraftLaneState ( lane ) ;
@@ -1306,16 +1312,7 @@ export const dispatchTelegramMessage = async ({
13061312 if ( ! activeAnswerDraftIsToolProgressOnly ) {
13071313 return false ;
13081314 }
1309- // Reposition, don't delete-then-repost: rewind so the replacement message
1310- // sends below, and defer the tool-progress window's delete until after it
1311- // lands. Deleting first (clear) scroll-jumps the client when a durable 🧠
1312- // was posted between the window and the replacement (the on-off jump).
1313- if ( answerLane . stream ?. rotateToNewMessageDeferringDelete ) {
1314- answerLane . stream . rotateToNewMessageDeferringDelete ( ) ;
1315- } else {
1316- answerLane . stream ?. forceNewMessage ( ) ;
1317- }
1318- resetDraftLaneState ( answerLane ) ;
1315+ repositionDraftLaneForNewMessage ( answerLane ) ;
13191316 suppressProgressDraftState ( ) ;
13201317 rotateAnswerLaneWhenQueuedBlocksSettle = false ;
13211318 return true ;
@@ -2693,8 +2690,7 @@ export const dispatchTelegramMessage = async ({
26932690 ? ( payload ) =>
26942691 enqueueDraftLaneEvent ( async ( ) => {
26952692 if ( splitReasoningOnNextStream ) {
2696- reasoningLane . stream ?. forceNewMessage ( ) ;
2697- resetDraftLaneState ( reasoningLane ) ;
2693+ repositionDraftLaneForNewMessage ( reasoningLane ) ;
26982694 splitReasoningOnNextStream = false ;
26992695 }
27002696 await ingestDraftLaneSegments ( payload , true ) ;
0 commit comments