Unread badge skips the backlog
The little count in the corner no longer rereads your entire notification history. On a busy account, that one change turns a page load you'd notice into one you don't.

You sign in as the account with 65,000 notifications and open a thread. The page is just there. The reply chain above it arrives whole, the count in the corner is already right, and no font snaps into place a second after the text.
Credit goes to xHeaven, who went page by page and taught the slow parts to stop rereading what they already knew. The unread badge finds your oldest unread notification, then groups only from that point on. The count stays exact, and a page still shows 20 groups with up to three faces stacked on each. A deep reply pulls its 20 ancestors in one pass instead of one query per step. Sitemaps read 10,000 plain rows at a time, hot-thread rescoring patches 1,000 at a time, and commits stop fetching the embedding column nothing on the page reads. Fonts now arrive as one file per style, not two.
One catch. The new user-search indexes only help once you type three characters. Search for one letter or two and it still reads through every user, exactly as it did before.
Part of a larger story
Key files · #309
- app/
Queries/ NotificationGroupsQuery.php - app/
Http/ HandleInertiaRequests.phpMiddleware/ - app/
Queries/ SuggestedUsersQuery.php - app/
Queries/ CommitAncestorsQuery.php - app/
Queries/ CommitBuilder.php - app/
Queries/ SitemapQuery.php - database/
migrations/ 2026_10_17_400003_add_trigram_indexes_to_users_table.php - patches/
laravel-vite-plugin@3.2.0.patch