• April 8, 2023, 3:43 p.m.

    Misago 0.33 release aims to resolve some issues with the UI and UX.

    Read tracking improvements

    Misago 0.33 changes algorithm used for determining if post was read by the user. Previously for post to be set as read, following conditions had to be met:

    • Post was already visible on screen when page loaded, or was scrolled into screen when user scrolled down.
    • If above conditions were met and post's bottom edge was visible on screen for at least 1.5s, it was marked as read.

    However this algorithm was very funky on pages that displayed many posts, and it didn't handle layout reflows. If post contained an image, this image loading caused this post to change its height (and as result positions of other posts on page), the positions it tracked were no longer accurate.

    New algorithm uses Intersection Observer API mechanism implemented by modern browsers for detecting when elements enter and leave browser's viewport, and marks posts as read instantly as they enter the viewport, even if by few pixels.

    In addition to above, "new post" labels are kept on posts after they were marked as read, and only disappear after user refreshes the page or posts list refreshes itself (which happens every 2 minutes).

    As last change for read tracking, user-posted content is automatically set as read by the user at the time of its posting.

    Posts replying and quoting

    Original "Reply" button's behavior on post was to open reply UI with this post's contents being already quoted in it. Intention behind this was for user to start with entire message they are replying to, and let them remove parts of quote they don't want to reply to, however many people simply kept whole post intact and wrote their reply below it (or worse, inside the quote), leading to a lot of duplicated content on threads list.

    In Misago 0.33 clicking "reply" on post still opens reply UI, but it no longer contains quote of replied post. To quote whole post, you now have to press new "Quote" button that's located next to "Reply" button. If you already have opened reply or edit UI, "Quoting" the post will instead add its contents to the end of existing contents of text area.

    Thread navigation changes

    Bottom paginator on thread's list now resets the scroll when used. It also includes "go to top" button.

    Thread shortcuts menu now includes "Go to start" link when thread's page other than first is displayed.


    • Content posted by users is now marked as already read by them (#1557).
    • Added "Go to first post" link to thread's shortcuts menu. This link is not displayed on first page (#1555).
    • Using bottom paginator on threads list will now reset the scroll and move user to top of the page (#1555).
    • Replaced waypoint.js library for detection when unread post was read by the user with custom implementation based on Intersection Observer API (#1553).
    • Added "Admin control panel" link to user menu. This link is only visible to the administrators (#1549).
    • Further tweaked color scheme for "primary" rank posts (#1548).
    • Replaced old "Reply" button o posts with "Reply" and "Quote" posts (#1546).
    • Fixed quote blocks having bigger text than rest of the post (#1544).
    • Replaced custom database iterators with Django iterators using database cursors (#1487).