* Add EventTile root properties to view model
* Move render-related event reads into the vm
* Remove duplicate root derivation in UnwrappedEventTile
* Move data-has-reply derivation into EventTileViewModel
* Move getEventDisplayInfo() and dependencies into EventTileViewModel
* Add tests for improved coverage
* Cleanup and comments
* Fix: Replacement events have a fallback tile but must not show their own reply chain
* Combine dependency and prop updates into one atomic VM update
* Remove property which was never read and fix oxfmt issue
* Add pure sender render inputs to EventTileViewModel
* Move sender/avatar normalization to EventTile
* Split sender and avatar adapters into focused leaf components
* Add tests for the sender and avatar adapters
* Fix sonar issues
* Make sender profile consume pure member info
* Collapse sender adapter onto snapshot-driven props
* Share current-member resolution for event and reply tiles
* Fix Prettier issues
* Keep settings preview on historical sender profiles
* Update the proprty name to reflect the use of the event-time sender data instead of resolving the current room member
* Fix Sonar issue
* Tighten member to MemberInfo | null in the view model
* Make EventTileViewModel an owned root VM
* Move timestamp sub-VMs under EventTileViewModel
* Move thread-list action bar VM under EventTileViewModel
* Clean up for improved readability
* Clean up to avoid duplicate EventTile render derivations
* Avoid mutating EventTileViewModel during render
* Move EventTile child VM syncing into adapters
* Replace timestamp VM field setters with batched setProps
* Component wrappers at the end of the file
* Lazy-create EventTile child view models
* Thin EventTile render state wiring
* Move EventTile E2E verification into a view model
* Derive EventTile E2E padlock slots in view model
* Derive EventTile timestamp slots in render state
* Derive EventTile footer slots in render state
* Fix SonarCloud issues