There appear to be various circumstances where posts become
New Post, and threads show with unread posts, where they may not be.
Is there a simple method where a logged in user can 'Mark All Posts Read'?
Don’t worry, this is still on my list. Its just that notifications have much bigger priority.
Marking whole site as read, even selected categories is relatively achievable with current read tracker so here’s cherry on top.
There’s also an issue with islands of unread content, they have „read all posts” button on thread view to fix that, but proper fix is changing read tracker algorithm in Misago to don’t be post accurate. Its ironic how forums went from „we do per thread accuracy because performance for posts accuracy is terrible” to „we do percpost accuracy because that helps people spot edits and approved recently hidden content” to „people don’t care about thread content they skipped so don’t flag it as unread”.
"Mark all as read" could be a button on threads lists and categories list. There would be separate one for threads and for private threads. Pressing button would mark all threads/categories as read, but would also make all notifications associated with categories as read.
Making this button per category is tricky as it would require tracking per-category read cutoff (either separate JSON field on user model or separate table), and would require category tree traversal to find out which read cutoff to use per category.
Making this button per thread is even worse because currently Misago is doing per-post accurate read tracking, so one would have to either quickly implement per-thread read tracking (which is impossible) or delay it until per-thread read tracking is implemented in future. But once per-thread read tracker is in, it would be easy as pie to implement "Mark thread as read" option.
Mark all threads/private threads as read: possible soon(ish).
Mark category as read: in future, after some cleanups to caching and permissions system.
Mark thread as read: in future, when read tracker is made thread accurate.