From 987c81241ffbdacc6a8577f1d7fe371ae48b781d Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 20 Mar 2026 00:22:05 -0500 Subject: [PATCH 1/5] fix timeline scroll --- src/app/features/room/RoomTimeline.tsx | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 87df2938..d79d21c6 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -214,20 +214,12 @@ export function RoomTimeline({ const processedEventsRef = useRef([]); const timelineSyncRef = useRef(null as unknown as typeof timelineSync); - const scrollToBottom = useCallback( - (behavior?: 'instant' | 'smooth') => { - if (!vListRef.current) return; - const lastIndex = processedEventsRef.current.length - 1; - if (lastIndex < 0) return; - - if (behavior === 'smooth' && !reducedMotion) { - vListRef.current.scrollToIndex(lastIndex, { align: 'end', smooth: true }); - } else { - vListRef.current.scrollTo(vListRef.current.scrollSize); - } - }, - [reducedMotion] - ); + const scrollToBottom = useCallback(() => { + if (!vListRef.current) return; + const lastIndex = processedEventsRef.current.length - 1; + if (lastIndex < 0) return; + vListRef.current.scrollTo(vListRef.current.scrollSize); + }, []); const timelineSync = useTimelineSync({ room, From 4cce587372c84fa3bbe31ef4dd7c43ec7f1d2d8f Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 20 Mar 2026 00:33:43 -0500 Subject: [PATCH 2/5] fix edit not editing --- src/app/features/room/RoomTimeline.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index d79d21c6..5e203610 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -628,7 +628,8 @@ export function RoomTimeline({ : timelineSync.eventsLength; const vListIndices = useMemo( () => Array.from({ length: vListItemCount }, (_, i) => i), - [vListItemCount] + // eslint-disable-next-line react-hooks/exhaustive-deps + [vListItemCount, timelineSync.timeline] ); const processedEvents = useProcessedTimeline({ From 195efe841915855f5679de61fe9c64ec113db6d4 Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 20 Mar 2026 00:37:42 -0500 Subject: [PATCH 3/5] changesets and things --- .changeset/fix-edit-button.md | 5 +++++ .changeset/fix-timeline-scroll.md | 5 +++++ .changeset/replace-morg.md | 5 +++++ config.json | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-edit-button.md create mode 100644 .changeset/fix-timeline-scroll.md create mode 100644 .changeset/replace-morg.md diff --git a/.changeset/fix-edit-button.md b/.changeset/fix-edit-button.md new file mode 100644 index 00000000..99ebc6fb --- /dev/null +++ b/.changeset/fix-edit-button.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Fix edit button not always editing. diff --git a/.changeset/fix-timeline-scroll.md b/.changeset/fix-timeline-scroll.md new file mode 100644 index 00000000..ea6ad4c5 --- /dev/null +++ b/.changeset/fix-timeline-scroll.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Fix timeline not sticking to the bottom in non-reduced motion setting. diff --git a/.changeset/replace-morg.md b/.changeset/replace-morg.md new file mode 100644 index 00000000..232670fd --- /dev/null +++ b/.changeset/replace-morg.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Replace matrix.org with matrixrooms.info in default featured servers section. diff --git a/config.json b/config.json index 24d3e65e..c4c8e870 100644 --- a/config.json +++ b/config.json @@ -35,7 +35,7 @@ "#PrivSec.dev:arcticfoxes.net", "#disroot:aria-net.org" ], - "servers": ["matrix.org", "mozilla.org", "unredacted.org"] + "servers": ["matrixrooms.info", "mozilla.org", "unredacted.org"] }, "hashRouter": { From f515fa45ab4e7f23f465a10f520852460aceb813 Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 20 Mar 2026 01:00:21 -0500 Subject: [PATCH 4/5] make good --- src/app/features/room/RoomTimeline.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 5e203610..56247538 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -850,7 +850,7 @@ export function RoomTimeline({ onClick={() => { if (eventId) navigateRoom(room.roomId, undefined, { replace: true }); timelineSync.setTimeline(getInitialTimeline(room)); - scrollToBottom('instant'); + scrollToBottom(); }} > Jump to Latest From 7e889f4c6e8b972820cb7363d8ceaac6c70de290 Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 20 Mar 2026 01:02:48 -0500 Subject: [PATCH 5/5] fix nav stuff --- .changeset/fix-search.md | 5 +++++ src/app/features/room/RoomTimeline.tsx | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .changeset/fix-search.md diff --git a/.changeset/fix-search.md b/.changeset/fix-search.md new file mode 100644 index 00000000..3e23d0af --- /dev/null +++ b/.changeset/fix-search.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +Fix search/nav/links/etc not loading messages. diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 56247538..7b2badc4 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -334,6 +334,18 @@ export function RoomTimeline({ }; }, [timelineSync.focusItem, timelineSync, reducedMotion, getRawIndexToProcessedIndex]); + useEffect(() => { + if (timelineSync.focusItem) { + setIsReady(true); + } + }, [timelineSync.focusItem]); + + useEffect(() => { + if (!eventId) return; + setIsReady(false); + timelineSyncRef.current.loadEventTimeline(eventId); + }, [eventId, room.roomId]); + useEffect(() => { if (eventId) return; const { readUptoEventId, inLiveTimeline, scrollTo } = unreadInfo ?? {};