Unread indicators

Couple of things about unread indicators:

  1. Is there a number saying how many unread posts there are?
    “Unread (n)” is not this, which follows a set of rules for what is considered unread. New (n) isn’t this either, I think, even when set to when “I haven’t viewed them yet” in user Preferences, because it refers to topics entered, not all posts. I’m looking for an old fashioned “unread posts” count. Am I missing it?
  2. How can I make topics which have any new activity bold (not just grey->black)


For (2), this is working for me:

.topic-list a:not(.badge-notification).title {
    font-weight: bold;
.topic-list a:not(.badge-notification).title.visited {
    font-weight: normal;

Related: Can anyone think of a single word for “watching and/or tracking”?

To replace the “Unread” count, which [feedback alert] is entirely unintuitive if one hasn’t read the manual (what manual :stuck_out_tongue_winking_eye:), or the messages when clicking Unread when the count is zero, or if you’re a routine tooltip reader.

If you click or tap on unread, it explains what it is, like so:

Your unread topics appear here.

By default, topics are considered unread and will show unread counts if you:

  • Created the topic
  • Replied to the topic
  • Read the topic for more than 4 minutes
  • Or if you have explicitly set the topic to Tracked or Watched via the notification control at the bottom of each topic.

Visit your preferences to change this.


Yes, the

I’m looking for a

which could be a better description for this feature.

Regarding (1), I am going with Following
Which seems sort of obvious now that I think about it :facepalm: :grinning:

I changed


It also seemed appropriate to change “New” to “Recent” (or perhaps “Recent Topics” since “Latest” means posts)


The option to add an unread posts count to “Latest” would be ideal, because Latest refers to posts. How can I do that?

I can understand how you might think that.

But I have always thought of it as
“Latest topics that have received posts”

Because the way Discourse has endless scroll, I think the largest “sum” of posts would be limited to what has been loaded in.


Ah I see what you’re saying. E.g. 10 new posts in one topic, and the Latest count (if a count was shown) would only be 1?

The use case that I’m trying to address is when a user loads the forum with a single question in mind: “how many unread posts are there?” Some users wait until there is a certain amount of new stuff before catching up. They report frustration that this number is not available.

New posts - which indicate reading time - may be more relevant than a changed-topic count. Any ideas on how to address this gratefully received. :relaxed:

Except for “not really new bumps” such as a late last post in the topic edit, the highest post id would be the that of the last post in the topmost Latest topic.

A problem being the posts in messages and other not-visible topics also get post ids.

So the easy solution of setting a cookie with that number to use in subtracting from the next visits highest post id wouldn’t really be accurate enough.

Similar for topic ids.

Thus any of the “easier” approaches that I can think of would be flawed over-estimates at best.

I do think it would be possible to have a plugin use custom fields tied in with login so that a type of “there have been n new posts” could be possible.

But I have to wonder, do that many members really have an interest in all new posts in every topic they have read permission for?

I guess it could be a “Hey! We’re an active forum!” thing but it really doesn’t seem that useful to me. Not as long as I can already get Notifications, New and Unread for what I am interested in anyway.

It depends on the forum, or course. This is the case in the private forum I manage, where the topics are very niche, and the level of activity is not high (so reading everything is not too much). Users also need legal agreements with my company before approval; they are invested in participation.

I suppose one way would be for Discourse to report number of new posts as if a user was tracking everything, in spite of what they are really tracking.

Maybe a JavaScript Cookie approach would suffice then.

Looking into it more, not as straight forward as I thought

The view-source doesn’t expose the post id.

The latest RSS does

<guid isPermaLink="false">meta.discourse.org-post-199819</guid>

as does a topics JSON


I don’t see any “pin” in either the RSS or JSON (unless I missed something)
So if you get the post id from the RSS you would need to take Pinned topics into consideration.
Same it you wanted to get a topics JSON.

I think I’d go with the RSS get enough to make sure all Pinned were got past, and use the highest number eg.

4234, 4303, 5347, 5329 - use 5347

Feels like plugin territory then, to get this result next to “Latest” (and an option in Preferences to turn that on, which would also be sensible).
I can also see via Data Explorer that post_read_count is in user_stats, which can simply be subtracted from all posts (not sure where that is though).
I think I shall pass! :smirk:
Thanks for the ideas.

I just upgraded to v1.9.0.beta11+59 (from beta 8? - not sure how I can tell after the upgrade) and my css customisation above which makes unread topic titles bold no longer worked properly.

All topic titles were bold whether visited or not.

Instead I now use this:

/* Bold topic titles when unread posts */
.topic-list-item a.title:not(.badge-notification) {
    font-weight: bold;
.topic-list-item.visited a.title:not(.badge-notification) {
    font-weight: normal;