Mark read on scroll

Is this feature still in the queue?

For what it’s worth this is SUPER important for me :slightly_smiling_face:

Thanks!

It is indeed on the bug tracker! https://github.com/Ranchero-Software/NetNewsWire/issues/3924

Here’s a better one: https://github.com/Ranchero-Software/NetNewsWire/issues/4369

I just posted on that issue that I’d like to work on implementing this, but I don’t know where to start. Any guidance it appreciated.

The issue here isn’t the coding — I suspect this will be quite easy to code. The issue is UI design: how exactly should this work?

For instance: are articles marked-read when they appear in the timeline? Or when they disappear from the timeline? If disappear, is it only when they’ve been scrolled past? If only on scrolled-past — what happens to the visible articles in the timeline if the user hit the back button? Are they marked read or not? What do you about the articles at the bottom of the timeline, since you can’t scroll past them? What are all the edge cases here and what do we do for each of them?

I really think you might be overthinking this: just do what Unread (or a lot of other RSS readers do). Yes, I know they’re all a little bit different, and some a bit better than others, but they’re all OK.

Just look at a few of them, and pick your favorite (and if anything irks you about it, fine tune it).

My personal favourite (for mark read on scroll behaviour) is Unread.

And I’m not really being facetious here: there’s no reason to reinvent the wheel, and having a reference implementation as a starting is a lot better than describing something as subtle as this with words.

We can always fine tune in beta.

1 Like

I agree, as I’ve used Unread in the past and am familiar with it. I think we can be quite literal in that we only mark items as read if they are in the viewport and are then scrolled out. The only complication I can think of is the direction in which the scrolling occurs. Perhaps we can restrict this to only when 1) the timeline is sorted oldest to newest, and 2) an item is scrolled off the top of the screen (i.e. we’re reading chronologically).

@glevonian If there’s any particular behavior you want to make sure is there, let me know. I’ll take a stab at implementing it and try it out locally to see if there are any unforeseen problems.

Why would we want to not have articles to be not marked if the order was oldest to newest?!

Also, when we reach the end and items can’t scroll off the bottom an overscroll gesture should mark the remainder as read.

Like I said , just like unread.

There are other ways to do this, but I think this is best.

1 Like

What if we marked articles as read on appearing in the timeline (rather than once they disappear)? This would solve the bottom-of-the-timeline problem, for one thing. And it would be easy to explain.

Are there drawbacks to this approach?

That would be silly in my opinion, articles are read when the user is done with them, not when they appear in front of their eyes.

What’s wrong with not reinventing the wheel and just doing it like everyone else does?

Again, just take look at Unread.

1 Like

I noticed Gruber’s article: Daring Fireball: Unread 5.0 and came here after reinstalling NetNewsWire this morning. His default reader is NNW, I’ve preferred Reeder Classic - and have tried Unread over the years. The only reason I can’t use NNW is for Mark read on scroll! It seems absolutely essential to ‘inbox zero’ as you go through a large list

Came here to find this.. and I’m in agreement - Unread (or Reeder Classic) handle this just fine, and I’d love to see this on NNW - mark read as your list scrolls out of view

Any progress?

IMO it’s not easy to explain. Especially if you have a server like FreshRSS. “Hey, where did that article go, I was just going to read it on my iPad instead of my iPhone! It was right on my screen!”

@glevonian is right, many many other RSS readers have created an idiom - not just Unread, but Reeder classic and Mr. Reader (RIP) amongst others. Even FreshRSS’ web view does this. Principle of least surprise is just to mark as read once it leaves the viewport.