Timeline MVVM 1 - Shared TimelineView and Overlay Buttons (#34464)

* Add shared timeline overlay buttons and view contract

The TimelineOverlayButtons presentational component (unread bar, jump-to-bottom)
plus the shared TimelineView VM contract (types) and its i18n strings. Consumed
by the TimelineView virtualizer in a follow-up commit.

* Add shared TimelineView component (TanStack Virtual)

Headless TanStack-Virtual timeline driven from RoomTimelineViewModel: anchorTo:"end"
viewport stability across prepends/trims, cold-load cover, jump-to via scrollToOffset,
and visible-state reporting via the virtualizer's onChange. Adds the @tanstack/react-virtual
dependency and the virtual-core isValidAnchorItem patch (runtime + types).

* Use Compound spacing tokens in timeline overlay and clarify comments

- Use Compound spacing tokens for overlay margins/insets instead of raw px
- Drop the stale Virtuoso reference from the overlay CSS comment
- Note the real-world duration of COLD_CAP_FRAMES
- Describe each load phase in plain English

* Remove jargon and explain/expand things in simple terms.

* Use time rather than a frame count and improve description.
This commit is contained in:
David Langley
2026-08-12 08:40:26 +00:00
committed by GitHub
parent 23a666a9de
commit badb35bd1f
25 changed files with 1681 additions and 1 deletions
+6
View File
@@ -119,6 +119,8 @@ patchedDependencies:
plist: patches/plist.patch
# Workaround for type fails
"@arcmantle/vite-plugin-import-css-sheet": patches/@arcmantle__vite-plugin-import-css-sheet.patch
# Workaround for scroll anchoring landing on transient placeholder rows (pending upstream)
"@tanstack/virtual-core@3.17.6": patches/@tanstack__virtual-core@3.17.6.patch
peerDependencyRules:
allowedVersions:
@@ -214,3 +216,7 @@ minimumReleaseAgeExclude:
# Temporary for testing purposes
- "@typescript/*"
- typescript@7.0.2
# New timeline: 3.14.8/3.17.6 carry the upstream end-anchored-prepend fix
# (#1237); they were freshly published so are still inside the release-age
# window. Revisit once the release has aged past the cutoff.
- "@tanstack/*"