# Now in Beta: Plugin to see TL3 Progress for TL2 users

**URL:** https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543
**Category:** Development
**Created:** [July 26, 2026, 12:06pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543 "2026-07-26T12:06:35Z")
**Posts on this page:** 13
**Page:** 2

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [July 30, 2026, 10:56pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/21 "2026-07-30T22:56:12Z")

</div>

Super busy over the past few days. But I’m almost done with updating the logic for getting the next closest stat: instead of looking at percentage, it looks at the lowest actual value then can be next achieved.

As for TL3s about to lose progress, I’ve started on that too. The repo probably shouldn’t bebused for now since it’s in-between the finished product.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [July 30, 2026, 11:26pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/22 "2026-07-30T23:26:46Z")

</div>

> [@EricGT](#):
>
> For a long time, many of these values could not be changed through site settings. They can now be changed relatively easily.

Hmm. I’d say they kind of existed forever. I found a commit renaming them from 2014

> <https://github.com/discourse/discourse/commit/fcca64c0cfe22e6d8322ba61f8ea67f3ac499fea#diff-bff2842c9891df212adcbe8eb22a4a17c9644c676260a0cfa6e7a3953852c5e8>

I don’t think there is “a long time” of Discourse before that.

> [@NateDhaliwal](#):
>
> Settings:
> 
> - Progress bar color: color of the progress bar (default green, like in the picture above)
> - Progress bar background color: bg color of the progress bar (default light-gray like in the picture above)

I think you might need separate settings for light and dark color palettes. lightgray on black has a different contrast than on white.

Instead of `time_period: "Based on last %{num_days} days."` you can use

```plaintext
time_period:
  one: "Based on last %{count} day."
  other: "Based on last %{count} days."

```

Then you get day/days depending on the number. Things get a little complicated when there is more than one number other words depend on in the text. I’d try to avoid [Message Format](https://meta.discourse.org/t/message-format-support-for-localization/7035?silent=true).

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [July 31, 2026, 8:14am UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/23 "2026-07-31T08:14:51Z")

</div>

> [@Moin](#):
>
> I found a commit renaming them from 2014

Interesting, now I have to wonder why I think what I noted.  
Other interesting note about the commit, it was done by Jeff ( **[coding-horror](https://github.com/discourse/discourse/commits?author=coding-horror)**) which is rare to see now-a-days.

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [August 2, 2026, 12:30pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/24 "2026-08-02T12:30:47Z")

</div>

After reading:

> [@Can someone clarify the 'posts read' TL3 promotion logic?](https://meta.discourse.org/t/can-someone-clarify-the-posts-read-tl3-promotion-logic/409057):
>
> There’s this piece of code that’s been bugging me: For the life of me, I cannot figure out why the posts made in the time period is multiplied by the percentage of required posts read, then taken as the minimum value. If the intention here is the percentage of posts read, then wouldn’t it be the posts read / number of posts, multiplied by 100? Supposing there have been 9 posts in the last x days, and the setting only requires 2, then shouldn’t the method simply return 2 since it’s less than …

I was reminded of a problem some users encounter when trying to reach TL3.

When users are required to read a certain number or percentage of posts, they naturally assume that all posts included in that calculation are visible to them. However, that may not always be the case.

For example, if posts in a [muted category](https://meta.discourse.org/my/preferences/tracking) still count toward the requirement, there could be enough eligible posts in muted categories to make the target difficult—or perhaps impossible—to reach without first unmuting those categories and reading the posts.

The plugin should therefore provide a category-by-category breakdown showing:

- how many posts in each category are included in the eligibility calculation; and
- how many of those eligible posts the user has read.

This would reveal whether muted categories are affecting the user’s progress and show what they need to do to meet the requirement—or, as some users might describe it, how to “game” the system.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [August 2, 2026, 12:59pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/25 "2026-08-02T12:59:52Z")

</div>

Color palettes for light/dark

Nearly done with showing the stats if a TL3 is going to lose TL3 (with a minimum threshold setting to show a warning if a stat is below that value).

> [@EricGT](#):
>
> For example, if posts in a [muted category](https://meta.discourse.org/my/preferences/tracking) still count toward the requirement, there could be enough eligible posts in muted categories to make the target difficult—or perhaps impossible—to reach without first unmuting those categories and reading the posts.
> 
> The plugin should therefore provide a category-by-category breakdown showing:
> 
> - how many posts in each category are included in the eligibility calculation; and
> - how many of those eligible posts the user has read.
> 
> This would reveal whether muted categories are affecting the user’s progress and show what they need to do to meet the requirement—or, as some users might describe it, how to “game” the system.

The thing is that not even core has this kind of indication. The original idea is to bring the info that staff users can see to the users themselves. I think this may be too out of the plugin’s scope. But I would like to know more about this. Are you saying that the unmuted categories do not contain enough posts to hit the requirement, and that the remaining number can come from muted categories?

Plus, how would that work? Get every post created in the time frame, check the topic each belongs to, check the category id, compare that with the user’s muted categories, then add it to a counter? Or maybe some optimised SQL query…

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [August 3, 2026, 2:29pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/26 "2026-08-03T14:29:46Z")

</div>

> [@NateDhaliwal](#):
>
> Are you saying that the unmuted categories do not contain enough posts to hit the requirement

Not necessarily, although that could be true in an extreme case.

From time to time, while helping users, it was noticed that one user’s post-read count was increasing faster than another’s. The difference was often that the more active reader had no muted certain categories. Topics from those categories therefore appeared in their topic lists and were more likely to be read.

When the other user unmuted the category, more topics became visible in their normal browsing views, and their daily post-read count increased to roughly match the other user’s.

> [@NateDhaliwal](#):
>
> that the remaining number can come from muted categories?

Yes. Posts in those categories can count when they are actually read. However, muting a category can indirectly slow a user’s progress because its topics are hidden from views such as **Latest** and are therefore easier to miss.

Years ago, the post-reading requirement on the OpenAI forum was based primarily on a percentage of the forum’s activity, without the lower cap that exists in many current configurations. On a very active forum, that could require reading 10,000 or more posts.

Some users noticed that other members’ post-read totals, as shown in the [user directory](https://meta.discourse.org/u), were increasing much faster even though they were reading every visible post they could find. After some investigation, muted categories were identified as the reason: a substantial number of available posts were not appearing in their usual topic lists.

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [August 3, 2026, 2:32pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/27 "2026-08-03T14:32:55Z")

</div>

> [@NateDhaliwal](#):
>
> maybe some optimised SQL query

That is how I would first try to do it.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [August 5, 2026, 3:23am UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/28 "2026-08-05T03:23:33Z")

</div>

Okay, so I’ve added the feature to show the lowest stat if the user is over TL3. I’ve worked out the queries for finding the number of topics and posts in muted categories, and I’m working to integrate them into the UI.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [August 12, 2026, 2:30am UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/29 "2026-08-12T02:30:35Z")

</div>

Bingo bongo: @EricGT I’ve added displaying if the user is locked, and how many topics & posts there are in muted categories, and if the user will lose TL3 soon. I’m awaiting a response on [How do I access topics in muted categories?](https://meta.discourse.org/t/how-do-i-access-topics-in-muted-categories/409676) for the correct link to view those muted topics.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [August 14, 2026, 2:08pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/30 "2026-08-14T14:08:39Z")

</div>

Updated the link to just link to `/u/<username>/preferences/tracking`. If there’s nothing else, I’m going to go ahead and create the #Customization > Plugin topic!

---

<div class="post-metadata">

### Author: ![satonotdead](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/satonotdead/32/447830_2.png) [@satonotdead](https://meta.discourse.org/u/satonotdead)
#### Post date: [August 14, 2026, 3:26pm UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/31 "2026-08-14T15:26:29Z")

</div>

That’s great, thanks for building and sharing it!

I wonder if this base can be used for a similar progress related to badges. Our _karma/challenges_ (formerly called cheers/badges) and trust level system is custom, and for our community, a progress meter related to challenges/badges should be the one that fits us.

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [August 17, 2026, 1:43am UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/32 "2026-08-17T01:43:43Z")

</div>

This has been published at [See TL3 Progress](https://meta.discourse.org/t/see-tl3-progress/410166) 🎉 !

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [August 22, 2026, 3:31am UTC](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543/33 "2026-08-22T03:31:22Z")

</div>

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.

[Previous page](https://meta.discourse.org/t/now-in-beta-plugin-to-see-tl3-progress-for-tl2-users/408543.md?page=1)
