* Add an intermediate List component
* Fix type
* Add onScrolledDownChange
* Port pager to use onScrolledDownChange
* Fix on mobile
* Don't pass down onScroll (replacement TBD)
* Remove resetMainScroll
* Replace onMainScroll with MainScrollProvider
* Hook ScrollProvider to pager
* Fix the remaining special case
* Optimize a bit
* Enforce that onScroll cannot be passed
* Keep value updated even if no handler
* Also memo it
* Make shadow a type-only concept
* Prevent unnecessary init state recalc
* Use derived state instead of effects
* Batch emitter updates
* Use object first seen time instead of dataUpdatedAt
* Stop threading dataUpdatedAt through
* Use same value consistently
* get basic hindi support to work
* get web app language switcher in
* Refactor i18n implementation and remove unused
code
* add missing strings
* add dropdowns and modals missing strings
* complete all hindi translations
* fix merge conflicts
* fix legeacy persisted state
* fix data in RecommendedFeeds
* fix lint
* Move tick-every-minute into a hook/context
* Move soft-reset event out of the shell model
* Update soft-reset listener on new search page
* Implement session-loaded and session-dropped events
* Update analytics and push-notifications to use new session system