GeopJr / Tuba

Browse the Fediverse
https://tuba.geopjr.dev/
GNU General Public License v3.0
504 stars 55 forks source link

[Request]: Stream timelines UX #373

Open eobet opened 11 months ago

eobet commented 11 months ago

Describe the request

  1. With streamed updates enabled, I can't figure out what indicates if there's a new post available or not. There's an arrow button which seems to be a "scroll back to top" button, but for example, there's no round badge with a newly streamed unread post count number in it, like there is with unread notifications (or even a differently colored background for unread newly streamed posts).
  2. This is a classic problem, but when you open the app you scroll down to go back in history. However, newly streamed posts appear at the top... but when you click the "scroll back to top" to see more than one newly streamed post, it seems you have to start scrolling down again. So what you end up is not only a yo-yo interaction pattern, but one which has no clear indicator as to when you reached an "older" post (aside from the near term memory of the user).
  3. Even if you deliberately leave the window open at the very top, newly streamed posts still populate downwards, so there's seemingly no natural way to use the app while only scrolling in a single direction. You have to do the yo-yo up and down the timeline (which again can be very disorienting to some users... though perhaps not traditional Linux users who tend to be a bit more advanced).

Implementation Details

GeopJr commented 11 months ago

With streamed updates enabled, I can't figure out what indicates if there's a new post available or not. There's an arrow button which seems to be a "scroll back to top" button, but for example, there's no round badge with a newly streamed unread post count number in it, like there is with unread notifications (or even a differently colored background for unread newly streamed posts).

I'll refrain from implementing an attention badge for new posts right now due to #228

This is a classic problem, but when you open the app you scroll down to go back in history. However, newly streamed posts appear at the top... but when you click the "scroll back to top" to see more than one newly streamed post, it seems you have to start scrolling down again. So what you end up is not only a yo-yo interaction pattern, but one which has no clear indicator as to when you reached an "older" post (aside from the near term memory of the user).

Even if you deliberately leave the window open at the very top, newly streamed posts still populate downwards, so there's seemingly no natural way to use the app while only scrolling in a single direction. You have to do the yo-yo up and down the timeline (which again can be very disorienting to some users...

I'm not sure what's the alternative. Since the order is reverse chronological, it's expected for new posts to be at the top, is there another pattern used by Mastodon Web/Mobile or another frontend? FWIW the scroll to top button is not meant to indicate new posts but just a typical scroll to top floating action button found on websites.

though perhaps not traditional Linux users who tend to be a bit more advanced).

Tuba is not aimed at advanced users

eobet commented 11 months ago

There are two quick fixes to prevent the need to yo-yo up and down the timeline:

  1. When the user is at the top of the timeline, streamed posts should appear above the scroll position instead of pushing it down.
  2. If the user has scrolled down, the up arrow button should place the scrolling position at the last previously read new post instead of the last newly streamed post.

The two above changes will mean that scrolling down always reads older posts, and scrolling up always reads newer posts.

(This is not a radical or innovative change, btw. Apps like Toot! use the exact same model. That app, like many other Mastodon apps, does have an unread post count indicator, though, which I hope Tuba will also get in the future.)

Minkiu commented 8 months ago

Hey there, thanks for Tuba!

Something that could be done is similar to how Mastodon web does it, have a "card" (sorry don't know the actual widget name) that says "X New items" and when you click it, it will expand (disappear) and show the new elements; and in turn I guess we could add a line between the last item and the first newly loaded one.

Mastodon's UI: image

A quick mockup of how it could look like: image

Cheers!

douglasthiel commented 7 months ago

I just want Tuba to remember where I left off reading from the last time I used Tuba or the Website instance (if that's even possible).

What I don't want is to be automatically positioned at the top of the all that posts in my Home feed. This is confusing to me b/c I don't know how many unread items I have and scrolling down I get the feeling that I'm lost.

matlag commented 7 months ago

Wouldn't that all be addressed if the posts were in chronological order? New posts at the bottom, no need for a button to jump to the bottom, just keep scrolling down.

douglasthiel commented 7 months ago

Wouldn't that all be addressed if the posts were in chronological order? New posts at the bottom, no need for a button to jump to the bottom, just keep scrolling down.

Quite possibly. See Metatext on iOS. Your position is stationary while reading or away from the app; that is, without the user's direct manipulation. There is a message that alerts you to the fact that there are more posts. I just scroll down to see the posts come down from the top of the view.