authorgravatar for 118054752+extoci@users.noreply.github.comExotic <118054752+extoci@users.noreply.github.com> 2026-08-13 13:00:37+03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-08-13 15:30:37+05:30
log5015d7cf9f98fe551115b625031f01e3f022cd2d
tree91ad5e54c6e861d97084bdc9bbab759498a6c3a3
parentdf19f6cfe3046dbbeb4073a3aac4c12f991b8fc7
signature Signed by PGP key B5690EEEBB952194

fix(web): keep turn minimap stable as composer grows (#6414)


1 files changed, 1 insertions(+), 7 deletions(-)

apps/web/src/components/chat/MessagesTimeline.tsx+1-7
...@@ -610,7 +610,6 @@ export const MessagesTimeline = memo(function MessagesTimeline({...@@ -610,7 +610,6 @@ export const MessagesTimeline = memo(function MessagesTimeline({
610 />610 />
611 <TimelineMinimap611 <TimelineMinimap
612 items={minimapItems}612 items={minimapItems}
613 bottomInset={contentInsetEndAdjustment}
614 hasPersistentGutter={minimapHasPersistentGutter}613 hasPersistentGutter={minimapHasPersistentGutter}
615 hitStripWidth={minimapHitStripWidth}614 hitStripWidth={minimapHitStripWidth}
616 stripMap={minimapStripMap}615 stripMap={minimapStripMap}
...@@ -712,14 +711,12 @@ function timelineMinimapEventTargetsPreview(target: EventTarget): boolean {...@@ -712,14 +711,12 @@ function timelineMinimapEventTargetsPreview(target: EventTarget): boolean {
712}711}
713712
714function TimelineMinimap({713function TimelineMinimap({
715 bottomInset,
716 hasPersistentGutter,714 hasPersistentGutter,
717 hitStripWidth,715 hitStripWidth,
718 items,716 items,
719 stripMap,717 stripMap,
720 onSelect,718 onSelect,
721}: {719}: {
722 bottomInset: number;
723 hasPersistentGutter: boolean;720 hasPersistentGutter: boolean;
724 hitStripWidth: number;721 hitStripWidth: number;
725 items: ReadonlyArray<TimelineMinimapItem>;722 items: ReadonlyArray<TimelineMinimapItem>;
...@@ -779,19 +776,16 @@ function TimelineMinimap({...@@ -779,19 +776,16 @@ function TimelineMinimap({
779 return null;776 return null;
780 }777 }
781778
782 const safeBottomInset = Math.max(0, Math.ceil(bottomInset));
783
784 return (779 return (
785 <div780 <div
786 className={cn(781 className={cn(
787 "group/minimap pointer-events-none absolute top-0 left-0 z-40 hidden w-18 [@media(pointer:fine)]:block",782 "group/minimap pointer-events-none absolute inset-y-0 left-0 z-40 hidden w-18 [@media(pointer:fine)]:block",
788 hasPersistentGutter783 hasPersistentGutter
789 ? "opacity-100"784 ? "opacity-100"
790 : "opacity-0 transition-opacity duration-150 hover:opacity-100 focus-within:opacity-100",785 : "opacity-0 transition-opacity duration-150 hover:opacity-100 focus-within:opacity-100",
791 )}786 )}
792 data-testid="timeline-minimap"787 data-testid="timeline-minimap"
793 data-persistent-gutter={hasPersistentGutter ? "true" : "false"}788 data-persistent-gutter={hasPersistentGutter ? "true" : "false"}
794 style={{ bottom: safeBottomInset }}
795 >789 >
796 <div className="relative h-full w-full select-none">790 <div className="relative h-full w-full select-none">
797 <button791 <button