"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.
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().