"You have new messages" seems to be being highlighted in orange whenever you view your talk page. It didn't do this until recently, and this behaviour doesn't make sense as it should be a notification rather than always being highlighted whenever you access the page that the notification was about. If you visit another page then return to the watchlist, then the notification is still present when you view your watchlist.
Description
Related Objects
Event Timeline
The same behavior can be seen without Echo, too: T59840: Newtalk status remains set even after viewing talk page.
This happens because pages you viewed while you had notifications get cached by your browser, and when your browser checks whether it can reuse the cached version after you've viewed your notifications, we say yes (304).
We can probably solve this by hooking into OutputPage's hook that lets us set Last-Modified to the timestamp of the last change to notification state for logged-in users.
Hmm, I'm not sure this is right. User::setNewtalk() will call User::invalidateCache(), which calls User::touch(), which is one of the timestamps that is checked by OutputPage::checkLastModified().
This should be fixed by rECHOe1a276fe3dc9: Take seentime into account in the CheckLastModified hook